* Strange message from Kirkwood pinctrl driver @ 2015-11-25 10:27 Linus Walleij 2015-11-25 14:46 ` Andrew Lunn 2015-11-26 13:33 ` Sebastian Hesselbarth 0 siblings, 2 replies; 5+ messages in thread From: Linus Walleij @ 2015-11-25 10:27 UTC (permalink / raw) To: linux-gpio@vger.kernel.org, Sebastian Hesselbarth, linux-arm-kernel@lists.infradead.org Cc: Simon Guinot, Thomas Petazzoni, Jason Cooper, Andrew Lunn, Gregory Clement Hi Sebastian, trying to use the Kirkwood pinctrl driver with compatible = "marvell,88f6192-pinctrl"; on a Pogoplug series 4 yields the following message when instantiating the driver: kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 36 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 37 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 38 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 39 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 40 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 41 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 42 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 43 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 44 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 45 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 46 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 47 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 48 kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 49 kirkwood-pinctrl f1010000.pin-controller: registered pinctrl driver It looks harmless but seems like a bug and make me uncertain. The following naive patch fixes it: diff --git a/drivers/pinctrl/mvebu/pinctrl-kirkwood.c b/drivers/pinctrl/mvebu/pinctrl-kirkwood.c index 0f07dc554a1d..6c7c2c8819b8 100644 --- a/drivers/pinctrl/mvebu/pinctrl-kirkwood.c +++ b/drivers/pinctrl/mvebu/pinctrl-kirkwood.c @@ -411,7 +411,7 @@ static struct mvebu_pinctrl_soc_info mv88f6190_info = { .controls = mv88f619x_mpp_controls, .ncontrols = ARRAY_SIZE(mv88f619x_mpp_controls), .modes = mv88f6xxx_mpp_modes, - .nmodes = ARRAY_SIZE(mv88f6xxx_mpp_modes), + .nmodes = ARRAY_SIZE(mv88f6xxx_mpp_modes) - 14, .gpioranges = mv88f619x_gpio_ranges, .ngpioranges = ARRAY_SIZE(mv88f619x_gpio_ranges), }; @@ -421,7 +421,7 @@ static struct mvebu_pinctrl_soc_info mv88f6192_info = { .controls = mv88f619x_mpp_controls, .ncontrols = ARRAY_SIZE(mv88f619x_mpp_controls), .modes = mv88f6xxx_mpp_modes, - .nmodes = ARRAY_SIZE(mv88f6xxx_mpp_modes), + .nmodes = ARRAY_SIZE(mv88f6xxx_mpp_modes) - 14, .gpioranges = mv88f619x_gpio_ranges, .ngpioranges = ARRAY_SIZE(mv88f619x_gpio_ranges), }; What is the proper way to fix this? Yours, Linus Walleij ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: Strange message from Kirkwood pinctrl driver 2015-11-25 10:27 Strange message from Kirkwood pinctrl driver Linus Walleij @ 2015-11-25 14:46 ` Andrew Lunn 2015-11-25 14:55 ` Linus Walleij 2015-11-26 13:33 ` Sebastian Hesselbarth 1 sibling, 1 reply; 5+ messages in thread From: Andrew Lunn @ 2015-11-25 14:46 UTC (permalink / raw) To: Linus Walleij Cc: linux-gpio@vger.kernel.org, Sebastian Hesselbarth, linux-arm-kernel@lists.infradead.org, Thomas Petazzoni, Gregory Clement, Simon Guinot, Jason Cooper On Wed, Nov 25, 2015 at 11:27:46AM +0100, Linus Walleij wrote: > Hi Sebastian, > > trying to use the Kirkwood pinctrl driver with compatible = > "marvell,88f6192-pinctrl"; > on a Pogoplug series 4 yields the following message when instantiating > the driver: > > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 36 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 37 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 38 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 39 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 40 Hi Linus Humm, interesting. I don't remember it doing that before. I will look into this in the next couple of days. Andrew ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Strange message from Kirkwood pinctrl driver 2015-11-25 14:46 ` Andrew Lunn @ 2015-11-25 14:55 ` Linus Walleij 2015-11-25 15:24 ` Simon Guinot 0 siblings, 1 reply; 5+ messages in thread From: Linus Walleij @ 2015-11-25 14:55 UTC (permalink / raw) To: Andrew Lunn Cc: linux-gpio@vger.kernel.org, Sebastian Hesselbarth, linux-arm-kernel@lists.infradead.org, Thomas Petazzoni, Gregory Clement, Simon Guinot, Jason Cooper On Wed, Nov 25, 2015 at 3:46 PM, Andrew Lunn <andrew@lunn.ch> wrote: > On Wed, Nov 25, 2015 at 11:27:46AM +0100, Linus Walleij wrote: >> Hi Sebastian, >> >> trying to use the Kirkwood pinctrl driver with compatible = >> "marvell,88f6192-pinctrl"; >> on a Pogoplug series 4 yields the following message when instantiating >> the driver: >> >> kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 36 >> kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 37 >> kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 38 >> kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 39 >> kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 40 > > Hi Linus > > Humm, interesting. I don't remember it doing that before. I will look > into this in the next couple of days. There are only few devices using it: it is declared in kirkwood-6192.dtsi and that is just used by: kirkwood-blackarmor-nas220.dts kirkwood-laplug.dts kirkwood-rd88f6192.dts ... and my new device tree Interestingly, kirkwood-ns2[lite|mini].dts specifies it's compatible with "marvell,kirkwood-88f6192" but instead includes kirkwood-ns2-common.dtsi which includes kirkwood-6281.dtsi. I haven't wrapped my head around that one, I suspect it's a bug. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Strange message from Kirkwood pinctrl driver 2015-11-25 14:55 ` Linus Walleij @ 2015-11-25 15:24 ` Simon Guinot 0 siblings, 0 replies; 5+ messages in thread From: Simon Guinot @ 2015-11-25 15:24 UTC (permalink / raw) To: Linus Walleij Cc: Andrew Lunn, Thomas Petazzoni, linux-gpio@vger.kernel.org, Gregory Clement, Jason Cooper, linux-arm-kernel@lists.infradead.org, Sebastian Hesselbarth [-- Attachment #1: Type: text/plain, Size: 1561 bytes --] On Wed, Nov 25, 2015 at 03:55:16PM +0100, Linus Walleij wrote: > On Wed, Nov 25, 2015 at 3:46 PM, Andrew Lunn <andrew@lunn.ch> wrote: > > On Wed, Nov 25, 2015 at 11:27:46AM +0100, Linus Walleij wrote: > >> Hi Sebastian, > >> > >> trying to use the Kirkwood pinctrl driver with compatible = > >> "marvell,88f6192-pinctrl"; > >> on a Pogoplug series 4 yields the following message when instantiating > >> the driver: > >> > >> kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 36 > >> kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 37 > >> kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 38 > >> kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 39 > >> kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 40 > > > > Hi Linus > > > > Humm, interesting. I don't remember it doing that before. I will look > > into this in the next couple of days. > > There are only few devices using it: it is declared in > kirkwood-6192.dtsi and that is just used by: > > kirkwood-blackarmor-nas220.dts > kirkwood-laplug.dts > kirkwood-rd88f6192.dts > ... and my new device tree > > Interestingly, kirkwood-ns2[lite|mini].dts specifies it's compatible > with "marvell,kirkwood-88f6192" but instead includes > kirkwood-ns2-common.dtsi which includes > kirkwood-6281.dtsi. I haven't wrapped my head around that > one, I suspect it's a bug. Don't wrap your head too much about that :) It is indeed a bug and it explains why I didn't see this messages before. Simon [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 181 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Strange message from Kirkwood pinctrl driver 2015-11-25 10:27 Strange message from Kirkwood pinctrl driver Linus Walleij 2015-11-25 14:46 ` Andrew Lunn @ 2015-11-26 13:33 ` Sebastian Hesselbarth 1 sibling, 0 replies; 5+ messages in thread From: Sebastian Hesselbarth @ 2015-11-26 13:33 UTC (permalink / raw) To: Linus Walleij, linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Simon Guinot, Thomas Petazzoni, Jason Cooper, Andrew Lunn, Gregory Clement On 25.11.2015 11:27, Linus Walleij wrote: > trying to use the Kirkwood pinctrl driver with compatible = > "marvell,88f6192-pinctrl"; > on a Pogoplug series 4 yields the following message when instantiating > the driver: > > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 36 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 37 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 38 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 39 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 40 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 41 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 42 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 43 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 44 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 45 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 46 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 47 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 48 > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 49 > kirkwood-pinctrl f1010000.pin-controller: registered pinctrl driver > > It looks harmless but seems like a bug and make me uncertain. > > The following naive patch fixes it: > > diff --git a/drivers/pinctrl/mvebu/pinctrl-kirkwood.c > b/drivers/pinctrl/mvebu/pinctrl-kirkwood.c > index 0f07dc554a1d..6c7c2c8819b8 100644 > --- a/drivers/pinctrl/mvebu/pinctrl-kirkwood.c > +++ b/drivers/pinctrl/mvebu/pinctrl-kirkwood.c > @@ -411,7 +411,7 @@ static struct mvebu_pinctrl_soc_info mv88f6190_info = { > .controls = mv88f619x_mpp_controls, > .ncontrols = ARRAY_SIZE(mv88f619x_mpp_controls), > .modes = mv88f6xxx_mpp_modes, > - .nmodes = ARRAY_SIZE(mv88f6xxx_mpp_modes), > + .nmodes = ARRAY_SIZE(mv88f6xxx_mpp_modes) - 14, > .gpioranges = mv88f619x_gpio_ranges, > .ngpioranges = ARRAY_SIZE(mv88f619x_gpio_ranges), > }; > @@ -421,7 +421,7 @@ static struct mvebu_pinctrl_soc_info mv88f6192_info = { > .controls = mv88f619x_mpp_controls, > .ncontrols = ARRAY_SIZE(mv88f619x_mpp_controls), > .modes = mv88f6xxx_mpp_modes, > - .nmodes = ARRAY_SIZE(mv88f6xxx_mpp_modes), > + .nmodes = ARRAY_SIZE(mv88f6xxx_mpp_modes) - 14, > .gpioranges = mv88f619x_gpio_ranges, > .ngpioranges = ARRAY_SIZE(mv88f619x_gpio_ranges), > }; > > What is the proper way to fix this? Linus, I had a quick look at the pinctrl driver. mv88f6xxx_mpp_modes contains mpp modes 0-49 plus corresponding functions for all Kirkwood SoCs, some SoCs only have a subset of that. Looking at static struct mvebu_mpp_ctrl mv88f619x_mpp_controls[] = { MPP_FUNC_CTRL(0, 35, NULL, kirkwood_mpp_ctrl), }; Kirkwood 619x only provides mpp0-35. Now in pinctrl-mvebu.c, we loop over the controls and collect the number of available groups. For kirkwood there are no groups with more than one single mpp pin like Dove has. /* count controls and create names for mvebu generic register controls; also does sanity checks */ pctl->num_groups = 0; pctl->desc.npins = 0; for (n = 0; n < soc->ncontrols; n++) { struct mvebu_mpp_ctrl *ctrl = &soc->controls[n]; ... /* * We allow to pass controls with NULL name that we treat * as a range of one-pin groups with generic mvebu register * controls. */ if (!ctrl->name) { pctl->num_groups += ctrl->npins; ... } else { pctl->num_groups += 1; } } After the loop pctl->num_groups is 36, i.e. mpp0 to mpp35. A little later, we do: /* assign mpp modes to groups */ for (n = 0; n < soc->nmodes; n++) { struct mvebu_mpp_mode *mode = &soc->modes[n]; struct mvebu_pinctrl_group *grp = mvebu_pinctrl_find_group_by_pid(pctl, mode->pid); unsigned num_settings; if (!grp) { dev_warn(&pdev->dev, "unknown pinctrl group %d\n", mode->pid); continue; } ... } Which is looping over all modes (0-49) passed to the pinctrl-mvebu core driver. As said earlier, we pass one control with range from 0-35 that gets translated to 36 groups (pctl->num_groups). mvebu_find_group_by_pid() will try to find the corresponding group for a given pin number by checking pctl->num_groups. That obviously fails for modes 36-49 and will issue that annoying warning. IMHO, the correct fix will be to make the last loop above run from 0 to min(pctl->num_groups, soc->nmodes) instead of soc->nmodes. We could also limit pctl->num_groups to soc->nmodes earlier and let the loop run from 0 to pctl->num_groups. I am very short on time, but if nobody else jumps in earlier, I can stich a patch within a week or so. Thanks for reporting the issue, Sebastian ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-11-26 13:33 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-11-25 10:27 Strange message from Kirkwood pinctrl driver Linus Walleij 2015-11-25 14:46 ` Andrew Lunn 2015-11-25 14:55 ` Linus Walleij 2015-11-25 15:24 ` Simon Guinot 2015-11-26 13:33 ` Sebastian Hesselbarth
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).