Skip to content

Commit 50eb0fb

Browse files
le-quang168jhedberg
authored andcommitted
drivers: gpio: renesas: Fix fail case pin_get_config
Add condition to check whether the pin is set as output before reading the output high or low for gpio driver of Renesas RZ Signed-off-by: Quang Le <[email protected]> Signed-off-by: Nhut Nguyen <[email protected]>
1 parent 03897f8 commit 50eb0fb

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

drivers/gpio/gpio_renesas_rz.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,15 @@ static int gpio_rz_pin_config_get_raw(bsp_io_port_pin_t port_pin, struct gpio_rz
102102
pm_value = GPIO_RZ_PM_VALUE_GET(*p_pm, pin);
103103
pfc_value = GPIO_RZ_PFC_VALUE_GET(*p_pfc, pin);
104104

105-
if (p_value) {
106-
rz_flags->gpio_flags = GPIO_OUTPUT_INIT_HIGH;
107-
} else {
108-
rz_flags->gpio_flags = GPIO_OUTPUT_INIT_LOW;
109-
}
110-
111-
rz_flags->gpio_flags |= (pm_value << 16);
112105
rz_flags->pfc = pfc_value;
106+
rz_flags->gpio_flags = (pm_value << 16);
107+
if (rz_flags->gpio_flags & GPIO_OUTPUT) {
108+
if (p_value) {
109+
rz_flags->gpio_flags |= GPIO_OUTPUT_INIT_HIGH;
110+
} else {
111+
rz_flags->gpio_flags |= GPIO_OUTPUT_INIT_LOW;
112+
}
113+
}
113114

114115
return 0;
115116
}

drivers/gpio/gpio_renesas_rza2m.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -368,14 +368,13 @@ static int gpio_rza2m_pin_get_config(const struct device *port_dev, gpio_pin_t p
368368
*flags |= GPIO_INPUT;
369369
} else if ((reg16 >> (pin * 2)) == RZA2M_PDR_OUTPUT) {
370370
*flags |= GPIO_OUTPUT;
371-
}
372-
373-
/* Get pin initial value */
374-
reg8 = sys_read8(RZA2M_PODR(int_dev, port));
375-
if (reg8 & BIT(pin)) {
376-
*flags |= GPIO_OUTPUT_INIT_HIGH;
377-
} else {
378-
*flags |= GPIO_OUTPUT_INIT_LOW;
371+
/* Get pin initial value */
372+
reg8 = sys_read8(RZA2M_PODR(int_dev, port));
373+
if (reg8 & BIT(pin)) {
374+
*flags |= GPIO_OUTPUT_INIT_HIGH;
375+
} else {
376+
*flags |= GPIO_OUTPUT_INIT_LOW;
377+
}
379378
}
380379

381380
/* Get pin drive strength */

0 commit comments

Comments
 (0)