Beagleboard:BeagleBone cape interface spec

This is a list of symlink interfaces based on BeagleBone Cape header pins.

= I2C =

/dev/bone/i2c/0
AM3358 I2C0 AM5729 I2C1
 * On-board peripherals

/dev/bone/i2c/1
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-I2C1-00A0.dts AM3358 I2C1 AM5729 I2C5
 * P9.17 - SCL
 * P9.18 - SDA

/dev/bone/i2c/2
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-I2C2-00A0.dts AM3358 I2C2 AM5729 I2C4
 * P9.19 - SCL
 * P9.20 - SDA

/dev/bone/i2c/3
AM3358 N/A AM5729 I2C3
 * P9.24 - SCL
 * P9.26 - SDA

= SPI = Need to add a symlink from /dev/spi to /dev/bone/spi.

/dev/bone/spi/0.x
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-SPIDEV0-00A0.dts AM3358 SPI0 AM5729 SPI2
 * P9.18 - MOSI
 * P9.21 - MISO
 * P9.22 - CLK

/dev/bone/spi/0.0
AM3358 SPI0 CS0 AM5729 SPI2 CS0
 * P9.17 - CS

/dev/bone/spi/1.x
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-SPIDEV1-00A0.dts AM3358 SPI1 AM5729 SPI3
 * P9.31 - CLK
 * P9.30 - MOSI
 * P9.29 - MISO

/dev/bone/spi/1.0
AM3358 SPI1 CS0 AM5729 SPI3 CS0
 * P9.28 - CS

/dev/bone/spi/1.1
AM3358 SPI1 CS1 AM5729 SPI3 CS1
 * P9.42 - CS

/dev/bone/spi/1.2
AM3358 SPI1 GPIO1_17 AM5729 SPI3 GPIO7_11
 * P9.23 - CS

= UART =

/dev/bone/uart/0
AM3358 UART0 AM5729 UART1
 * console debug header pins

/dev/bone/uart/1
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART1-00A0.dts https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART1-RTSCTS-00A0.dts AM3358 UART1 AM5729 UART10
 * P9.24 - TX
 * P9.26 - RX
 * P9.19 - RTSn
 * P9.20 - CTSn

/dev/bone/uart/2
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART2-00A0.dts https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART2-RTSCTS-00A0.dts AM3358 UART2 AM5729 UART3
 * P9.21 - TX
 * P9.22 - RX
 * P8.38 - RTSn (N/A on AM5729)
 * P8.37 - CTSn (N/A on AM5729)

/dev/bone/uart/3
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART3-00A0.dts AM3358 UART3 AM5729 N/A
 * P9.42 - TX

/dev/bone/uart/4
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART4-00A0.dts https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART4-RTSCTS-00A0.dts AM3358 UART4 AM5729 UART5
 * P9.13 - TX
 * P9.11 - RX
 * P8.33 - RTSn (N/A on AM5729)
 * P8.35 - CTSn (N/A on AM5729)

/dev/bone/uart/5
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART5-00A0.dts https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART5-RTSCTS-00A0.dts AM3358 UART5 AM5729 UART8
 * P8.37 - TX
 * P8.38 - RX
 * P8.32 - RTSn
 * P8.31 - CTSn

= CAN =

/dev/bone/can/0
AM3358 CAN0 AM5729 N/A
 * P9.19 - RX
 * P9.20 - TX

/dev/bone/can/1
AM3358 CAN1 AM5729 CAN2
 * P9.24 - RX
 * P9.26 - TX

= ADC = Work needs to be done to create these symlinks as well as handle major differences in the driver used for the ADC. Maybe just have the "okay" in here and more in the base tree?

/dev/bone/adc
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-ADC-00A0.dts
 * 0 - AM3358 in_voltage0_raw, AM5729 in_voltage0_raw
 * 1 - AM3358 in_voltage1_raw, AM5729 in_voltage1_raw
 * 2 - AM3358 in_voltage2_raw, AM5729 in_voltage3_raw
 * 3 - AM3358 in_voltage3_raw, AM5729 in_voltage2_raw
 * 4 - AM3358 in_voltage4_raw, AM5729 in_voltage7_raw
 * 5 - AM3358 in_voltage5_raw, AM5729 in_voltage6_raw
 * 6 - AM3358 in_voltage6_raw, AM5729 in_voltage4_raw

= PWM/TIMER =

/dev/bone/pwm/0
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-PWM0-00A0.dts AM3358 PWM0 AM5729 TIMER13/TIMER15
 * P9.22 - A
 * P9.21 - B

/dev/bone/pwm/1
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-PWM1-00A0.dts AM3358 PWM1 AM5279 PWM3
 * P9.14 - A
 * P9.16 - B

/dev/bone/pwm/2
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-PWM2-00A0.dts AM3358 PWM2 AM5729 PWM2
 * P8.19 - A
 * P8.13 - B

/dev/bone/timer/4
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-PWM-TIMER-P8.07.dts AM3358 TIMER4 AM5729 TIMER11
 * P8.7

/dev/bone/timer/5
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-PWM-TIMER-P8.09.dts AM3358 TIMER5 AM5729 TIMER14
 * P8.9

/dev/bone/timer/6
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-PWM-TIMER-P8.10.dts AM3358 TIMER6 AM5729 TIMER10
 * P8.10

/dev/bone/timer/7
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-PWM-TIMER-P8.08.dts AM3358 TIMER7 AM5729 TIMER12
 * P8.8

= MMC =

/dev/bone/mmc/2
TODO: need overlay. Note: On Black, this is used by the on-board eMMC. On AI, these pins are available. AM3358 MMC2 AM5729 MMC3
 * P8.21 - CLK
 * P8.20 - CMD
 * P8.25 - DAT0
 * P8.24 - DAT1
 * P8.5 - DAT2
 * P8.6 - DAT3
 * P8.23 - DAT4
 * P8.22 - DAT5
 * P8.4 - DAT7
 * P8.3 - DAT6

= LCD = TODO

= eQEP =

/dev/bone/eqep/0
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/bone_eqep0-00A0.dts AM3358 eQEP0 AM5729 eQEP3
 * P9.42 - A
 * P9.27 - B
 * P9.25 - STROBE (N/A on AI)
 * P9.41 - INDX (N/A on AI)

/dev/bone/eqep/1
AM3358 eQEP1 AM5729 eQEP1
 * P8.34 - A
 * P8.36 - B

/dev/bone/eqep/2
AM3358 eQEP2 AM5729 eQEP2
 * P8.12 - A
 * P8.11 - B

= McASP =

= PRU =

/dev/bone/pru/0.0
AM3358 PRU0 AM5729 PRUSS1, PRU0
 * P8.11
 * P8.12
 * P9.15 (N/A on AM3358)
 * P9.24 (N/A on AM5729)
 * P9.25 (pru/1.1 on AM5729)
 * P9.41 (pru/0.1 on AM5729)
 * P9.42 (pru/1.1 or pru2.0 on AM5279)
 * USR0 (N/A on AM3358)
 * USR2 (N/A on AM3358)
 * USR3 (N/A on AM3358)
 * USR4 (N/A on AM3358)

/dev/bone/pru/0.1
AM3358 PRU1 AM5279 PRUSS1, PRU1

/dev/bone/pru/1.0
AM3358 N/A AM5729 PRUSS2, PRU0

/dev/bone/pru/1.1
AM3358 N/A AM5729 PRUSS2, PRU1

= Methodology =

10-of-symlink.rules
ATTR{device/of_node/symlink}!="", \ ENV{OF_SYMLINK}="%s{device/of_node/symlink}"
 * 1) From: https://github.com/mvduin/py-uio/blob/master/etc/udev/rules.d/10-of-symlink.rules
 * 2) allow declaring a symlink for a device in DT

ENV{OF_SYMLINK}!="", ENV{DEVNAME}!="", \ SYMLINK+="%E{OF_SYMLINK}", \ TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/dev/%E{OF_SYMLINK}"

TBD
SUBSYSTEM=="gpio", ACTION=="add", TEST=="value", ATTR{label}!="sysfs", \ RUN+="/bin/mkdir -p /dev/gpio", \ RUN+="/bin/ln -sT '/sys/class/gpio/%k' /dev/gpio/%s{label}"
 * 1) Also courtesy of mvduin
 * 2) create symlinks for gpios exported to sysfs by DT

= References =