Skip to contentSkip to conversation

dm: core: device: set pinctrl state for pinctrl device

PATCH New Peng Fan 2 participants 2 messages Apr 6, 2016 – Apr 9, 2016

lore
Share & tools
lore

Peng Fan

author
#0 lore raw

PATCH v2 1/1 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.

---

V2:
To pinctrl node, it is not root node. No need to check dev->parent.

 drivers/core/device.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/core/device.c +3 -0
index cb24a61..636a895 100644
@@ -332,6 +332,9 @@ int device_probe(struct udevice *dev)
 	if (ret)
 		goto fail_uclass;
 
+	if (device_get_uclass_id(dev) == UCLASS_PINCTRL)
+		pinctrl_select_state(dev, "default");
+
 	return 0;
 fail_uclass:
 	if (device_remove(dev)) {
Signature · 1 line
2.6.2
#1 lore raw

PATCH v2 1/1 dm: core: device: set pinctrl state for pinctrl device

Quoted 29 lines · Peng Fan

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.

Quoted 7 lines

---

V2:
To pinctrl node, it is not root node. No need to check dev->parent.

 drivers/core/device.c | 3 +++
 1 file changed, 3 insertions(+)

Applied to u-boot-dm, thanks!