From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: Michael Walle <michael@walle.cc>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
devicetree <devicetree@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Horatiu Vultur <horatiu.vultur@microchip.com>
Subject: Re: fwnode_for_each_child_node() and OF backend discrepancy
Date: Tue, 28 Jun 2022 16:36:42 +0200 [thread overview]
Message-ID: <daaddbd5-1cd4-d3ce-869a-249bdd8aecb9@linaro.org> (raw)
In-Reply-To: <288f56ba9cfad46354203b7698babe91@walle.cc>
On 28/06/2022 16:22, Michael Walle wrote:
>>> I can't follow you here. Please note, that you need the actual
>>> physical port number. It's not a made up number, but corresponds
>>> to a physical port on that ethernet switch. So you can't just skip
>>> the disabled ones. port@2 must have port number 2.
>>
>> The number "2" you get from the reg property, so where is exactly the
>> problem?
>
> That you need to get the total number of ports of the hardware (which
> is also used for things beyond validation, eg. during switch init
> all ports will are disabled). And right now, that is done by counting
> all the nodes - which is bad, I guess we agree here.
It's bad also from another reason - the DT node was explicitly disabled,
but you perform some operation on actual hardware representing this
node. I would assume that a disabled DT node means it is not
operational, e.g. hardware not present or missing clocks, so you should
not treat it as another meaning - power down/unused.
> But it works,
> as long as no ports are disabled and all ports are described in the
> device tree. But I have device trees where some are disabled.
I am not sure if I follow this. You have devices which
1. have unused ports, but all DT nodes are available/okay,
2. have unused ports, which are in DT status=disabled?
Doesn't case 2 break the bindings? If so, we don't care about such
out-of-tree users. We cannot support all of possible weird combinations
in out-of-tree DTS files...
>
> I assume, you cannot read the hardware itself to get the number of
> physical ports; and we have the compatible "microchip,lan966x-switch",
> which is the generic one, so it could be the LAN9668 (with 8 ports)
> or the LAN9662 (with 2 ports).
I'll keep that argument for future when I see again patches adding such
wildcard compatible. :) I had to discuss with some folks...
Although the compatible difference does not have to be important here,
because one could say the 9662 and 9668 programming model is exaclty the
same and they differ by number of ports. This number of ports can be a
dedicated property or counted from the children (if they were all
available).
> We somehow have to retain backwards
> compatibility. Thus my idea was to at least make the handling slightly
> better and count *any* child nodes. So it doesn't fall apart with
> disabled
> nodes. Then introduce proper compatible strings
> "microchip,lan9668-switch"
> and use that to hardcode the num_phys_ports to 8. But there will be
> device trees with microchip,lan966x-switch out there, which we do want
> to support.
>
> I see the following options:
> (1) just don't care and get rid of the "microchip,lan966x-switch"
> compatible
> (2) quick fix for the older kernels by counting all the nodes and
> proper fix for the newer kernels with dedicated compatibles
> (3) no fix for older kernels, introduce new compatibles for new
> kernels
I propose this one. I would not care about out-of-tree DTSes which
decided to disable random stuff and expect things working. :)
> (4) keep generic compatible if the hardware can be read out to get
> the number of ports.
>
> I think (1) isn't the way to go. (2) was my try until I noticed
> that odd fwnode behavior. But judging by this thread, I don't think
> thats possible. I don't know if (4) is possible at all. If not we'd
> be left with (3).
Best regards,
Krzysztof
next prev parent reply other threads:[~2022-06-28 14:36 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-27 12:49 fwnode_for_each_child_node() and OF backend discrepancy Michael Walle
2022-06-27 13:08 ` Krzysztof Kozlowski
2022-06-27 13:33 ` Rafael J. Wysocki
2022-06-28 10:32 ` Krzysztof Kozlowski
2022-06-28 14:41 ` Sakari Ailus
2022-06-29 10:50 ` Rafael J. Wysocki
2022-06-29 13:01 ` Grant Likely
2022-06-28 11:10 ` Andy Shevchenko
2022-06-28 11:36 ` Michael Walle
2022-06-28 13:11 ` Andy Shevchenko
2022-06-28 13:23 ` Michael Walle
2022-06-28 13:29 ` Andy Shevchenko
2022-06-28 13:47 ` Michael Walle
2022-06-28 13:51 ` Krzysztof Kozlowski
2022-06-28 14:22 ` Michael Walle
2022-06-28 14:36 ` Krzysztof Kozlowski [this message]
2022-06-28 15:09 ` Michael Walle
2022-06-28 15:17 ` Krzysztof Kozlowski
2022-06-28 20:28 ` Andy Shevchenko
2022-06-28 20:52 ` Horatiu Vultur
2022-06-28 21:07 ` Michael Walle
2022-06-30 20:16 ` Horatiu Vultur
2022-06-30 21:00 ` Michael Walle
2022-06-30 21:21 ` Vladimir Oltean
2022-06-30 21:32 ` Michael Walle
2022-06-28 21:59 ` Vladimir Oltean
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=daaddbd5-1cd4-d3ce-869a-249bdd8aecb9@linaro.org \
--to=krzysztof.kozlowski@linaro.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=andy.shevchenko@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=horatiu.vultur@microchip.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael@walle.cc \
--cc=rafael@kernel.org \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox