Re: [U-Boot] [PATCH v1 1/2] dm: pinctrl: Avoid race condition on probe for UCLASS_PINCTRL

2019-02-15 Thread Simon Glass
On Fri, 15 Feb 2019 at 15:31, Patrice Chotard  wrote:
>
> In case of system with several pin-controller device, probe the first
> UCLASS_PINCTRL by seq number (defined by alias) to avoid race condition
> with I2C PINCONTROL driver for GPIO expander (GPIO expander need I2C bus,
> I2C driver need PINCONFIG).
>
> Signed-off-by: Patrick DELAUNAY 
> Signed-off-by: Patrice Chotard 
> ---
>
>  drivers/pinctrl/pinctrl-uclass.c | 11 +++
>  1 file changed, 7 insertions(+), 4 deletions(-)

Reviewed-by: Simon Glass 
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH v1 1/2] dm: pinctrl: Avoid race condition on probe for UCLASS_PINCTRL

2019-02-15 Thread Patrice Chotard
In case of system with several pin-controller device, probe the first
UCLASS_PINCTRL by seq number (defined by alias) to avoid race condition
with I2C PINCONTROL driver for GPIO expander (GPIO expander need I2C bus,
I2C driver need PINCONFIG).

Signed-off-by: Patrick DELAUNAY 
Signed-off-by: Patrice Chotard 
---

 drivers/pinctrl/pinctrl-uclass.c | 11 +++
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c
index 0e3260afd1ee..abb622cfe79e 100644
--- a/drivers/pinctrl/pinctrl-uclass.c
+++ b/drivers/pinctrl/pinctrl-uclass.c
@@ -201,11 +201,14 @@ static int pinctrl_select_state_simple(struct udevice 
*dev)
int ret;
 
/*
-* For simplicity, assume the first device of PINCTRL uclass
-* is the correct one.  This is most likely OK as there is
-* usually only one pinctrl device on the system.
+* For most system, there is only one pincontroller device. But in
+* case of multiple pincontroller devices, probe the one with sequence
+* number 0 (defined by alias) to avoid race condition.
 */
-   ret = uclass_get_device(UCLASS_PINCTRL, 0, );
+   ret = uclass_get_device_by_seq(UCLASS_PINCTRL, 0, );
+   if (ret)
+   /* if not found, get the first one */
+   ret = uclass_get_device(UCLASS_PINCTRL, 0, );
if (ret)
return ret;
 
-- 
1.9.1

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot