Message ID | 20210130082128.3778939-1-michael@amarulasolutions.com |
---|---|
State | New |
Headers | show |
Series | pinctrl: Support pin that does not support configuration option | expand |
Hi Michael, On Sat, Jan 30, 2021 at 5:21 AM Michael Trimarchi <michael@amarulasolutions.com> wrote: > > Some of the iMX25 pins have not an associated configuration register so > when they are configured the standard way through the device tree the > kernel complains with: > > imx25-pinctrl 43fac000.iomuxc: Pin(MX25_PAD_EXT_ARMCLK) does not support > config function Could you please share your device tree that causes this warning? Shouldn't you pass 0x80000000 in the devicetree for this pad then? 0x80000000 means that the kernel should not touch the PAD_CTL register and use the default configuration from the bootloader/POR.
Hi Fabio On Mon, Feb 1, 2021 at 12:47 PM Fabio Estevam <festevam@gmail.com> wrote: > > Hi Michael, > > On Sat, Jan 30, 2021 at 5:21 AM Michael Trimarchi > <michael@amarulasolutions.com> wrote: > > > > Some of the iMX25 pins have not an associated configuration register so > > when they are configured the standard way through the device tree the > > kernel complains with: > > > > imx25-pinctrl 43fac000.iomuxc: Pin(MX25_PAD_EXT_ARMCLK) does not support > > config function > > Could you please share your device tree that causes this warning? > > Shouldn't you pass 0x80000000 in the devicetree for this pad then? > > 0x80000000 means that the kernel should not touch the PAD_CTL register > and use the default configuration from the bootloader/POR. arch/arm/boot/dts/imx25-lisa.dts: MX25_PAD_EXT_ARMCLK__GPIO_3_15 0x80000000 The problem that exists pad that can be muxed but not configured Michael -- Michael Nazzareno Trimarchi Amarula Solutions BV COO Co-Founder Cruquiuskade 47 Amsterdam 1018 AM NL T. +31(0)851119172 M. +39(0)3479132170 [`as] https://www.amarulasolutions.com
On Mon, Feb 1, 2021 at 12:54 PM Michael Nazzareno Trimarchi <michael@amarulasolutions.com> wrote: > On Mon, Feb 1, 2021 at 12:47 PM Fabio Estevam <festevam@gmail.com> wrote: > > > > Hi Michael, > > > > On Sat, Jan 30, 2021 at 5:21 AM Michael Trimarchi > > <michael@amarulasolutions.com> wrote: > > > > > > Some of the iMX25 pins have not an associated configuration register so > > > when they are configured the standard way through the device tree the > > > kernel complains with: > > > > > > imx25-pinctrl 43fac000.iomuxc: Pin(MX25_PAD_EXT_ARMCLK) does not support > > > config function > > > > Could you please share your device tree that causes this warning? > > > > Shouldn't you pass 0x80000000 in the devicetree for this pad then? > > > > 0x80000000 means that the kernel should not touch the PAD_CTL register > > and use the default configuration from the bootloader/POR. > > arch/arm/boot/dts/imx25-lisa.dts: > MX25_PAD_EXT_ARMCLK__GPIO_3_15 0x80000000 > > The problem that exists pad that can be muxed but not configured Did you reach any conclusion on this? I need Fabio's consent to apply the patch, but it seems maybe the DTS should be changed instead? Yours, Linus Walleij
Hi On Fri, Feb 12, 2021 at 9:26 AM Linus Walleij <linus.walleij@linaro.org> wrote: > > On Mon, Feb 1, 2021 at 12:54 PM Michael Nazzareno Trimarchi > <michael@amarulasolutions.com> wrote: > > On Mon, Feb 1, 2021 at 12:47 PM Fabio Estevam <festevam@gmail.com> wrote: > > > > > > Hi Michael, > > > > > > On Sat, Jan 30, 2021 at 5:21 AM Michael Trimarchi > > > <michael@amarulasolutions.com> wrote: > > > > > > > > Some of the iMX25 pins have not an associated configuration register so > > > > when they are configured the standard way through the device tree the > > > > kernel complains with: > > > > > > > > imx25-pinctrl 43fac000.iomuxc: Pin(MX25_PAD_EXT_ARMCLK) does not support > > > > config function > > > > > > Could you please share your device tree that causes this warning? > > > > > > Shouldn't you pass 0x80000000 in the devicetree for this pad then? > > > > > > 0x80000000 means that the kernel should not touch the PAD_CTL register > > > and use the default configuration from the bootloader/POR. > > > > arch/arm/boot/dts/imx25-lisa.dts: > > MX25_PAD_EXT_ARMCLK__GPIO_3_15 0x80000000 > > > > The problem that exists pad that can be muxed but not configured > > Did you reach any conclusion on this? > > I need Fabio's consent to apply the patch, but it seems maybe the > DTS should be changed instead? > Let me re-check with the latest linux code. I did not find any change there. It's on my side now Michael > Yours, > Linus Walleij -- Michael Nazzareno Trimarchi Amarula Solutions BV COO Co-Founder Cruquiuskade 47 Amsterdam 1018 AM NL T. +31(0)851119172 M. +39(0)3479132170 [`as] https://www.amarulasolutions.com
Hi Fabio On Fri, Feb 12, 2021 at 9:31 AM Michael Nazzareno Trimarchi <michael@amarulasolutions.com> wrote: > > Hi > > On Fri, Feb 12, 2021 at 9:26 AM Linus Walleij <linus.walleij@linaro.org> wrote: > > > > On Mon, Feb 1, 2021 at 12:54 PM Michael Nazzareno Trimarchi > > <michael@amarulasolutions.com> wrote: > > > On Mon, Feb 1, 2021 at 12:47 PM Fabio Estevam <festevam@gmail.com> wrote: > > > > > > > > Hi Michael, > > > > > > > > On Sat, Jan 30, 2021 at 5:21 AM Michael Trimarchi > > > > <michael@amarulasolutions.com> wrote: > > > > > > > > > > Some of the iMX25 pins have not an associated configuration register so > > > > > when they are configured the standard way through the device tree the > > > > > kernel complains with: > > > > > > > > > > imx25-pinctrl 43fac000.iomuxc: Pin(MX25_PAD_EXT_ARMCLK) does not support > > > > > config function > > > > > > > > Could you please share your device tree that causes this warning? > > > > > > > > Shouldn't you pass 0x80000000 in the devicetree for this pad then? > > > > > > > > 0x80000000 means that the kernel should not touch the PAD_CTL register > > > > and use the default configuration from the bootloader/POR. > > > > > > arch/arm/boot/dts/imx25-lisa.dts: > > > MX25_PAD_EXT_ARMCLK__GPIO_3_15 0x80000000 > > > > > > The problem that exists pad that can be muxed but not configured > > > > Did you reach any conclusion on this? > > > > I need Fabio's consent to apply the patch, but it seems maybe the > > DTS should be changed instead? > > > > Let me re-check with the latest linux code. I did not find any change > there. It's on my side > now Looking at the code (I will ask to check on real hw) seems that conf_reg is -1 when there is no conf_reg. the pinmux core set_state just calls the pin_config_set and one pin can have the mux supported and the config not supported. And imx25 has several of them that are only muxed. Seems that this NO_CTL_PAD is something that is nxp clk_osc_audio: clk-osc-audio { compatible = "gpio-gate-clock"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_clk26mhz_osc>; clocks = <&clksis>; #clock-cells = <0>; enable-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>; }; this is my use case pinctrl_clk26mhz_osc: clk26mhzosc { fsl,pins = < MX25_PAD_EXT_ARMCLK__GPIO_3_15 0x80000000 >; }; Michael > > Michael > > > Yours, > > Linus Walleij > > > > -- > Michael Nazzareno Trimarchi > Amarula Solutions BV > COO Co-Founder > Cruquiuskade 47 Amsterdam 1018 AM NL > T. +31(0)851119172 > M. +39(0)3479132170 > [`as] https://www.amarulasolutions.com -- Michael Nazzareno Trimarchi Amarula Solutions BV COO Co-Founder Cruquiuskade 47 Amsterdam 1018 AM NL T. +31(0)851119172 M. +39(0)3479132170 [`as] https://www.amarulasolutions.com
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index 9fc4433fece4..7115b0b5689c 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c @@ -1273,7 +1273,7 @@ static int pinctrl_commit_state(struct pinctrl *p, struct pinctrl_state *state) break; } - if (ret < 0) { + if (ret < 0 && ret != -ENOTSUPP) { goto unapply_new_state; } diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c index daf28bc5661d..2c7c1de9cca7 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c @@ -356,7 +356,7 @@ static int imx_pinconf_get_mmio(struct pinctrl_dev *pctldev, unsigned pin_id, if (pin_reg->conf_reg == -1) { dev_err(ipctl->dev, "Pin(%s) does not support config function\n", info->pins[pin_id].name); - return -EINVAL; + return -ENOTSUPP; } *config = readl(ipctl->base + pin_reg->conf_reg); @@ -391,7 +391,7 @@ static int imx_pinconf_set_mmio(struct pinctrl_dev *pctldev, if (pin_reg->conf_reg == -1) { dev_err(ipctl->dev, "Pin(%s) does not support config function\n", info->pins[pin_id].name); - return -EINVAL; + return -ENOTSUPP; } dev_dbg(ipctl->dev, "pinconf set pin %s\n",