Re: fwnode_for_each_child_node() and OF backend discrepancy

From: Horatiu Vultur
Date: Tue Jun 28 2022 - 16:49:14 EST


The 06/28/2022 22:28, Andy Shevchenko wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> On Tue, Jun 28, 2022 at 5:17 PM Krzysztof Kozlowski
> <krzysztof.kozlowski@xxxxxxxxxx> wrote:
> > On 28/06/2022 17:09, Michael Walle wrote:

Hi,

Sorry for joint this late.

>
> ...
>
> > > Mh. Assume a SoC with an integrated ethernet switch. Some ports
> > > are externally connected, some don't. I'd think they should be disabled,
> > > no? Until now, all bindings I know, treat them as disabled. But OTOH
> > > you still need to do some configurations on them, like disable port
> > > forwarding, disable them or whatever. So the hardware is present, but
> > > it is not connected to anything.
> >
> > I see your point and the meaning is okay... except that drivers don't
> > touch disabled nodes. If a device (with some address space) is disabled,
> > you do not write there "please be power off". Here the case is a bit
> > different, because I think ports do not have their own address space.
> > Yet it contradicts the logic - something is disabled in DT and you
> > expect to perform actual operations on it.
>
> You beat me up to this comment, I also see a contradiction of what
> "disabled" means in your, Michael, case and what it should be.
>
> If you need to perform an operation on some piece of HW, it has not to
> be disabled.
>
> Or, you may deduce them by knowing how many ports in hardware (this is
> usually done not by counting the nodes, but by a property) and do
> whatever you want on ones, you have not listed (by port_num) in the
> array of parsed children.

It is not possible to have a defined for the MAX number of ports that
supported by lan966x. Which is 8. And assigned that define to
num_phys_ports instead of counting the entries in DT?
I have seen that sparx5 is doing something similar. [1]

Also unfortunately, I am not aware of any register that says if it is
lan9662 or lan9668.

Also lan9662 can have up to 4 ports.

[1] https://elixir.bootlin.com/linux/v5.19-rc4/source/drivers/net/ethernet/microchip/sparx5/sparx5_main.h#L231

>
> --
> With Best Regards,
> Andy Shevchenko

--
/Horatiu