> Date: Tue, 15 Mar 2022 22:37:15 +0000 > From: Dave Tyson <dty...@anduin.org.uk> > > I am trying to understand the enumeration of the GPIO pins on a RPI-zero-2 > which boots up and runs under current.
Did you get any answers? I didn't see any on-list, and this isn't my area of expertise, but... > The DTS lists i2c0 with gpio pins 0 & 1 and i2c1 with gpio pin 2 & 3. These > appear to be the only i2c interfaces defined (unless there are others hidden > in the dtsi files). These gpio pins are exposed on the 40 pin connector. Which dts file are you looking at? > So it would appear that NetBSD maps /dev/iic1 to gpio iic0 and /dev/iic2 to > gpio iic1 which is not intuitive... > > So how does the kernel map its devices to those listed in the dtb? I think usually it's first-come-first-serve according to the ordering in the device tree (that is, in a pre-order traversal, which is the same as the sequential order in the .dts file) -- not necessarily the numbers in the device tree node names. So if there device tree lists nodes i2c2, i2c0, i2c1, in that order, then it'll be /dev/iic0 -> i2c2 /dev/iic1 -> i2c0 /dev/iic2 -> i2c1 I see in bcm2835-common.dtsi that there is an i2c2 node -- this file might be included before any board-specific .dts files define their i2c0 or i2c1 nodes. > I wonder what /dev/iic0 is mapped to :-) You can probably find out by using ofctl(8) to dump the device tree. > From the RPI documentation it would appear that you can add overrides in > /boot/config.txt to override the dts config - I am guessing this is picked up > by linux, but there is no NetBSD support. That, I have no idea!