Re: [Q] devicetree overlays

From: Frank Rowand
Date: Wed Aug 12 2020 - 11:13:37 EST


On 2020-08-12 08:27, Enrico Weigelt, metux IT consult wrote:
> On 07.08.20 16:17, Sven Van Asbroeck wrote:
>
> Hi,
>
>> I believe you're asking: "how do I associate device tree nodes to
>> devices on a dynamically discoverable bus such as USB or PCI" right ?
>>
>> I believe that already exists. You can describe the _expected_ pci or
>> usb topology in the
>> devicetree. If a device gets detected in a spot on the bus described
>> in the tree, that
>> snippet will be automatically associated with this device.
>>
>> How to for usb:
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/usb/usb-device.txt?h=v5.8
>>
>> How to for pci:
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/pci/pci.txt?h=v5.8
>
> Thanks, that looks good.
>
> But I've still got another problem: how can I use DT along w/ ACPI ?

Some answers from https://elinux.org/Device_tree_plumbers_2016_etherpad

Question: what about device tree on x86

Answer: there's already support for DT on x86. But, we should not mix DT and ACPI.


A controversial topic is ACPI overlays (putting DT in ACPI or ACPI in DT).

Don't want to have drivers that get part of their info from ACPI and part from DT. That's nuts.


Question: Can you have ACPI and DT at the same time on x86?

Answer: No. Some ARM64 systems have support for both ACPI and DT, but the system selects one to use at runtime. They are not used at the same time.
You can run the DT unit tests on x86.


-Frank

>
> The scenario goes like this:
>
> * machine boots and probes normally w/ ACPI
> * device is detected via USB, PCI, DMI, etc -> driver gets active
> * driver loads (or carries) a DT snippet
> * devices on the bus are instantiated via this DT snippet
>
> (driver could also be some udev vodoo)
>
> Example a:
>
> * generic usb i2c dongle w/ some i2c devices attached behind it
> * config (or DT snippet) somewhere in the FS
>
> Example b:
>
> * x86 board driver (eg. apu2/3/4), probed via DMI
> * just instantiates a bunch of generic drivers and wires up
> devices (gpio, leds, keys, ...)
>
>
> Do you think we can already do that ?
> Otherwise, what has to be done to achieve that ?
>
>
> --mtx
>