Skip to content

Commit 796fc9d

Browse files
cyliangtwjhedberg
authored andcommitted
drivers: gpio: Update Numaker driver init function
To update Numaker driver to turn on clock in init function. Signed-off-by: cyliang tw <cyliang@nuvoton.com>
1 parent c0813ef commit 796fc9d

File tree

1 file changed

+15
-18
lines changed

1 file changed

+15
-18
lines changed

drivers/gpio/gpio_numaker.c

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,6 @@ static int gpio_numaker_configure(const struct device *dev, gpio_pin_t pin, gpio
5252
return -EINVAL;
5353
}
5454

55-
SYS_UnlockReg();
56-
57-
/* Enable GPIO clock */
58-
struct numaker_scc_subsys scc_subsys;
59-
60-
memset(&scc_subsys, 0x00, sizeof(scc_subsys));
61-
scc_subsys.subsys_id = NUMAKER_SCC_SUBSYS_ID_PCC;
62-
scc_subsys.pcc.clk_modidx = config->clk_modidx;
63-
64-
/* Equivalent to CLK_EnableModuleClock(config->clk_modidx) */
65-
err = clock_control_on(config->clk_dev, (clock_control_subsys_t)&scc_subsys);
66-
if (err != 0) {
67-
goto move_exit;
68-
}
69-
7055
/* Configure GPIO direction */
7156
switch (flags & GPIO_DIR_MASK) {
7257
case GPIO_INPUT:
@@ -114,7 +99,6 @@ static int gpio_numaker_configure(const struct device *dev, gpio_pin_t pin, gpio
11499
}
115100

116101
move_exit:
117-
SYS_LockReg();
118102
return err;
119103
}
120104

@@ -265,8 +249,21 @@ static void gpio_numaker_isr(const struct device *dev)
265249
\
266250
static int gpio_numaker_init##n(const struct device *dev) \
267251
{ \
268-
IF_ENABLED(DT_INST_IRQ_HAS_IDX(n, 0), (GPIO_NUMAKER_IRQ_INIT(n);)) \
269-
return 0; \
252+
const struct gpio_numaker_config *config = dev->config; \
253+
struct numaker_scc_subsys scc_subsys; \
254+
int err; \
255+
\
256+
SYS_UnlockReg(); \
257+
memset(&scc_subsys, 0x00, sizeof(scc_subsys)); \
258+
scc_subsys.subsys_id = NUMAKER_SCC_SUBSYS_ID_PCC; \
259+
scc_subsys.pcc.clk_modidx = config->clk_modidx; \
260+
err = clock_control_on(config->clk_dev, (clock_control_subsys_t)&scc_subsys); \
261+
if (err == 0) { \
262+
IF_ENABLED(DT_INST_IRQ_HAS_IDX(n, 0), (GPIO_NUMAKER_IRQ_INIT(n);)) \
263+
} \
264+
\
265+
SYS_LockReg(); \
266+
return err; \
270267
} \
271268
DEVICE_DT_INST_DEFINE(n, &gpio_numaker_init##n, NULL, &gpio_numaker_data##n, \
272269
&gpio_numaker_config##n, PRE_KERNEL_1, CONFIG_GPIO_INIT_PRIORITY, \

0 commit comments

Comments
 (0)