Messages in this thread | | | Date | Tue, 28 Jun 2022 23:07:34 +0200 | From | Michael Walle <> | Subject | Re: fwnode_for_each_child_node() and OF backend discrepancy |
| |
Am 2022-06-28 22:52, schrieb Horatiu Vultur: > 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@linaro.org> 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?
You mean also for the lan9662? I'm pretty sure that doesn't work. Have a look where num_phys_ports is used. One random example: https://elixir.bootlin.com/linux/latest/source/drivers/net/ethernet/microchip/lan966x/lan966x_main.c#L874
So if your switch only has 4 ports, then I'd guess you'll access a non-existing register.
-michael
| |