Difference between revisions of "Beagleboard:BeagleBone cape interface spec"

From eLinux.org
Jump to: navigation, search
(/dev/bone/spi/1.x)
(/dev/bone/can/2)
 
(49 intermediate revisions by the same user not shown)
Line 1: Line 1:
This is a list of symlink interfaces based on BeagleBone Cape header pins.
+
This is a list of symlink interfaces based on BeagleBone Cape header pins.<ref>[https://docs.google.com/spreadsheets/d/1fE-AsDZvJ-bBwzNBj1_sPDrutvEvsmARqFwvbw_HkrE/edit?usp=sharing Google drive with summary of expansion signals on various BeagleBoard.org designs]</ref><ref>[https://dev.ti.com/pinmux TI Pinmux Helper]</ref><ref>[[Beagleboard:Cape Expansion Headers]]</ref>
  
 
= I2C =
 
= I2C =
Line 20: Line 20:
 
* P9.19 - SCL
 
* P9.19 - SCL
 
* P9.20 - SDA
 
* P9.20 - SDA
 +
 +
=== /dev/bone/i2c/2a ===
 +
TODO<br>
 +
AM3358 I2C2<br>
 +
AM5729 ''N/A''
 +
* P9.21 - SCL
 +
* P9.22 - SDA
  
 
=== /dev/bone/i2c/3 ===
 
=== /dev/bone/i2c/3 ===
AM3358 N/A<br>
+
TODO<br>
 +
AM3358 ''N/A''<br>
 
AM5729 I2C3
 
AM5729 I2C3
 
* P9.24 - SCL
 
* P9.24 - SCL
Line 28: Line 36:
  
 
<!--
 
<!--
=== /dev/bone/i2c/4 ===
 
AM3358 I2C2<br>
 
AM5729 ''N/A''
 
* P9.21 - SCL
 
* P9.22 - SDA
 
 
 
=== /dev/bone/i2c/5 ===
 
=== /dev/bone/i2c/5 ===
 
AM3358 ''N/A''<br>
 
AM3358 ''N/A''<br>
Line 73: Line 75:
 
AM3358 SPI1<br>
 
AM3358 SPI1<br>
 
AM5729 SPI3
 
AM5729 SPI3
 +
* P9.31 - CLK
 
* P9.30 - MOSI
 
* P9.30 - MOSI
 
* P9.29 - MISO
 
* P9.29 - MISO
* P9.31 - CLK
 
  
 
=== /dev/bone/spi/1.0 ===
 
=== /dev/bone/spi/1.0 ===
Line 99: Line 101:
  
 
=== /dev/bone/uart/1 ===
 
=== /dev/bone/uart/1 ===
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART1-00A0.dts <br>
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART1-RTSCTS-00A0.dts <br>
 
AM3358 UART1<br>
 
AM3358 UART1<br>
 
AM5729 UART10
 
AM5729 UART10
 
* P9.24 - TX
 
* P9.24 - TX
 
* P9.26 - RX
 
* P9.26 - RX
 +
* P9.19 - RTSn
 +
* P9.20 - CTSn
 +
* P8.4 - RTSn (''N/A'' on AM3358)
 +
* P8.3 - CTSn (''N/A'' on AM3358)
  
 
=== /dev/bone/uart/2 ===
 
=== /dev/bone/uart/2 ===
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART2-00A0.dts <br>
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART2-RTSCTS-00A0.dts <br>
 
AM3358 UART2<br>
 
AM3358 UART2<br>
 
AM5729 UART3
 
AM5729 UART3
 
* P9.21 - TX
 
* P9.21 - TX
 
* P9.22 - RX
 
* P9.22 - RX
 +
* P8.38 - RTSn (''N/A'' on AM5729)
 +
* P8.37 - CTSn (''N/A'' on AM5729)
  
 
=== /dev/bone/uart/3 ===
 
=== /dev/bone/uart/3 ===
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART3-00A0.dts <br>
 
AM3358 UART3<br>
 
AM3358 UART3<br>
 
AM5729 ''N/A''
 
AM5729 ''N/A''
Line 116: Line 129:
  
 
=== /dev/bone/uart/4 ===
 
=== /dev/bone/uart/4 ===
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART4-00A0.dts <br>
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART4-RTSCTS-00A0.dts <br>
 
AM3358 UART4<br>
 
AM3358 UART4<br>
 
AM5729 UART5
 
AM5729 UART5
 
* P9.13 - TX
 
* P9.13 - TX
 
* P9.11 - RX
 
* P9.11 - RX
 +
* P8.33 - RTSn (''N/A'' on AM5729)
 +
* P8.35 - CTSn (''N/A'' on AM5729)
 +
* P8.6 - RTSn (''N/A'' on AM3358)
 +
* P8.5 - CTSn (''N/A'' on AM3358)
  
 
=== /dev/bone/uart/5 ===
 
=== /dev/bone/uart/5 ===
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART5-00A0.dts <br>
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-UART5-RTSCTS-00A0.dts <br>
 
AM3358 UART5<br>
 
AM3358 UART5<br>
 
AM5729 UART8
 
AM5729 UART8
 
* P8.37 - TX
 
* P8.37 - TX
 
* P8.38 - RX
 
* P8.38 - RX
 +
* P8.32 - RTSn
 +
* P8.31 - CTSn
  
 
= CAN =
 
= CAN =
 
=== /dev/bone/can/0 ===
 
=== /dev/bone/can/0 ===
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-CAN0-00A0.dts <br>
 
AM3358 CAN0<br>
 
AM3358 CAN0<br>
AM5729 N/A
+
AM5729 ''N/A''
 
* P9.19 - RX
 
* P9.19 - RX
 
* P9.20 - TX
 
* P9.20 - TX
  
 
=== /dev/bone/can/1 ===
 
=== /dev/bone/can/1 ===
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-CAN1-00A0.dts <br>
 
AM3358 CAN1<br>
 
AM3358 CAN1<br>
 
AM5729 CAN2
 
AM5729 CAN2
 
* P9.24 - RX
 
* P9.24 - RX
 
* P9.26 - TX
 
* P9.26 - TX
 +
 +
=== /dev/bone/can/2 ===
 +
TODO <br>
 +
AM3358 ''N/A''<br>
 +
AM5729 CAN1 (AI rev A2 and later)
 +
* P8.7 - proposed
 +
* P8.8 - proposed
  
 
= ADC =
 
= 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?
 
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 ===
+
=== /dev/bone/adc/''n'' ===
 
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-ADC-00A0.dts <br>
 
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-ADC-00A0.dts <br>
 
* 0 - AM3358 in_voltage0_raw, AM5729 in_voltage0_raw
 
* 0 - AM3358 in_voltage0_raw, AM5729 in_voltage0_raw
Line 153: Line 185:
 
* 6 - AM3358 in_voltage6_raw, AM5729 in_voltage4_raw
 
* 6 - AM3358 in_voltage6_raw, AM5729 in_voltage4_raw
  
= PWM/TIMER =
+
= PWM/TIMER/ECAP =
 
=== /dev/bone/pwm/0 ===
 
=== /dev/bone/pwm/0 ===
 
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-PWM0-00A0.dts <br>
 
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-PWM0-00A0.dts <br>
Line 198: Line 230:
 
AM5729 TIMER12
 
AM5729 TIMER12
 
* P8.8
 
* P8.8
 +
 +
=== /dev/bone/ecap/1 ===
 +
TODO<br>
 +
AM3358 ''N/A''<br>
 +
AM5729 eCAP1_in_PWM1_out
 +
* P8.15
 +
 +
=== /dev/bone/ecap/2 ===
 +
TODO<br>
 +
AM3358 ''N/A''<br>
 +
AM5729 eCAP2_in_PWM2_out
 +
* P8.14
 +
 +
=== /dev/bone/ecap/3 ===
 +
TODO<br>
 +
AM3358 ''N/A''<br>
 +
AM5729 eCAP3_in_PWM3_out
 +
* P8.04
  
 
= MMC =
 
= MMC =
 
=== /dev/bone/mmc/2 ===
 
=== /dev/bone/mmc/2 ===
 +
TODO: need overlay. Note: On Black, this is used by the on-board eMMC. On AI, these pins are available.<br>
 
AM3358 MMC2<br>
 
AM3358 MMC2<br>
 
AM5729 MMC3
 
AM5729 MMC3
Line 215: Line 266:
  
 
= LCD =
 
= LCD =
 +
TODO
  
 
= eQEP =
 
= eQEP =
 
=== /dev/bone/eqep/0 ===
 
=== /dev/bone/eqep/0 ===
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/bone_eqep0-00A0.dts <br>
 
AM3358 eQEP0<br>
 
AM3358 eQEP0<br>
 
AM5729 eQEP3
 
AM5729 eQEP3
 
* P9.42 - A
 
* P9.42 - A
 
* P9.27 - B
 
* P9.27 - B
* P9.25 - STROBE (AM3358-only)
+
* 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 ===
 
=== /dev/bone/eqep/1 ===
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/bone_eqep1-00A0.dts <br>
 
AM3358 eQEP1<br>
 
AM3358 eQEP1<br>
 
AM5729 eQEP1
 
AM5729 eQEP1
 
* P8.34 - A
 
* P8.34 - A
 
* P8.36 - B
 
* P8.36 - B
 +
* P9.21 - STROBE (''N/A'' on AM3358)
  
 
=== /dev/bone/eqep/2 ===
 
=== /dev/bone/eqep/2 ===
 +
https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/bone_eqep2b-00A0.dts <br>
 
AM3358 eQEP2<br>
 
AM3358 eQEP2<br>
 
AM5729 eQEP2
 
AM5729 eQEP2
 
* P8.12 - A
 
* P8.12 - A
 
* P8.11 - B
 
* 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 <br>
 +
AM3358 eQEP2<br>
 +
AM5729 ''N/A'
 +
* P8.41 - A
 +
* P8.42 - B
 +
* P8.40 - STROBE
 +
* P8.39 - INDEX
  
 
= McASP =
 
= 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.<ref>reference needed</ref>
 +
 +
=== /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.<br>
 +
TODO: provide overlay, since it is a different pinctrl mode.<br>
 +
AM3358 PRUSS<br>
 +
AM5729 PRUSS1
 +
* P8.15
 +
 +
=== /dev/bone/pru/0.0 ===
 +
TODO<br>
 +
AM3358 PRU0<br>
 +
AM5729 PRUSS1, PRU0
 +
{| class="wikitable"
 +
|-
 +
! PIN !! AM3358 !! AM5729
 +
|-
 +
| P8.11 || out 15 || I/O 4
 +
|-
 +
| P8.12 || out 14 || I/O 3
 +
|-
 +
| P8.15 || in 15 || see [[#/dev/bone/pru/0.1|pru/0.1]]
 +
|-
 +
| P8.16 || in 16 || see [[#/dev/bone/pru/0.1|pru/0.1]]
 +
|-
 +
| P8.17 || - || I/O 15
 +
|-
 +
| P9.15 || - || I/O 5
 +
|-
 +
| P9.24 || in 16 || -
 +
|-
 +
| P9.25 || I/O 7 || see [[#/dev/bone/pru/1.1|pru/1.1]]
 +
|-
 +
| P9.26 || see [[#/dev/bone/pru/0.1|pru0.1]] || I/O 17
 +
|-
 +
| P9.27 || I/O 5 || see [[#/dev/bone/pru/0.1|pru/0.1]]
 +
|-
 +
| P9.28 || I/O 3 || see [[#/dev/bone/pru/1.1|pru/1.1]]
 +
|-
 +
| P9.29 || I/O 1 || see [[#/dev/bone/pru/1.1|pru/1.1]]
 +
|-
 +
| P9.30 || I/O 2 || see [[#/dev/bone/pru/1.1|pru/1.1]]
 +
|-
 +
| P9.31 || I/O 0 || see [[#/dev/bone/pru/1.1|pru/1.1]]
 +
|-
 +
| P9.41 || I/O 6 || see [[#/dev/bone/pru/0.1|pru/0.1]]
 +
|-
 +
| P9.42 || I/O 4 || see [[#/dev/bone/pru/1.1|pru/1.1]] or [[#/deb/bone/pru/2.0|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<br>
 +
AM3358 PRU1<br>
 +
AM5279 PRUSS1, PRU1
 +
{| class="wikitable"
 +
|-
 +
! 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<br>
 +
AM3358 ''N/A''<br>
 +
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<br>
 +
AM3358 ''N/A''<br>
 +
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<br>
 +
For each of the pins with a GPIO, there should be a symlink that comes from the names
 +
*
  
 
= Methodology =  
 
= 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 ==
+
== udev rules <ref>[https://github.com/beagleboard/customizations/tree/master/etc/udev/rules.d BeagleBoard customizations udev rules]</ref>==
  
===[https://github.com/rcn-ee/repos/blob/master/bb-customizations/suite/stretch/debian/10-of-symlink.rules 10-of-symlink.rules]===
+
===10-of-symlink.rules<ref>[https://github.com/rcn-ee/repos/blob/master/bb-customizations/suite/stretch/debian/10-of-symlink.rules 10-of-symlink.rules]</ref>===
 
<pre>
 
<pre>
 
#From: https://github.com/mvduin/py-uio/blob/master/etc/udev/rules.d/10-of-symlink.rules
 
#From: https://github.com/mvduin/py-uio/blob/master/etc/udev/rules.d/10-of-symlink.rules
Line 259: Line 434:
 
# create symlinks for gpios exported to sysfs by DT
 
# create symlinks for gpios exported to sysfs by DT
 
SUBSYSTEM=="gpio", ACTION=="add", TEST=="value", ATTR{label}!="sysfs", \
 
SUBSYSTEM=="gpio", ACTION=="add", TEST=="value", ATTR{label}!="sysfs", \
         RUN+="/bin/mkdir -p /dev/gpio", \
+
         RUN+="/bin/mkdir -p /dev/bone/gpio", \
         RUN+="/bin/ln -sT '/sys/class/gpio/%k' /dev/gpio/%s{label}"
+
         RUN+="/bin/ln -sT '/sys/class/gpio/%k' /dev/bone/gpio/%s{label}"
 
</pre>
 
</pre>
 +
 +
= 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.
 +
 +
= References =
 +
<references />

Latest revision as of 05:53, 23 April 2020

This is a list of symlink interfaces based on BeagleBone Cape header pins.[1][2][3]

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/2a

TODO
AM3358 I2C2
AM5729 N/A

  • P9.21 - SCL
  • P9.22 - SDA

/dev/bone/i2c/3

TODO
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
  • P8.4 - RTSn (N/A on AM3358)
  • P8.3 - CTSn (N/A on AM3358)

/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)
  • P8.6 - RTSn (N/A on AM3358)
  • P8.5 - CTSn (N/A on AM3358)

/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

https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-CAN0-00A0.dts
AM3358 CAN0
AM5729 N/A

  • P9.19 - RX
  • P9.20 - TX

/dev/bone/can/1

https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-CAN1-00A0.dts
AM3358 CAN1
AM5729 CAN2

  • P9.24 - RX
  • P9.26 - TX

/dev/bone/can/2

TODO
AM3358 N/A
AM5729 CAN1 (AI rev A2 and later)

  • P8.7 - proposed
  • P8.8 - proposed

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

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

/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

/dev/bone/ecap/1

TODO
AM3358 N/A
AM5729 eCAP1_in_PWM1_out

  • P8.15

/dev/bone/ecap/2

TODO
AM3358 N/A
AM5729 eCAP2_in_PWM2_out

  • P8.14

/dev/bone/ecap/3

TODO
AM3358 N/A
AM5729 eCAP3_in_PWM3_out

  • P8.04

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 - 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 16 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.

References