Am 2022-04-21 16:23, schrieb Rob Herring:
What's needed here is a connector node (and driver) for the mikrobus socket. The connector node's purpose is to decouple the host DT from add-on board overlay DT. Something like this:
Funny I had a similar idea to have a connector with all the properties, but I failed to see how that would be of any help. Do you mind an example of such an overlay? Judging by the spi and i2c subnode, I guess it will amend the connector node and fill in it's devices? And all the child device properties will reference the connector, correct?
connector { // And a more specific compatible if pins can have alt funcs? // Spec version needed? compatible = "mikrobus-socket"; // Will need regulators defined if child devices expect // regulators vcc-33-supply = <®33>; vcc-5-supply = <®5v>; i2c-parent = <&i2c1>; // Already a defined property spi-parent = <&spi0>; // New
uart/serial needed too?
// RST pin reset-gpios = <&gpio 4 0>; // remap 'INT' (index 0) to host interrupt #interrupt-cells = <2>; #address-cells = <0>; interrupt-map = <0 0 &gpio 3 0>; spi {
For example: my-device@0 { reg = <0>; // really needed? there is only one SPI CS line compatible = "my-device"; reset-gpios = // may be left unset if it's optional, but what // what if it is a required property and in hardware // its connected to the RST pin of the module? other-gpios = <&connector 2>; vdd-supply = // what comes here? <&connector VCC_33>? interrupts-extended = <&connector 0 ..>; } -michael
//devices }; i2c { }; }; The DT spec defines 'foo-map' properties extending interrupt-map. Currently only GPIO is defined. We might want to do the same thing for PWM. Or we make the connector node both a PWM consumer and provider. Rob