[U-Boot] [PATCH] pci: Support parsing PCI controller DT subnodes

Simon Glass
2018-09-02T01:07:03Z

Hi Marek,

On 1 September 2018 at 16:43, Marek Vasut <marek.vasut@gmail.com> wrote:
> On 09/01/2018 11:45 PM, Simon Glass wrote:
>> Hi Marek,
>>
>> On 30 August 2018 at 03:25, Marek Vasut <marek.vasut@gmail.com> wrote:
>>>
>>> On 08/30/2018 02:29 AM, Simon Glass wrote:
>>>> Hi Marek,
>>>
>>> Hi,
>>>
>>> [...]
>>>
>>>>>> If you have both EHCI and a xHCI controller which can occupy the same
>>>>>> BFD, then how would you supply in the DT options needed by the
>>>>>> controller itself? Don't you need two nodes in that case?
>>>>>
>>>>> For the PHY case, it's controller-type-independent.
>>>>
>>>> What do you mean? Your example of why you can't use compatible strings
>>>> says you might have two different PHYs. But I think you should answer
>>>> my questions:
>>>>
>>>>>> If you have both EHCI and a xHCI controller which can occupy the same
>>>>>> BFD, then how would you supply in the DT options needed by the
>>>>>> controller itself? Don't you need two nodes in that case?
>>>
>>> You need only one node (if the PHY works with both controller options),
>>> which contains "reg" and "phy" properties. The driver matching is done
>>> on the PCI ID/class and the node is associated with the driver based on
>>> the "reg" property.
>>
>> I think you need two nodes if there are DT options that are different
>> for each PHY. In fact I think this is impossible to do with the reg
>> scheme.
>>
>> In effect the PHYs are different. They have different drivers,
>> assuming drivers are needed. So I feel that using a common address to
>> match two different devices is actually just weird.
>
> I think I lost you. But this discussion is really hypothetical. You
> _can_ have a USB PHY which can attach to both USB 2 and USB 3
> controller, in which case you would have only one DT node to describe it.

Can you point to an example of this? Otherwise it seems hypothetical.

As a counter-example, see exynos54xx.dtsi.

I believe the correct way to do this is to enable/disable DT nodes. Do
you have any pointers to suggest that the same node should be used for
two devices?

Also, what settings are you actually adding to your DT node? Can you
please point to it again?

Regards,
Simon