On Mon, 17 Feb 2025 at 17:56, Herve Codina <herve.codina@xxxxxxxxxxx> wrote: > > On Mon, 17 Feb 2025 17:03:34 +0000 > Phil Elwell <phil@xxxxxxxxxxxxxxx> wrote: > <snip> > > The job of the nexus node would be to translate a generic request for > > a numbered resource to a specific request for an RP1 resource with > > arbitrary properties. The arbitrary properties could be GPIO offsets, > > which are board specific, while the node supplying the resource is > > provided by the overlay. This means that an entry in the table, > > described by a single property, could have contributions from the base > > DT and the overlay, which is not possible since overlays overwrite > > whole properties. > > Hum, I am a bit lost. > Some DT example (base and overlay) could help me to understand. I could, but I think it is becoming a distraction. <snip> > > I think I can see how that could be made to work for GPIOs. It looks > > as though the GPIO subsystem is the only one making use of > > of_parse_phandle_with_args_map. Interrupts seem to have an open-coded > > equivalent, and iommus. What about I2C and PWM? > > Support for PWM has been recently accepted. > https://lore.kernel.org/all/ufl4kwrjyp4zid4muvghefevqc6hk3zyvxnsu72fxd4f46fzg6@hufkci2dzjid/ > > For i2c, nexus node is not suitable. > > Nexus node works well when resources are indexed (gpio line in a gpio chip > for instance). For bus controller there is no index. > I mean we never refer a i2c bus controller using <&i2c-ctrl 12>. > > For i2c, I proposed i2c bus extension: > https://lore.kernel.org/all/20250205173918.600037-1-herve.codina@xxxxxxxxxxx/ I don't see in principle why an address-cells of 0 should cause a problem - it's a degenerate case, but it's still conceptually valid. However, we seem to be having to invent a lot of new infrastructure - some of it already supported by the kernel, some of it not - because we have made the mistake of using a discoverable bus for a point-to-point link on a PCB. I don't see how this is fundamentally different to the USB-attached Ethernet controller on e.g. the Pi 3B. Despite the fact that the Ethernet interface is discoverable, it has a Device Tree declaration (see arch/arm/boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi) in order that the firmware can supply a MAC address. Yes, the RP1 DT declaration is significantly larger, but size shouldn't matter for what seems to be objections based on tenets. Phil