Re: [PATCH] soc: fsl: qe: properly scan GPIO nodes at startup

From: Krzysztof Kozlowski

Date: Thu Jul 30 2026 - 08:16:45 EST


On 30/07/2026 14:01, Christophe Leroy (CS GROUP) wrote:
>
>
> Le 30/07/2026 à 13:14, Krzysztof Kozlowski a écrit :
>> On 29/07/2026 16:10, Christophe Leroy (CS GROUP) wrote:
>>> Before commit 156460811def ("soc: fsl: qe: Change GPIO driver to a
>>> proper platform driver") qe_add_gpiochips() was walking the device
>>> tree to find all nodes with compatible "fsl,mpc8323-qe-pario-bank".
>>>
>>> After that commit the discovery is handled by the platform core,
>>> therefore it is necessary to call of_platform_default_populate() on
>>> the par_io node.
>>>
>>> Fixes: 156460811def ("soc: fsl: qe: Change GPIO driver to a proper platform driver")
>>> Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@xxxxxxxxxx>
>>> ---
>>> drivers/soc/fsl/qe/qe_io.c | 15 +++++++++++++++
>>> 1 file changed, 15 insertions(+)
>>>
>>> diff --git a/drivers/soc/fsl/qe/qe_io.c b/drivers/soc/fsl/qe/qe_io.c
>>> index a5e2d0e5ab51..02ca556c8db0 100644
>>> --- a/drivers/soc/fsl/qe/qe_io.c
>>> +++ b/drivers/soc/fsl/qe/qe_io.c
>>> @@ -15,6 +15,7 @@
>>> #include <linux/errno.h>
>>> #include <linux/module.h>
>>> #include <linux/ioport.h>
>>> +#include <linux/of_platform.h>
>>>
>>> #include <asm/io.h>
>>> #include <soc/fsl/qe/qe.h>
>>> @@ -184,3 +185,17 @@ int par_io_of_config(struct device_node *np)
>>> return 0;
>>> }
>>> EXPORT_SYMBOL(par_io_of_config);
>>> +
>>> +static int __init par_io_populate(void)
>>> +{
>>> + struct device_node *np = of_find_node_by_name(NULL, "par_io");
>>
>> No, node name must not be ABI. Especially wrong node name.
>
> What's wrong with the node name ?

1. It causes W=2 warnings (which we might move to W=1 at some point)
2. It is not generic and DT spec asks for generic node names, although
maybe this part of code follows more of ePAPR than DT. But ePAPR v1.1
also was asking for generic node names.

>
> Regardless, I messed it up, I wanted to use type but copy/pasted
> of_find_node_by_name(NULL, "par_io") from quirk_mpc8360e_qe_enet10() in
> arch/powerpc/platforms/83xx/km83xx.c instead.
>
> Is it OK to use of_find_node_by_type(NULL, "par_io") instead ?

Well, depends. Is it a documented ABI?

>
> We have:
>
> $ git grep par_io arch/powerpc/boot/dts/
> arch/powerpc/boot/dts/fsl/mpc8568mds.dts: par_io@e0100 {
> arch/powerpc/boot/dts/fsl/mpc8568si-post.dtsi: par_io@e0100 {
> arch/powerpc/boot/dts/fsl/mpc8568si-post.dtsi: device_type =
> "par_io";

These are all DTS, does not matter really. ABI is not documented via DTS
but bindings.

Best regards,
Krzysztof