[PATCH 1/2] pinctrl: stmfx: Fix pin configuration issue

pin-controller pin's name must be equal to pin's name used in device tree with "pins" DT property.
Issue detected on stm32mp157c-ev1 board with goodix touchscreen. In DT, the goodix's pin is declared in DT with the node:
goodix_pins: goodix { pins = "gpio14"; bias-pull-down; };
Whereas in stmfx pin-controller driver, pin's name are equal to "stmfx_gpioxx" where xx is the pin number. This lead to not configure stmfx's pins at probe because pins is identified by its name (see pinctrl_pin_name_to_selector() in pinctrl-generic.c) and stmfx pin "gpio14" can't be found.
To fix this issue, come back to the original stmfx pin's name.
Revert "pinctrl: stmfx: update pin name"
This reverts commit 38d30cdcd65c73eeefac5efa328ad444a53b77dd.
Signed-off-by: Patrice Chotard patrice.chotard@foss.st.com Tested-by: Patrick DELAUNAY patrick.delaunay@st.com ---
drivers/pinctrl/pinctrl-stmfx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-stmfx.c b/drivers/pinctrl/pinctrl-stmfx.c index a62be44d2d..b789f3686c 100644 --- a/drivers/pinctrl/pinctrl-stmfx.c +++ b/drivers/pinctrl/pinctrl-stmfx.c @@ -343,8 +343,8 @@ static int stmfx_pinctrl_get_pins_count(struct udevice *dev) }
/* - * STMFX pins[15:0] are called "stmfx_gpio[15:0]" - * and STMFX pins[23:16] are called "stmfx_agpio[7:0]" + * STMFX pins[15:0] are called "gpio[15:0]" + * and STMFX pins[23:16] are called "agpio[7:0]" */ #define MAX_PIN_NAME_LEN 7 static char pin_name[MAX_PIN_NAME_LEN]; @@ -352,9 +352,9 @@ static const char *stmfx_pinctrl_get_pin_name(struct udevice *dev, unsigned int selector) { if (selector < STMFX_MAX_GPIO) - snprintf(pin_name, MAX_PIN_NAME_LEN, "stmfx_gpio%u", selector); + snprintf(pin_name, MAX_PIN_NAME_LEN, "gpio%u", selector); else - snprintf(pin_name, MAX_PIN_NAME_LEN, "stmfx_agpio%u", selector - 16); + snprintf(pin_name, MAX_PIN_NAME_LEN, "agpio%u", selector - 16); return pin_name; }

Instead of redefining a pin's name size, use PINNAME_SIZE defined in include/dm/pinctrl.h
Signed-off-by: Patrice Chotard patrice.chotard@foss.st.com ---
drivers/pinctrl/pinctrl-stmfx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-stmfx.c b/drivers/pinctrl/pinctrl-stmfx.c index b789f3686c..fbbd479575 100644 --- a/drivers/pinctrl/pinctrl-stmfx.c +++ b/drivers/pinctrl/pinctrl-stmfx.c @@ -346,15 +346,14 @@ static int stmfx_pinctrl_get_pins_count(struct udevice *dev) * STMFX pins[15:0] are called "gpio[15:0]" * and STMFX pins[23:16] are called "agpio[7:0]" */ -#define MAX_PIN_NAME_LEN 7 -static char pin_name[MAX_PIN_NAME_LEN]; +static char pin_name[PINNAME_SIZE]; static const char *stmfx_pinctrl_get_pin_name(struct udevice *dev, unsigned int selector) { if (selector < STMFX_MAX_GPIO) - snprintf(pin_name, MAX_PIN_NAME_LEN, "gpio%u", selector); + snprintf(pin_name, PINNAME_SIZE, "gpio%u", selector); else - snprintf(pin_name, MAX_PIN_NAME_LEN, "agpio%u", selector - 16); + snprintf(pin_name, PINNAME_SIZE, "agpio%u", selector - 16); return pin_name; }

Hi Patrice,
On 1/20/21 1:43 PM, Patrice Chotard wrote:
Instead of redefining a pin's name size, use PINNAME_SIZE defined in include/dm/pinctrl.h
Signed-off-by: Patrice Chotard patrice.chotard@foss.st.com
drivers/pinctrl/pinctrl-stmfx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
Reviewed-by: Patrick Delaunay patrick.delaunay@foss.st.com
Thanks
Patrick

Hi,
On 1/20/21 1:43 PM, Patrice Chotard wrote:
Instead of redefining a pin's name size, use PINNAME_SIZE defined in include/dm/pinctrl.h
Signed-off-by: Patrice Chotard patrice.chotard@foss.st.com
drivers/pinctrl/pinctrl-stmfx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
Applied to u-boot-stm/master, thanks!
Regards
Patrick

Hi Patrice,
On 1/20/21 1:43 PM, Patrice Chotard wrote:
pin-controller pin's name must be equal to pin's name used in device tree with "pins" DT property.
Issue detected on stm32mp157c-ev1 board with goodix touchscreen. In DT, the goodix's pin is declared in DT with the node:
goodix_pins: goodix { pins = "gpio14"; bias-pull-down;
};
Whereas in stmfx pin-controller driver, pin's name are equal to "stmfx_gpioxx" where xx is the pin number. This lead to not configure stmfx's pins at probe because pins is identified by its name (see pinctrl_pin_name_to_selector() in pinctrl-generic.c) and stmfx pin "gpio14" can't be found.
To fix this issue, come back to the original stmfx pin's name.
Revert "pinctrl: stmfx: update pin name"
This reverts commit 38d30cdcd65c73eeefac5efa328ad444a53b77dd.
Signed-off-by: Patrice Chotard patrice.chotard@foss.st.com Tested-by: Patrick DELAUNAY patrick.delaunay@st.com
drivers/pinctrl/pinctrl-stmfx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
Reviewed-by: Patrick Delaunay patrick.delaunay@foss.st.com
Thanks
Patrick

Hi,
On 1/20/21 1:43 PM, Patrice Chotard wrote:
pin-controller pin's name must be equal to pin's name used in device tree with "pins" DT property.
Issue detected on stm32mp157c-ev1 board with goodix touchscreen. In DT, the goodix's pin is declared in DT with the node:
goodix_pins: goodix { pins = "gpio14"; bias-pull-down;
};
Whereas in stmfx pin-controller driver, pin's name are equal to "stmfx_gpioxx" where xx is the pin number. This lead to not configure stmfx's pins at probe because pins is identified by its name (see pinctrl_pin_name_to_selector() in pinctrl-generic.c) and stmfx pin "gpio14" can't be found.
To fix this issue, come back to the original stmfx pin's name.
Revert "pinctrl: stmfx: update pin name"
This reverts commit 38d30cdcd65c73eeefac5efa328ad444a53b77dd.
Signed-off-by: Patrice Chotard patrice.chotard@foss.st.com Tested-by: Patrick DELAUNAY patrick.delaunay@st.com
drivers/pinctrl/pinctrl-stmfx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
Applied to u-boot-stm/master, thanks!
Regards
Patrick
participants (2)
-
Patrice Chotard
-
Patrick DELAUNAY