[U-Boot] [PATCH] dm: core: device: set pinctrl state for pinctrl device

Simon Glass sjg at chromium.org
Sun Mar 13 03:51:47 CET 2016


+Masahiro

On 11 March 2016 at 22:17, Peng Fan <van.freenix at gmail.com> wrote:
> We may have pinmux settings for pinctrl device, like the following
> example:
> "
> &iomuxc {
>         pinctrl-names = "default";
>         pinctrl-0 = <&pinctrl_hog_1>;
>         imx6ul-evk {
>                 pinctrl_hog_1: hoggrp-1 {
>                         fsl,pins = <
>                                 MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x17059 /* SD1 CD */
>                                 MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT    0x17059 /* SD1 VSELECT */
>                                 MX6UL_PAD_GPIO1_IO09__GPIO1_IO09        0x17059 /* SD1 RESET */
>                                 MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00      0x80000000
>                         >;
>                 };
>         [......]
> };
> "
>
> We should not only select pinctrl state for non pinctrl devices, we
> need also to handle pin mux settings such as pinctrl_log for pinctrl
> devices.
>
> So at the end of probing process of pinctrl device, select the default
> state of pinctrl device.
>
> Signed-off-by: Peng Fan <van.freenix at gmail.com>
> Cc: Simon Glass <sjg at chromium.org>
> ---
>  drivers/core/device.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/core/device.c b/drivers/core/device.c
> index cb24a61..6b1ba22 100644
> --- a/drivers/core/device.c
> +++ b/drivers/core/device.c
> @@ -332,6 +332,9 @@ int device_probe(struct udevice *dev)
>         if (ret)
>                 goto fail_uclass;
>
> +       if (dev->parent && device_get_uclass_id(dev) == UCLASS_PINCTRL)
> +               pinctrl_select_state(dev, "default");
> +
>         return 0;
>  fail_uclass:
>         if (device_remove(dev)) {
> --
> 2.6.2
>

Reviewed-by: Simon Glass <sjg at chromium.org>


More information about the U-Boot mailing list