Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751549AbbK1KSz (ORCPT ); Sat, 28 Nov 2015 05:18:55 -0500 Received: from mail-wm0-f54.google.com ([74.125.82.54]:38238 "EHLO mail-wm0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751031AbbK1KSy (ORCPT ); Sat, 28 Nov 2015 05:18:54 -0500 Subject: Re: [PATCH] pinctrl: mvebu: complain about missing group after checking variant Cc: Linus Walleij , Simon Guinot , Thomas Petazzoni , Jason Cooper , Andrew Lunn , Gregory Clement , linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <1448705645-13881-1-git-send-email-sebastian.hesselbarth@gmail.com> From: Sebastian Hesselbarth Message-ID: <56597F87.9020400@gmail.com> Date: Sat, 28 Nov 2015 11:18:47 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 In-Reply-To: <1448705645-13881-1-git-send-email-sebastian.hesselbarth@gmail.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3489 Lines: 94 On 28.11.2015 11:14, Sebastian Hesselbarth wrote: > Common MVEBU pinctrl driver core gets an array of controls to modify > a specific set of registers and an array of modes for each pingroup > from each of the different SoC families of MVEBU. > > Some SoC families comprise different variants that differ in available > pingroups and also controls, but to ease driver development, we can > pass a variant mask to disable specific pingroups for some variants. > However, controls are limited to the true number of pinctrl groups > available on a variant. > > Now, when pinctrl core driver parses over above arrays, it tries to > match modes with available controls and complains about missing > controls for modes that are passed to the core but actually are not > available on a variant with: > > kirkwood-pinctrl f1010000.pin-controller: unknown pinctrl group 36 > > This warning is a false-positive and annoying, so move the warning > after we checked the variant mask for each mode setting. Also, if > there is no supported setting for this variant, do not complain at > all. > > Signed-off-by: Sebastian Hesselbarth > Reported-by: Linus Walleij > --- > Cc: Linus Walleij > Cc: Simon Guinot > Cc: Thomas Petazzoni > Cc: Jason Cooper > Cc: Andrew Lunn > Cc: Gregory Clement > Cc: linux-gpio@vger.kernel.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-kernel@vger.kernel.org > --- > drivers/pinctrl/mvebu/pinctrl-mvebu.c | 20 ++++++++++++-------- > 1 file changed, 12 insertions(+), 8 deletions(-) > > diff --git a/drivers/pinctrl/mvebu/pinctrl-mvebu.c b/drivers/pinctrl/mvebu/pinctrl-mvebu.c > index 77d2221d379d..dbc95369317a 100644 > --- a/drivers/pinctrl/mvebu/pinctrl-mvebu.c > +++ b/drivers/pinctrl/mvebu/pinctrl-mvebu.c > @@ -663,16 +663,9 @@ int mvebu_pinctrl_probe(struct platform_device *pdev) > /* 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); > + struct mvebu_pinctrl_group *grp; > unsigned num_settings; > > - if (!grp) { > - dev_warn(&pdev->dev, "unknown pinctrl group %d\n", > - mode->pid); > - continue; > - } > - > for (num_settings = 0; ;) { > struct mvebu_mpp_ctrl_setting *set = > &mode->settings[num_settings]; > @@ -695,6 +688,17 @@ int mvebu_pinctrl_probe(struct platform_device *pdev) > set->flags = MVEBU_SETTING_GPI; > } > > + /* skip modes with no settings for this variant */ Erm, dammit. This does not work as expected. The loop right over this does increment num_settings unconditionally. I'll have to find a better solution... Sebastian > + if (!num_settings) > + continue; > + > + grp = mvebu_pinctrl_find_group_by_pid(pctl, mode->pid); > + if (!grp) { > + dev_warn(&pdev->dev, "unknown pinctrl group %d\n", > + mode->pid); > + continue; > + } > + > grp->settings = mode->settings; > grp->num_settings = num_settings; > } > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/