Difference between revisions of "Beagleboard:BeagleBone cape interface spec"
Lorforlinux (talk | contribs) (→ADC) |
Lorforlinux (talk | contribs) (→MMC) |
||
Line 782: | Line 782: | ||
! BBBWL/BBB !! BBAI !! overlay | ! BBBWL/BBB !! BBAI !! overlay | ||
|- | |- | ||
− | | | + | | MMC2 || MMC3 |
|} | |} | ||
Revision as of 06:09, 22 August 2020
This is a list of symlink interfaces based on BeagleBone Cape header pins.[1][2][3]
Contents
LEDs
Bone LED pin uses gpio-leds driver and allows users to easily create compatible led nodes in overlays for BBBWL, BBB, and BBAI. For the definitions, you can see bbai-bone-buses.dtsi#L16 & bbb-bone-buses.dtsi#L16.
LED | Header pin | BBBWL/BBB | BBAI |
---|---|---|---|
/sys/class/leds/led_P8_03 | P8_03 | gpio1_6 | gpio1_24 |
/sys/class/leds/led_P8_04 | P8_04 | gpio1_7 | gpio1_25 |
/sys/class/leds/led_P8_05 | P8_05 | gpio1_2 | gpio7_1 |
/sys/class/leds/led_P8_06 | P8_06 | gpio1_3 | gpio7_2 |
/sys/class/leds/led_P8_07 | P8_07 | gpio2_2 | gpio6_5 |
/sys/class/leds/led_P8_08 | P8_08 | gpio2_3 | gpio6_6 |
/sys/class/leds/led_P8_09 | P8_09 | gpio2_5 | gpio6_18 |
/sys/class/leds/led_P8_10 | P8_10 | gpio2_4 | gpio6_4 |
/sys/class/leds/led_P8_11 | P8_11 | gpio1_13 | gpio3_11 |
/sys/class/leds/led_P8_12 | P8_12 | gpio1_12 | gpio3_10 |
/sys/class/leds/led_P8_13 | P8_13 | gpio0_23 | gpio4_11 |
/sys/class/leds/led_P8_14 | P8_14 | gpio0_26 | gpio4_13 |
/sys/class/leds/led_P8_15 | P8_15 | gpio1_15 | gpio4_3 |
/sys/class/leds/led_P8_16 | P8_16 | gpio1_14 | gpio4_29 |
/sys/class/leds/led_P8_17 | P8_17 | gpio0_27 | gpio8_18 |
/sys/class/leds/led_P8_18 | P8_18 | gpio2_1 | gpio4_9 |
/sys/class/leds/led_P8_19 | P8_19 | gpio0_22 | gpio4_10 |
/sys/class/leds/led_P8_20 | P8_20 | gpio1_31 | gpio6_30 |
/sys/class/leds/led_P8_21 | P8_21 | gpio1_30 | gpio6_29 |
/sys/class/leds/led_P8_22 | P8_22 | gpio1_5 | gpio1_23 |
/sys/class/leds/led_P8_23 | P8_23 | gpio1_4 | gpio1_22 |
/sys/class/leds/led_P8_24 | P8_24 | gpio1_1 | gpio7_0 |
/sys/class/leds/led_P8_25 | P8_25 | gpio1_0 | gpio6_31 |
/sys/class/leds/led_P8_26 | P8_26 | gpio1_29 | gpio4_28 |
/sys/class/leds/led_P8_27 | P8_27 | gpio2_22 | gpio4_23 |
/sys/class/leds/led_P8_28 | P8_28 | gpio2_24 | gpio4_19 |
/sys/class/leds/led_P8_29 | P8_29 | gpio2_23 | gpio4_22 |
/sys/class/leds/led_P8_30 | P8_30 | gpio2_25 | gpio4_20 |
/sys/class/leds/led_P8_31 | P8_31 | gpio0_10 | gpio8_14 |
/sys/class/leds/led_P8_32 | P8_32 | gpio0_11 | gpio8_15 |
/sys/class/leds/led_P8_33 | P8_33 | gpio0_9 | gpio8_13 |
/sys/class/leds/led_P8_34 | P8_34 | gpio2_17 | gpio8_11 |
/sys/class/leds/led_P8_35 | P8_35 | gpio0_8 | gpio8_12 |
/sys/class/leds/led_P8_36 | P8_36 | gpio2_16 | gpio8_10 |
/sys/class/leds/led_P8_37 | P8_37 | gpio2_14 | gpio8_8 |
/sys/class/leds/led_P8_38 | P8_38 | gpio2_15 | gpio8_9 |
/sys/class/leds/led_P8_39 | P8_39 | gpio2_12 | gpio8_6 |
/sys/class/leds/led_P8_40 | P8_40 | gpio2_13 | gpio8_7 |
/sys/class/leds/led_P8_41 | P8_41 | gpio2_10 | gpio8_4 |
/sys/class/leds/led_P8_42 | P8_42 | gpio2_11 | gpio8_5 |
/sys/class/leds/led_P8_43 | P8_43 | gpio2_8 | gpio8_2 |
/sys/class/leds/led_P8_44 | P8_44 | gpio2_9 | gpio8_3 |
/sys/class/leds/led_P8_45 | P8_45 | gpio2_6 | gpio8_0 |
/sys/class/leds/led_P8_46 | P8_46 | gpio2_7 | gpio8_1 |
/sys/class/leds/led_P9_11 | P9_11 | gpio0_30 | gpio8_17 |
/sys/class/leds/led_P9_12 | P9_12 | gpio1_28 | gpio5_0 |
/sys/class/leds/led_P9_13 | P9_13 | gpio0_31 | gpio6_12 |
/sys/class/leds/led_P9_14 | P9_14 | gpio1_18 | gpio4_25 |
/sys/class/leds/led_P9_15 | P9_15 | gpio1_16 | gpio3_12 |
/sys/class/leds/led_P9_16 | P9_16 | gpio1_19 | gpio4_26 |
/sys/class/leds/led_P9_17 | P9_17 | gpio0_5 | gpio7_17 |
/sys/class/leds/led_P9_18 | P9_18 | gpio0_4 | gpio7_16 |
/sys/class/leds/led_P9_19 | P9_19 | gpio0_13 | gpio7_3 |
/sys/class/leds/led_P9_20 | P9_20 | gpio0_12 | gpio7_4 |
/sys/class/leds/led_P9_21 | P9_21 | gpio0_3 | gpio3_3 |
/sys/class/leds/led_P9_22 | P9_22 | gpio0_2 | gpio6_19 |
/sys/class/leds/led_P9_23 | P9_23 | gpio1_17 | gpio7_11 |
/sys/class/leds/led_P9_24 | P9_24 | gpio0_15 | gpio6_15 |
/sys/class/leds/led_P9_25 | P9_25 | gpio3_21 | gpio6_17 |
/sys/class/leds/led_P9_26 | P9_26 | gpio0_14 | gpio6_14 |
/sys/class/leds/led_P9_27 | P9_27 | gpio3_19 | gpio4_15 |
/sys/class/leds/led_P9_28 | P9_28 | gpio3_17 | gpio4_17 |
/sys/class/leds/led_P9_29 | P9_29 | gpio3_15 | gpio5_11 |
/sys/class/leds/led_P9_30 | P9_30 | gpio3_16 | gpio5_12 |
/sys/class/leds/led_P9_31 | P9_31 | gpio3_14 | gpio5_10 |
/sys/class/leds/led_P9_41 | P9_41 | gpio0_20 | gpio6_20 |
/sys/class/leds/led_P9_91 | P9_91 | gpio3_20 | ❌ |
/sys/class/leds/led_P9_42 | P9_42 | gpio0_7 | gpio4_18 |
/sys/class/leds/led_P9_92 | P9_92 | gpio3_18 | ❌ |
/sys/class/leds/led_A15 | A15 | gpio0_19 | ❌ |
I2C
I2C bone bus nodes allow creating compatible overlays for BBBWl, BBB, & BBAI. For the definitions, you can see bbai-bone-buses.dtsi#L388 & bbb-bone-buses.dtsi#L403.
Bone bus | BBBWL/BBB | BBAI | SCL | SDA | Overlay |
---|---|---|---|---|---|
/dev/bone/i2c/0 | I2C0 | I2C1 | ❌ (On-board) | ||
/dev/bone/i2c/1 | I2C1 | I2C5 | P9.17 | P9.18 | BONE-I2C1.dts |
/dev/bone/i2c/2 | I2C2 | I2C4 | P9.19 | P9.20 | BONE-I2C2.dts |
/dev/bone/i2c/2a | I2C2 | N/A | P9.21 | P9.22 | BONE-I2C2A.dts |
/dev/bone/i2c/3 | I2C1 | I2C3 | P9.24 | P9.26 | BONE-I2C3.dts |
SPI
SPI bone bus nodes allow creating compatible overlays for BBBWl, BBB, & BBAI. For the definitions, you can see bbai-bone-buses.dtsi#L406 & bbb-bone-buses.dtsi#L423.
Bone bus | BBBWL/BBB | BBAI | MOSI | MISO | CLK | CS | Overlay |
---|---|---|---|---|---|---|---|
/dev/bone/spi/0.x | SPI0 | SPI2 | P9.18 | P9.21 | P9.22 | P9.17 (CS0) | BONE-SPI0_0.dts |
/dev/bone/spi/1.x | SPI1 | SPI3 | P9.30 | P9.29 | P9.31 |
|
UART
UART bone bus nodes allow creating compatible overlays for BBBWl, BBB, & BBAI. For the definitions, you can see bbai-bone-buses.dtsi#L367 & bbb-bone-buses.dtsi#L382.
Bone bus | BBBWL/BBB | BBAI | TX | RX | RTSn | CTSn | Overlays |
---|---|---|---|---|---|---|---|
/dev/bone/uart/0 | UART0 | UART1 | ❌ (console debug header pins) | ||||
/dev/bone/uart/1 | UART1 | UART10 | P9.24 | P9.26 |
|
|
BONE-UART1.dts |
/dev/bone/uart/2 | UART2 | UART3 | P9.21 | P9.22 |
|
|
BONE-UART2.dts |
/dev/bone/uart/3 | UART3 | ❌ | P9.42 | ❌ | ❌ | ❌ | BONE-UART3.dts |
/dev/bone/uart/4 | UART4 | UART5 | P9.13 | P9.11 |
|
|
BONE-UART4.dts |
/dev/bone/uart/5 | UART5 | UART8 | P8.37 | P8.38 | P8.32 | P8.31 | BONE-UART5.dts |
CAN
CAN bone bus nodes allow creating compatible overlays for BBBWl, BBB, & BBAI. For the definitions, you can see bbai-bone-buses.dtsi#L440 & bbb-bone-buses.dtsi#L457.
BBBWL/BBB | BBAI | TX | RX | Overlays |
---|---|---|---|---|
CAN0 | ❌ | P9.20 | P9.19 | BONE-CAN0.dts |
CAN1 | CAN2 | P9.26 | P9.24 | BONE-CAN1.dts |
❌ | CAN1 (rev A2 and later) | P8.8 | P8.7 | TODO |
ADC
BBBWL/BBB | BBAI | overlay |
---|---|---|
Internal | External (STMPE811) | BONE-ADC.dts |
Index | Header pin | BBBWL/BBB | BBAI |
---|---|---|---|
0 | P9_39 | in_voltage0_raw | in_voltage0_raw |
1 | P9_40 | in_voltage1_raw | in_voltage1_raw |
2 | P9_37 | in_voltage2_raw | in_voltage3_raw |
3 | P9_38 | in_voltage3_raw | in_voltage2_raw |
4 | P9_33 | in_voltage4_raw | in_voltage7_raw |
5 | P9_36 | in_voltage5_raw | in_voltage6_raw |
6 | P9_35 | in_voltage6_raw | in_voltage4_raw |
PWM
PWM bone bus nodes allow creating compatible overlays for BBBWl, BBB, & BBAI. For the definitions, you can see bbai-bone-buses.dtsi#L415 & bbb-bone-buses.dtsi#L432
Bone bus | BBBWL/BBB | BBAI | A | B | Overlay |
---|---|---|---|---|---|
/dev/bone/pwm/0 | PWM0 | ❌ | P9.22 | P9.21 | BONE-PWM0.dts |
/dev/bone/pwm/1 | PWM1 | PWM3 | P9.14 | P9.16 | BONE-PWM1.dts |
/dev/bone/pwm/2 | PWM2 | PWM2 | P8.19 | P8.13 | BONE-PWM2.dts |
TIMER PWM
TIMER PWM bone bus uses ti,omap-dmtimer-pwm driver, and timer nodes that allow creating compatible overlays for BBBWl, BBB, & BBAI. For the timer node definitions, you can see bbai-bone-buses.dtsi#L449 & bbb-bone-buses.dtsi#L466.
Bone bus | Header pin | BBBWL/BBB | BBAI | overlay |
---|---|---|---|---|
/sys/bus/platform/devices/bone_timer_pwm_0/ | P8.10 | timer6 | timer10 | BONE-TIMER_PWM_0.dts |
/sys/bus/platform/devices/bone_timer_pwm_1/ | P8.07 | timer4 | timer11 | BONE-TIMER_PWM_1.dts |
/sys/bus/platform/devices/bone_timer_pwm_2/ | P8.08 | timer7 | timer12 | BONE-TIMER_PWM_2.dts |
/sys/bus/platform/devices/bone_timer_pwm_3/ | P9.21 | ❌ | timer13 | BONE-TIMER_PWM_3.dts |
/sys/bus/platform/devices/bone_timer_pwm_4/ | P8.09 | timer5 | timer14 | BONE-TIMER_PWM_4.dts |
/sys/bus/platform/devices/bone_timer_pwm_5/ | P9.22 | ❌ | timer15 | BONE-TIMER_PWM_5.dts |
eCAP
Bone bus | Header pin | peripheral | overlay |
---|---|---|---|
/sys/bus/platform/drivers/ecap/48302100.ecap | P9.42 | eCAP0_in_PWM0_out | BBB-ECAP0.dts |
/sys/bus/platform/drivers/ecap/48304100.ecap | P9.28 | eCAP2_in_PWM2_out | BBB-ECAP2.dts |
Bone bus | Header pin | peripheral | overlay |
---|---|---|---|
/sys/bus/platform/drivers/ecap/4843e100.ecap | P8.15 | eCAP1_in_PWM1_out | BBAI-ECAP1.dts |
/sys/bus/platform/drivers/ecap/48440100.ecap | P8.14 | eCAP2_in_PWM2_out | BBAI-ECAP2.dts |
/sys/bus/platform/drivers/ecap/48440100.ecap | P8.20 | eCAP2_in_PWM2_out | BBAI-ECAP2A.dts |
/sys/bus/platform/drivers/ecap/48442100.ecap | P8.04 | eCAP3_in_PWM3_out | BBAI-ECAP3.dts |
/sys/bus/platform/drivers/ecap/48442100.ecap | P8.26 | eCAP3_in_PWM3_out | BBAI-ECAP3A.dts |
MMC
BBBWL/BBB | BBAI | overlay |
---|---|---|
MMC2 | MMC3 |
Header pin | Description |
---|---|
P8.3 | DAT6 |
P8.4 | DAT7 |
P8.5 | DAT2 |
P8.6 | DAT3 |
P8.20 | CMD |
P8.21 | CLK |
P8.22 | DAT5 |
P8.23 | DAT4 |
P8.24 | DAT1 |
P8.25 | DAT0 |
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 - INDEX (N/A on AI)
- P8.6 - STROBE (N/A on AM3358)
- P8.5 - INDEX (N/A on AM3358)
/dev/bone/eqep/1
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/bone_eqep1-00A0.dts
AM3358 eQEP1
AM5729 eQEP1
- P8.34 - A
- P8.36 - B
- P9.21 - STROBE (N/A on AM3358)
/dev/bone/eqep/2
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/bone_eqep2b-00A0.dts
AM3358 eQEP2
AM5729 eQEP2
- P8.12 - A
- P8.11 - B
- P8.15 - STROBE on AM3358 only
- P8.18 - STROBE on AM5729 only
- P8.16 - INDEX on AM3358 only
- P9.15 - INDEX on AM5729 only
/dev/bone/eqep/2a
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/bone_eqep2-00A0.dts
AM3358 eQEP2
AM5729 N/A'
- P8.41 - A
- P8.42 - B
- P8.40 - STROBE
- P8.39 - INDEX
McASP
TODO
PRU
The overlay situation for PRUs is a bit more complex than with other peripherals. The mechanism for loading, starting and stopping the PRUs can go through either UIO or RemoteProc.[4]
/dev/bone/pru/0.0 (eCAP)
Not sure where to put this as it doesn't really have it's own Linux control interface, just an overlay.
TODO: provide overlay, since it is a different pinctrl mode.
AM3358 PRUSS
AM5729 PRUSS1
- P8.15
/dev/bone/pru/0.0
TODO
AM3358 PRU0
AM5729 PRUSS1, PRU0
PIN | AM3358 | AM5729 |
---|---|---|
P8.11 | out 15 | I/O 4 |
P8.12 | out 14 | I/O 3 |
P8.15 | in 15 | see pru/0.1 |
P8.16 | in 14 | see pru/0.1 |
P8.17 | - | I/O 15 |
P9.15 | - | I/O 5 |
P9.24 | in 16 | - |
P9.25 | I/O 7 | see pru/1.1 |
P9.26 | see pru0.1 | I/O 17 |
P9.27 | I/O 5 | see pru/0.1 |
P9.28 | I/O 3 | see pru/1.1 |
P9.29 | I/O 1 | see pru/1.1 |
P9.30 | I/O 2 | see pru/1.1 |
P9.31 | I/O 0 | see pru/1.1 |
P9.41 | I/O 6 | see pru/0.1 |
P9.42 | I/O 4 | see pru/1.1 or pru/2.0 |
USR0 | - | I/O 10 |
USR2 | - | I/O 8 |
USR3 | - | I/O 7 |
USR4 | - | I/O 0 |
/dev/bone/pru/0.1
TODO
AM3358 PRU1
AM5279 PRUSS1, PRU1
PIN | AM3358 | AM5729 |
---|---|---|
P8.13 | - | I/O 7 |
P8.14 | - | I/O 9 |
P8.15 | - | I/O 16 |
P8.16 | - | I/O 18 |
/dev/bone/pru/1.0
TODO
AM3358 N/A
AM5729 PRUSS2, PRU0
- P8.3 - I/O 10 (N/A on AM3358)
- P8.4 - I/O 11 (N/A on AM3358)
- P8.5 - I/O 5 (N/A on AM3358)
- P8.6 - I/O 7 (N/A on AM3358)
- P8.8 - I/O 20 (N/A on AM3358)
/dev/bone/pru/1.1
TODO
AM3358 N/A
AM5729 PRUSS2, PRU1
- P8.7 - I/O 16 (N/A on AM3358)
- P8.9 - I/O 6 (N/A on AM3358)
- P8.10 - I/O 15 (N/A on AM3358)
GPIO
TODO
For each of the pins with a GPIO, there should be a symlink that comes from the names
Methodology
The methodology for applied in the kernel and software images to expose the software interfaces is to be documented here. The most fundamental elements are the device tree entries, including overlays, and udev rules.
Device Trees
udev rules [5]
10-of-symlink.rules[6]
#From: https://github.com/mvduin/py-uio/blob/master/etc/udev/rules.d/10-of-symlink.rules # allow declaring a symlink for a device in DT ATTR{device/of_node/symlink}!="", \ ENV{OF_SYMLINK}="%s{device/of_node/symlink}" ENV{OF_SYMLINK}!="", ENV{DEVNAME}!="", \ SYMLINK+="%E{OF_SYMLINK}", \ TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/dev/%E{OF_SYMLINK}"
TBD
#Also courtesy of mvduin # create symlinks for gpios exported to sysfs by DT SUBSYSTEM=="gpio", ACTION=="add", TEST=="value", ATTR{label}!="sysfs", \ RUN+="/bin/mkdir -p /dev/bone/gpio", \ RUN+="/bin/ln -sT '/sys/class/gpio/%k' /dev/bone/gpio/%s{label}"
Verification
TODO: The steps used to verify all of these configurations is to be documented here. It will serve to document what has been tested, how to reproduce the configurations, and how to verify each major triannual release. All faults will be documented in the issue tracker.