]> git.sur5r.net Git - u-boot/commitdiff
dm: core: device: set pinctrl state for pinctrl device
authorPeng Fan <van.freenix@gmail.com>
Sat, 12 Mar 2016 05:17:38 +0000 (13:17 +0800)
committerSimon Glass <sjg@chromium.org>
Thu, 14 Apr 2016 17:51:39 +0000 (11:51 -0600)
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@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
drivers/core/device.c

index cb24a617ceef4cd892c5c566725ecda47965ae61..6b1ba2269c2c68d128ed7a04fa53ca59680189a0 100644 (file)
@@ -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)) {