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
AM3358 I2C1 AM5729 I2C5
 * P9.17 - SCL
 * P9.18 - SDA

/dev/bone/i2c/2
AM3358 I2C2 AM5729 I2C4
 * P9.19 - SCL
 * P9.20 - SDA

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

= SPI =

/dev/bone/spi/0.x
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
AM3358 SPI1 AM5729 SPI3
 * P9.30 - MOSI
 * P9.29 - MISO
 * P9.31 - CLK

/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
AM3358 UART1 AM5729 UART10
 * P9.24 - TX
 * P9.26 - RX

/dev/bone/uart/2
AM3358 UART2 AM5729 UART3
 * P9.21 - TX
 * P9.22 - RX

/dev/bone/uart/3
AM3358 UART3 AM5729 N/A
 * P9.42 - TX

/dev/bone/uart/4
AM3358 UART4 AM5729 UART5
 * P9.13 - TX
 * P9.11 - RX

/dev/bone/uart/5
AM3358 UART5 AM5729 UART8
 * P8.37 - TX
 * P8.38 - RX

= 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 =

/dev/bone/adc/0

 * AIN0 - AM3358 in_voltage0_raw, AM5729 in_voltage0_raw
 * AIN1 - AM3358 in_voltage1_raw, AM5729 in_voltage1_raw
 * AIN2 - AM3358 in_voltage2_raw, AM5729 in_voltage3_raw
 * AIN3 - AM3358 in_voltage3_raw, AM5729 in_voltage2_raw
 * AIN4 - AM3358 in_voltage4_raw, AM5729 in_voltage7_raw
 * AIN5 - AM3358 in_voltage5_raw, AM5729 in_voltage6_raw
 * AIN6 - AM3358 in_voltage6_raw, AM5729 in_voltage4_raw

= PWM/TIMER =

/dev/bone/timer/0
AM3358 TIMER4 AM5729 TIMER11
 * P8.7

/dev/bone/timer/1
AM3358 TIMER5 AM5729 TIMER14
 * P8.9

/dev/bone/timer/2
AM3358 TIMER6 AM5729 TIMER10
 * P8.10

/dev/bone/timer/3
AM3358 TIMER7 AM5729 TIMER12
 * P8.8

= MMC =

/dev/bone/mmc/2
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 =

= eQEP =

/dev/bone/eqep/0
AM3358 eQEP0 AM5729 eQEP3
 * P9.42 - A
 * P9.27 - B
 * P9.25 - STROBE (AM3358-only)

/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 =

= 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