Message ID | 1550241059-4544-3-git-send-email-patrice.chotard@st.com |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
Series | Update pinctrl-uclass | expand |
On Fri, 15 Feb 2019 at 15:31, Patrice Chotard <patrice.chotard@st.com> wrote: > > From: Patrick Delaunay <patrick.delaunay@st.com> > > Some binding define child node gpio-controller without compatible property. > This patch avoid to bind the pinconfig uclass to these node. Some bindings define a child node gpio-controller without a compatible property. Avoid binding the pinconfig uclass to these node since ...(add explanation here) > > Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> > Signed-off-by: Patrice Chotard <patrice.chotard@st.com> > --- > > drivers/pinctrl/pinctrl-uclass.c | 3 +++ > 1 file changed, 3 insertions(+) Reviewed-by: Simon Glass <sjg@chromium.org> > > diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c > index abb622cfe79e..9df06a262cd5 100644 > --- a/drivers/pinctrl/pinctrl-uclass.c > +++ b/drivers/pinctrl/pinctrl-uclass.c > @@ -149,6 +149,9 @@ static int pinconfig_post_bind(struct udevice *dev) > ofnode_get_property(node, "compatible", &ret); > if (ret >= 0) > continue; > + /* If this node has "gpio-controller" property, skip */ > + if (ofnode_read_bool(node, "gpio-controller")) > + continue; > > if (ret != -FDT_ERR_NOTFOUND) > return ret; > -- > 1.9.1 >
Hi, > From: Simon Glass <sjg@chromium.org> > Sent: vendredi 15 février 2019 18:12 > > On Fri, 15 Feb 2019 at 15:31, Patrice Chotard <patrice.chotard@st.com> wrote: > > > > From: Patrick Delaunay <patrick.delaunay@st.com> > > > > Some binding define child node gpio-controller without compatible property. > > This patch avoid to bind the pinconfig uclass to these node. > > Some bindings define a child node gpio-controller without a compatible property. > Avoid binding the pinconfig uclass to these node since ...(add explanation here) Ok , we will add more explanation in v2. For example, the binding for st,stm32-pinctrl (./device-tree-bindings/pinctrl/st,stm32-pinctrl.txt) defines the GPIO controller/bank node as sub-node of pincontrol (for example st,stm32f429-pinctrl) but without compatible (as it is not mandatory). Without the added check, the gpio node with " gpio-controller" parameter is bounded as pinconfig. This patch remove the need to add a compatible in u-boot device tree. As example ./arch/arm/dts/stm32f429-disco-u-boot.dtsi &gpioa { compatible = "st,stm32-gpio"; u-boot,dm-pre-reloc; }; &gpiob { compatible = "st,stm32-gpio"; u-boot,dm-pre-reloc; }; .... &gpiok { compatible = "st,stm32-gpio"; u-boot,dm-pre-reloc; }; PS: today "st,stm32-gpio" is still needing to bind the driver drivers/gpio/stm32f7_gpio.c To gpio-controller node... But we are expecting to remove this modification of kernel device tree by directly bind sub-node to UCLASS_GPIO "gpio_stm32" in pincontrol driver. static int stm32_pinctrl_bind(struct udevice *dev) { const void *blob = gd->fdt_blob; int offset = dev_of_offset(dev); const char *name; int ret; for (offset = fdt_first_subnode(blob, offset); offset > 0; offset = fdt_next_subnode(blob, offset)) { fdt_get_property(blob, offset, "gpio-controller", &ret); if (ret < 0) continue; /* Get the name of each gpio node */ name = fdt_get_name(blob, offset, NULL); if (!name) return -EINVAL; /* Bind each gpio node */ ret = device_bind_driver_to_node(dev, "stm32mp-gpio", name, offset, NULL); if (ret) return ret; debug("%s: bind %s\n", __func__, name); } return 0; } > > > > Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> > > Signed-off-by: Patrice Chotard <patrice.chotard@st.com> > > --- > > > > drivers/pinctrl/pinctrl-uclass.c | 3 +++ > > 1 file changed, 3 insertions(+) > > Reviewed-by: Simon Glass <sjg@chromium.org> > > > > > > diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c > > index abb622cfe79e..9df06a262cd5 100644 > > --- a/drivers/pinctrl/pinctrl-uclass.c > > +++ b/drivers/pinctrl/pinctrl-uclass.c > > @@ -149,6 +149,9 @@ static int pinconfig_post_bind(struct udevice *dev) > > ofnode_get_property(node, "compatible", &ret); > > if (ret >= 0) > > continue; > > + /* If this node has "gpio-controller" property, skip */ > > + if (ofnode_read_bool(node, "gpio-controller")) > > + continue; > > > > if (ret != -FDT_ERR_NOTFOUND) > > return ret; > > -- > > 1.9.1 > > Patrick
diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c index abb622cfe79e..9df06a262cd5 100644 --- a/drivers/pinctrl/pinctrl-uclass.c +++ b/drivers/pinctrl/pinctrl-uclass.c @@ -149,6 +149,9 @@ static int pinconfig_post_bind(struct udevice *dev) ofnode_get_property(node, "compatible", &ret); if (ret >= 0) continue; + /* If this node has "gpio-controller" property, skip */ + if (ofnode_read_bool(node, "gpio-controller")) + continue; if (ret != -FDT_ERR_NOTFOUND) return ret;