Skip to content

Commit d888791

Browse files
committed
driver: gd32e1: add gpio speed support.
add gpio speed support. Signed-off-by: YuLong Yao <[email protected]>
1 parent f9a2c4a commit d888791

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

drivers/gpio/gpio_gd32.c

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,31 @@ static int gpio_gd32_flags_to_conf(int flags, int *pincfg)
7373
int gpio_gd32_configure(const struct device *dev, int pin, int conf, int altf)
7474
{
7575
const struct gpio_gd32_config *cfg = dev->config;
76+
uint32_t speed = GPIO_OSPEED_10MHZ;
77+
uint32_t temp = conf & (GD32_MODE_OSPEED_MASK << GD32_MODE_OSPEED_SHIFT);
7678

7779
ARG_UNUSED(altf);
7880

79-
// todo: change speed by dts
80-
gpio_init((uint32_t)cfg->base, conf, GPIO_OSPEED_10MHZ, BIT(pin));
81+
switch (temp)
82+
{
83+
case GD32_MODE_OUTPUT_MAX_2:
84+
speed = GPIO_OSPEED_2MHZ;
85+
break;
86+
87+
case GD32_MODE_OUTPUT_MAX_10:
88+
speed = GPIO_OSPEED_10MHZ;
89+
break;
90+
91+
case GD32_MODE_OUTPUT_MAX_50:
92+
speed = GPIO_OSPEED_50MHZ;
93+
break;
94+
95+
default:
96+
speed = GPIO_OSPEED_MAX;
97+
break;
98+
}
99+
100+
gpio_init((uint32_t)cfg->base, conf, speed, BIT(pin));
81101

82102
return 0;
83103
}

include/dt-bindings/pinctrl/gd32-pinctrl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@
287287
#define GD32_MODE_OUTPUT_MAX_10 (0x0<<GD32_MODE_OSPEED_SHIFT)
288288
#define GD32_MODE_OUTPUT_MAX_2 (0x1<<GD32_MODE_OSPEED_SHIFT)
289289
#define GD32_MODE_OUTPUT_MAX_50 (0x2<<GD32_MODE_OSPEED_SHIFT)
290+
#define GD32_MODE_OUTPUT_MAX_MAX (0x3<<GD32_MODE_OSPEED_SHIFT)
290291
#define GD32_MODE_OSPEED_MASK 0x3
291292
#define GD32_MODE_OSPEED_SHIFT 3
292293

0 commit comments

Comments
 (0)