diff options
author | Peng Fan | 2016-03-12 13:17:38 +0800 |
---|---|---|
committer | Simon Glass | 2016-04-14 11:51:39 -0600 |
commit | c3ab985362188ba24847be2dc61dcdcf7b4ce049 (patch) | |
tree | 9ea63ed8e5b3bc243f4b5816fbab6eb35ccd543c /drivers/core/device.c | |
parent | ff6552e8cc13c9b2283002144e297d63b30ac400 (diff) |
dm: core: device: set pinctrl state for pinctrl device
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>
Diffstat (limited to 'drivers/core/device.c')
-rw-r--r-- | drivers/core/device.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/core/device.c b/drivers/core/device.c index cb24a617cee..6b1ba2269c2 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)) { |