[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID:
<PUZPR06MB5887C2D161EA5CB13A41462EEFFAA@PUZPR06MB5887.apcprd06.prod.outlook.com>
Date: Wed, 29 Oct 2025 03:35:48 +0000
From: Gary Yang <gary.yang@...tech.com>
To: Linus Walleij <linus.walleij@...aro.org>
CC: "robh@...nel.org" <robh@...nel.org>, "krzk+dt@...nel.org"
<krzk+dt@...nel.org>, "conor+dt@...nel.org" <conor+dt@...nel.org>,
"linux-gpio@...r.kernel.org" <linux-gpio@...r.kernel.org>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>, cix-kernel-upstream
<cix-kernel-upstream@...tech.com>, "sfr@...b.auug.org.au"
<sfr@...b.auug.org.au>
Subject:
回复: [PATCH] Pinctrl: core: export pinctrl_provide_dummies() to fix build error
Hi Linus:
First Sorry for building mistakes. We always build code with -y option, and ignore -m option.
We will double check it later.
> EXTERNAL EMAIL
>
> On Tue, Oct 28, 2025 at 7:13 AM Gary Yang <gary.yang@...tech.com> wrote:
>
> > If a pinctrl driver uses pinctrl_provide_dummies() interface, and
> >
> > is built as a module, then an error occur as follow:
> >
> > ERROR: modpost: "pinctrl_provide_dummies"
> [drivers/pinctrl/cix/pinctrl-sky1-base.ko] undefined!
> > make[2]: *** [scripts/Makefile.modpost:147: Module.symvers] Error 1
> > make[1]: ***
> > [/home/gary/workspace/upstream/kernel_upstream/Makefile:1960:
> modpost]
> > Error 2
> > make: *** [Makefile:248: __sub-make] Error 2
> >
> > Signed-off-by: Gary Yang <gary.yang@...tech.com>
>
> I just deleted the call to pinctrl_provide_dummies() from the SKY1 driver
> instead, because I didn't understand it.
>
> But if you need it, put it in a series with this patch based on the latest devel
> and an explanation why it is needed.
>
> The only other driver that use it is the Renesas driver and it uses it like this:
>
> /* Enable dummy states for those platforms without pinctrl support
> */
> if (!of_have_populated_dt())
> pinctrl_provide_dummies();
>
> I don't understand why you would need this? The SKY1 has pinctrl support
> after this patch I think and since the arch code in arm64 requires DT, it seems
> fine. But maybe this is for ACPI boots or something like that, so you would
> have this driver but there would not be any device tree?
>
> Just explain it in a patch and we can add it back.
>
Please allow us to explain why we use it.
As you known, there are some states on pinctrl. They are default state, init state, sleep state, and so on.
Generally a device may has two states: default state and sleep state. They are included in DTS file.
So DTS has two nodes, one is for default state, and the other is for sleep state. When the device works, select
default state, but select sleep state when the system enters str.
There is two pinctrl controllers on CIX sky1. One is used under S0 state, and the other is used under S0 and S5 state.
When enter str, the system enter S3 state and S0 domain power off. So the pinctrl controller under S0 state is also off.
The settings for sleep state are loft and make no sense.
But if we remove these settings, the pinctrl can't find sleep state and can't change state when system enter str.
When resume pinctrl, pinctrl core may think state is still the same as before. So the settings can't be applied as expected.
1364 /**
1365 * pinctrl_select_state() - select/activate/program a pinctrl state to HW
1366 * @p: the pinctrl handle for the device that requests configuration
1367 * @state: the state handle to select/activate/program
1368 */
1369 int pinctrl_select_state(struct pinctrl *p, struct pinctrl_state *state)
1370 {
1371 if (p->state == state)
1372 return 0;
1373
1374 return pinctrl_commit_state(p, state);
1375 }
1376 EXPORT_SYMBOL_GPL(pinctrl_select_state);
To avoid write these unused settings in DTS file, we have to use pinctrl_provide_dummies() interface.
Do you agree our schemes? What's your opinion? Please give us some suggestions. Thanks
If you have any questions, please let us know.
Best wishes
Gary
> Yours,
> Linus Walleij
Powered by blists - more mailing lists