From dbef778bd09303f1033b19349c05688fb136cc9d Mon Sep 17 00:00:00 2001 From: Deepak Khatri <deepaklorkhatri7@gmail.com> Date: Mon, 18 Jul 2022 13:56:49 -0400 Subject: [PATCH] Add cape interface spec --- _static/css/custom.css | 23 +- support/cape-interface-spec.rst | 820 ++++++++++++++++++ support/index.rst | 1 + .../tables/BeagleBone cape interface spec.ods | Bin 0 -> 23770 bytes .../BeagleBone-Cape-header-definition.csv | 27 + support/tables/Bone-LEDs-Overlays.csv | 3 + support/tables/Bone-LEDs.csv | 78 ++ 7 files changed, 932 insertions(+), 20 deletions(-) create mode 100644 support/cape-interface-spec.rst create mode 100644 support/tables/BeagleBone cape interface spec.ods create mode 100644 support/tables/BeagleBone-Cape-header-definition.csv create mode 100644 support/tables/Bone-LEDs-Overlays.csv create mode 100644 support/tables/Bone-LEDs.csv diff --git a/_static/css/custom.css b/_static/css/custom.css index 1f6e12d0..19fa99ff 100644 --- a/_static/css/custom.css +++ b/_static/css/custom.css @@ -17,12 +17,11 @@ max-width: 480px; } -@media only screen and (min-width: 769px) { - .wy-nav-content { - max-width: 915px; - } +.wy-nav-content { + max-width: 100%; } + .wy-side-nav-search { background-color: #25282b; background-color: #25282b; @@ -38,22 +37,6 @@ background-color: #25282b; } -/* Table display tweaks */ - -.rst-content table.docutils, -.wy-table-bordered-all td, -.rst-content table.docutils td, -.wy-table thead th, -.rst-content table.docutils thead th, -.rst-content table.field-list thead th { - border-color: var(--code-border-color); -} - -.wy-table-odd td, -.wy-table-striped tr:nth-child(2n-1) td, -.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td { - background-color: var(--table-row-odd-background-color); -} /* Override table no-wrap */ /* The first column cells are not verbose, no need to wrap them */ diff --git a/support/cape-interface-spec.rst b/support/cape-interface-spec.rst new file mode 100644 index 00000000..d970cbf3 --- /dev/null +++ b/support/cape-interface-spec.rst @@ -0,0 +1,820 @@ +.. _beaglebone-cape-interface-spec: + +BeagleBone cape interface spec +############################### + +This page is a replica of `BeagleBone cape interface spec <https://elinux.org/Beagleboard:BeagleBone_cape_interface_spec>`_ page on elinux. + +See `this <https://beagleboard.org/blog/2022-03-31-device-tree-supporting-similar-boards-the-beaglebone-example>`_ blog post on BeagleBoard.org +for an introduction on Device Tree: Supporting Similar Boards - The BeagleBone Example. +`This <https://docs.google.com/spreadsheets/d/1fE-AsDZvJ-bBwzNBj1_sPDrutvEvsmARqFwvbw_HkrE/edit?usp=sharing>`_ +spreadsheet provides a summary of expansion header signals on various BeagleBoard.org board designs. +`This <https://elinux.org/Beagleboard:Cape_Expansion_Headers>`_ provides information on Cape Expansion Headers for BeagleBone designs. + +.. Note:: Below, when mentioning "Black", this is true for all AM3358-based BeagleBone boards. "AI" is AM5729-based. "AI-64" is TDA4VM-based. + + +.. table:: Overall + + +-----------------------------------------------+-----+------------------------------------+ + | .. centered:: P8 | | .. centered:: P8 | + +===============+=====+======+==================+=====+===========+=====+======+===========+ + | Functions | odd | even | Functions | | Functions | odd | even | Functions | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | USB D+ | E1 | E2 | USB D- | | - | - | - | - | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | 5V OUT | E3 | E4 | GND | | - | - | - | - | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | GND | 1 | 2 | GND | | GND | 1 | 2 | GND | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | 3V3 OUT | 3 | 4 | 3V3 OUT | | D M | 3 | 4 | D M | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | 5V IN | 5 | 6 | 5V IN | | D M | 5 | 6 | D M | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | 5V OUT | 7 | 8 | 5V OUT | | C2r D | 7 | 8 | C2t D | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | PWR BUT | 9 | 10 | RESET | | D | 9 | 10 | D | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D U4r | 11 | 12 | D | | D P0o | 11 | 12 | D Q2a P0o | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D U4t | 13 | 14 | D E1a | | D E2b | 13 | 14 | D | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D | 15 | 16 | D E1b | | D P0i | 15 | 16 | D P0i | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D I1c S00 | 17 | 18 | D I1d S0o | | D | 17 | 18 | D | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | C0r D I2c | 19 | 20 | C0t D I2d | | D E2a | 19 | 20 | D M P1 | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D E0b S0i U2t | 21 | 22 | D E0a S0c U2r | | D M P1 | 21 | 22 | D M Q2b | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D S01 | 23 | 24 | C1r D I3c U1t | | D M | 23 | 24 | D M | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D P0 | 25 | 26 | C1t D I3d U1r | | D M | 25 | 26 | D | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D P0 Q0b | 27 | 28 | D P0 S10 | | D L P1 | 27 | 28 | D L P1 | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D E S1i P0 | 29 | 30 | D P0 S1o | | D L P1 | 29 | 30 | D L P1 | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D E S1c P0 | 31 | 32 | ADC VDD | | D L | 31 | 32 | D L | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | A4 | 33 | 34 | ADC GND | | D L Q1b | 33 | 34 | D E L | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | A6 | 35 | 36 | A5 | | D L Q1a | 35 | 36 | D E L | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | A2 | 37 | 38 | A3 | | D L U5t | 37 | 38 | D L U5r | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | A0 | 39 | 40 | A1 | | D L P1 | 39 | 40 | D L P1 | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | D P0 | 41 | 42 | D Q0a S11 U3t P0 | | D L P1 | 41 | 42 | D L P1 | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | GND | 43 | 44 | GND | | D L P1 | 43 | 44 | D L P1 | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + | GND | 45 | 46 | GND | | D E L P1 | 45 | 46 | D E L P1 | + +---------------+-----+------+------------------+-----+-----------+-----+------+-----------+ + +* A: ADC +* C: CAN +* D: Digital GPIO +* E: EHRPWM +* I: I2C +* L: LCD +* M: MMC/SDIO +* P: PRU +* Q: eQEP +* S: SPI +* U: UART + +LEDs +------ + +The compatibility layer comes with simple reference nodes for attaching LEDs to any gpio pin. The format followed for these nodes is **led_P8_## / led_P9_##**. The **gpio-leds** driver is used by these reference nodes internally and allows users to easily create compatible led nodes in overlays for Black, AI and AI-64. For the definitions, you can see `bbai-bone-buses.dtsi#L16 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L16>`_ & `bbb-bone-buses.dtsi#L16 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L16>`_. + +Example overlays +***************** + +.. table:: Bone LEDs Overlays + + +---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Header | Pin | Overlay | + +=========+======+=======================================================================================================================================================+ + | P8 | 3 | `BONE-LED_P8_03.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BONE-LED_P8_03.dts>`_ | + +---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ + | P9 | 11 | `BONE-LED_P9_11.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BONE-LED_P9_11.dts>`_ | + +---------+------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Definitions +************ + +.. table:: Bone LEDs + + +----------------------------+-------------+----------+-----------+-----------+ + | LED | Header pin | Black | AI | AI-64 | + +============================+=============+==========+===========+===========+ + | /sys/class/leds/led_P8_03 | P8_03 | gpio1_6 | gpio1_24 | gpio0_20 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_04 | P8_04 | gpio1_7 | gpio1_25 | gpio0_48 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_05 | P8_05 | gpio1_2 | gpio7_1 | gpio0_33 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_06 | P8_06 | gpio1_3 | gpio7_2 | gpio0_34 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_07 | P8_07 | gpio2_2 | gpio6_5 | gpio0_15 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_08 | P8_08 | gpio2_3 | gpio6_6 | gpio0_14 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_09 | P8_09 | gpio2_5 | gpio6_18 | gpio0_17 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_10 | P8_10 | gpio2_4 | gpio6_4 | gpio0_16 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_11 | P8_11 | gpio1_13 | gpio3_11 | gpio0_60 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_12 | P8_12 | gpio1_12 | gpio3_10 | gpio0_59 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_13 | P8_13 | gpio0_23 | gpio4_11 | gpio0_89 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_14 | P8_14 | gpio0_26 | gpio4_13 | gpio0_75 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_15 | P8_15 | gpio1_15 | gpio4_3 | gpio0_61 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_16 | P8_16 | gpio1_14 | gpio4_29 | gpio0_62 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_17 | P8_17 | gpio0_27 | gpio8_18 | gpio0_3 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_18 | P8_18 | gpio2_1 | gpio4_9 | gpio0_4 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_19 | P8_19 | gpio0_22 | gpio4_10 | gpio0_88 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_20 | P8_20 | gpio1_31 | gpio6_30 | gpio0_76 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_21 | P8_21 | gpio1_30 | gpio6_29 | gpio0_30 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_22 | P8_22 | gpio1_5 | gpio1_23 | gpio0_5 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_23 | P8_23 | gpio1_4 | gpio1_22 | gpio0_31 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_24 | P8_24 | gpio1_1 | gpio7_0 | gpio0_6 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_25 | P8_25 | gpio1_0 | gpio6_31 | gpio0_35 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_26 | P8_26 | gpio1_29 | gpio4_28 | gpio0_51 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_27 | P8_27 | gpio2_22 | gpio4_23 | gpio0_71 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_28 | P8_28 | gpio2_24 | gpio4_19 | gpio0_72 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_29 | P8_29 | gpio2_23 | gpio4_22 | gpio0_73 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_30 | P8_30 | gpio2_25 | gpio4_20 | gpio0_74 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_31 | P8_31 | gpio0_10 | gpio8_14 | gpio0_32 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_32 | P8_32 | gpio0_11 | gpio8_15 | gpio0_26 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_33 | P8_33 | gpio0_9 | gpio8_13 | gpio0_25 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_34 | P8_34 | gpio2_17 | gpio8_11 | gpio0_7 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_35 | P8_35 | gpio0_8 | gpio8_12 | gpio0_24 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_36 | P8_36 | gpio2_16 | gpio8_10 | gpio0_8 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_37 | P8_37 | gpio2_14 | gpio8_8 | gpio0_106 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_38 | P8_38 | gpio2_15 | gpio8_9 | gpio0_105 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_39 | P8_39 | gpio2_12 | gpio8_6 | gpio0_69 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_40 | P8_40 | gpio2_13 | gpio8_7 | gpio0_70 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_41 | P8_41 | gpio2_10 | gpio8_4 | gpio0_67 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_42 | P8_42 | gpio2_11 | gpio8_5 | gpio0_68 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_43 | P8_43 | gpio2_8 | gpio8_2 | gpio0_65 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_44 | P8_44 | gpio2_9 | gpio8_3 | gpio0_66 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_45 | P8_45 | gpio2_6 | gpio8_0 | gpio0_79 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P8_46 | P8_46 | gpio2_7 | gpio8_1 | gpio0_80 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_11 | P9_11 | gpio0_30 | gpio8_17 | gpio0_1 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_12 | P9_12 | gpio1_28 | gpio5_0 | gpio0_45 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_13 | P9_13 | gpio0_31 | gpio6_12 | gpio0_2 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_14 | P9_14 | gpio1_18 | gpio4_25 | gpio0_93 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_15 | P9_15 | gpio1_16 | gpio3_12 | gpio0_47 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_16 | P9_16 | gpio1_19 | gpio4_26 | gpio0_94 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_17 | P9_17 | gpio0_5 | gpio7_17 | gpio0_28 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_18 | P9_18 | gpio0_4 | gpio7_16 | gpio0_40 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_19 | P9_19 | gpio0_13 | gpio7_3 | gpio0_78 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_20 | P9_20 | gpio0_12 | gpio7_4 | gpio0_77 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_21 | P9_21 | gpio0_3 | gpio3_3 | gpio0_39 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_22 | P9_22 | gpio0_2 | gpio6_19 | gpio0_38 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_23 | P9_23 | gpio1_17 | gpio7_11 | gpio0_10 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_24 | P9_24 | gpio0_15 | gpio6_15 | gpio0_13 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_25 | P9_25 | gpio3_21 | gpio6_17 | gpio0_127 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_26 | P9_26 | gpio0_14 | gpio6_14 | gpio0_12 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_27 | P9_27 | gpio3_19 | gpio4_15 | gpio0_46 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_28 | P9_28 | gpio3_17 | gpio4_17 | gpio1_11 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_29 | P9_29 | gpio3_15 | gpio5_11 | gpio0_53 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_30 | P9_30 | gpio3_16 | gpio5_12 | gpio0_44 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_31 | P9_31 | gpio3_14 | gpio5_10 | gpio0_52 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_33 | P9_33 | NA | NA | gpio0_50 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_35 | P9_35 | NA | NA | gpio0_55 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_36 | P9_36 | NA | NA | gpio0_56 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_37 | P9_37 | NA | NA | gpio0_57 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_38 | P9_38 | NA | NA | gpio0_58 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_39 | P9_39 | NA | NA | gpio0_54 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_40 | P9_40 | NA | NA | gpio0_81 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_41 | P9_41 | gpio0_20 | gpio6_20 | gpio1_0 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_91 | P9_91 | gpio3_20 | NA | NA | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_42 | P9_42 | gpio0_7 | gpio4_18 | gpio0_123 | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_P9_92 | P9_92 | gpio3_18 | NA | NA | + +----------------------------+-------------+----------+-----------+-----------+ + | /sys/class/leds/led_A15 | A15 | gpio0_19 | NA | NA | + +----------------------------+-------------+----------+-----------+-----------+ + +I2C +---- + +Compatibility layer provides simple I2C bone bus nodes for creating compatible overlays for Black, AI and AI-64. The format followed for these nodes is '''bone_i2c_#'''. For the definitions, you can see `bbai-bone-buses.dtsi#L388 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L388>`_ & `bbb-bone-buses.dtsi#L403 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L403>`_. + +.. table:: Bone bus I2C + + +------------------+--------------+--------+-------+------------+-----------------+--------+-----------------------------------------------------------------------------------------------------------+ + | SYSFS | DT symbol | Black | AI | AI-64 | SCL | SDA | Overlay | + +==================+==============+========+=======+============+=================+========+===========================================================================================================+ + | /dev/bone/i2c/0 | bone_i2c_0 | I2C0 | I2C1 | TBD | .. centered:: NA (On-board) | + +------------------+--------------+--------+-------+------------+-----------------+--------+-----------------------------------------------------------------------------------------------------------+ + | /dev/bone/i2c/1 | bone_i2c_1 | I2C1 | I2C5 | MAIN_I2C6 | P9.17 | P9.18 | `BONE-I2C1.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_i2c/src/arm/BONE-I2C1.dts>`_ | + +------------------+--------------+--------+-------+------------+-----------------+--------+-----------------------------------------------------------------------------------------------------------+ + | /dev/bone/i2c/2 | bone_i2c_2 | I2C2 | I2C4 | MAIN_I2C3 | P9.19 | P9.20 | `BONE-I2C2.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_i2c/src/arm/BONE-I2C2.dts>`_ | + +------------------+--------------+--------+-------+------------+-----------------+--------+-----------------------------------------------------------------------------------------------------------+ + | /dev/bone/i2c/2a | bone_i2c_2a | I2C2 | N/A | TBD | P9.21 | P9.22 | `BONE-I2C2A.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_i2c/src/arm/BONE-I2C2A.dts>`_ | + +------------------+--------------+--------+-------+------------+-----------------+--------+-----------------------------------------------------------------------------------------------------------+ + | /dev/bone/i2c/3 | bone_i2c_3 | I2C1 | I2C3 | MAIN_I2C4 | P9.24 | P9.26 | `BONE-I2C3.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_i2c/src/arm/BONE-I2C3.dts>`_ | + +------------------+--------------+--------+-------+------------+-----------------+--------+-----------------------------------------------------------------------------------------------------------+ + + +SPI +----- + +SPI bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see `bbai-bone-buses.dtsi#L406 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L406>`_ & `bbb-bone-buses.dtsi#L423 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L423>`_. + +.. table:: Bone bus SPI + + +--------------------+------------+--------+-------+------------+--------+--------+--------+---------------------------------------+--------------------------------------------------------------------------------------------------------------+ + | Bone bus | DT symbol | Black | AI | AI-64 | SDO | SDI | CLK | CS | Overlay | + +====================+============+========+=======+============+========+========+========+=======================================+==============================================================================================================+ + | /dev/bone/spi/0.x | bone_spi_0 | SPI0 | SPI2 | MAIN_SPI6 | P9.18 | P9.21 | P9.22 | - P9.17 (CS0) | - `BONE-SPI0_0.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_spi/src/arm/BONE-SPI0_0.dts>`_ | + | | | | | | | | | - P9.23 (CS1 - BBAI and BBAI64 only) | - `BONE-SPI0_0.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_spi/src/arm/BONE-SPI0_1.dts>`_ | + +--------------------+------------+--------+-------+------------+--------+--------+--------+---------------------------------------+--------------------------------------------------------------------------------------------------------------+ + | /dev/bone/spi/1.x | bone_spi_1 | SPI1 | SPI3 | MAIN_SPI7 | P9.30 | P9.29 | P9.31 | - P9.28 (CS0) | - `BONE-SPI0_0.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_spi/src/arm/BONE-SPI1_0.dts>`_ | + | | | | | | | | | - P9.42 (CS1) | - `BONE-SPI0_0.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_spi/src/arm/BONE-SPI1_1.dts>`_ | + +--------------------+------------+--------+-------+------------+--------+--------+--------+---------------------------------------+--------------------------------------------------------------------------------------------------------------+ + +UART +----- + +UART bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see `bbai-bone-buses.dtsi#L367 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L367>`_ & `bbb-bone-buses.dtsi#L382 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L382>`_ + +.. table:: Bone bus UART + + +-------------------+--------+--------+-----------------------+----------------------------------+--------+---------------------------------------------+---------------------------------------------+-----------------------------------------------------------------------------------------------------------+ + | Bone bus | Black | AI | AI-64 | TX | RX | RTSn | CTSn | Overlays | + +===================+========+========+=======================+==================================+========+=============================================+=============================================+===========================================================================================================+ + | /dev/bone/uart/0 | UART0 | UART1 | MAIN_UART0 | .. centered:: NA (console debug header pins) | + +-------------------+--------+--------+-----------------------+----------------------------------+--------+---------------------------------------------+---------------------------------------------+-----------------------------------------------------------------------------------------------------------+ + | /dev/bone/uart/1 | UART1 | UART10 | MAIN_UART2 | P9.24 | P9.26 | P9.19 P8.4 (N/A on AM3358) | P9.20 P8.3 (N/A on AM3358) | `BONE-UART1.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_uart/src/arm/BONE-UART1.dts>`_ | + +-------------------+--------+--------+-----------------------+----------------------------------+--------+---------------------------------------------+---------------------------------------------+-----------------------------------------------------------------------------------------------------------+ + | /dev/bone/uart/2 | UART2 | UART3 | - | P9.21 | P9.22 | P8.38 (N/A on AM5729) | P8.37 (N/A on AM5729) | `BONE-UART2.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_uart/src/arm/BONE-UART2.dts>`_ | + +-------------------+--------+--------+-----------------------+----------------------------------+--------+---------------------------------------------+---------------------------------------------+-----------------------------------------------------------------------------------------------------------+ + | /dev/bone/uart/3 | UART3 | - | - | P9.42 | NA | - | - | `BONE-UART3.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_uart/src/arm/BONE-UART3.dts>`_ | + +-------------------+--------+--------+-----------------------+----------------------------------+--------+---------------------------------------------+---------------------------------------------+-----------------------------------------------------------------------------------------------------------+ + | /dev/bone/uart/4 | UART4 | UART5 | MAIN_UART0 (console) | P9.13 | P9.11 | P8.33 (N/A on AM5729) P8.6 (N/A on AM3358) | P8.35 (N/A on AM5729) P8.5 (N/A on AM3358) | `BONE-UART4.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_uart/src/arm/BONE-UART4.dts>`_ | + +-------------------+--------+--------+-----------------------+----------------------------------+--------+---------------------------------------------+---------------------------------------------+-----------------------------------------------------------------------------------------------------------+ + | /dev/bone/uart/5 | UART5 | UART8 | MAIN_UART5 | P8.37 | P8.38 | P8.32 | P8.31 | `BONE-UART5.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_uart/src/arm/BONE-UART5.dts>`_ | + +-------------------+--------+--------+-----------------------+----------------------------------+--------+---------------------------------------------+---------------------------------------------+-----------------------------------------------------------------------------------------------------------+ + + +CAN +----- + +CAN bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see `bbai-bone-buses.dtsi#L440 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L440>`_ & `bbb-bone-buses.dtsi#L457 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L457>`_. + +.. table:: Bone bus CAN + + +------------------+--------+--------------------------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+ + | Bone bus | Black | AI | AI-64 | TX | RX | Overlays | + +==================+========+==========================+========+========+========+========================================================================================================+ + | /dev/bone/can/0 | CAN0 | - | TBD | P9.20 | P9.19 | `BONE-CAN0.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_can/src/arm/BONE-CAN0.dts>`_ | + +------------------+--------+--------------------------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+ + | /dev/bone/can/1 | CAN1 | CAN2 | TBD | P9.26 | P9.24 | `BONE-CAN1.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_can/src/arm/BONE-CAN1.dts>`_ | + +------------------+--------+--------------------------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+ + | /dev/bone/can/2 | - | CAN1 (rev A2 and later) | TBD | P8.8 | P8.7 | | + +------------------+--------+--------------------------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+ + +ADC +------- + +* TODO: We need a udev rule to make sure the ADC shows up at /dev/bone/adc! There's nothing for sure that IIO devices will show up in the same place. +* TODO: I think we can also create symlinks for each channel based on which device is there, such that we can do /dev/bone/adc/Px_y + +.. table:: Bone ADC + + +--------+-------------+------------------+------------------+ + | Index | Header pin | Black/AI-64 | AI | + +========+=============+==================+==================+ + | 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 | + +--------+-------------+------------------+------------------+ + + +.. table:: Bone ADC Overlay + + +-----------+----------------------+--------+-------------------------------------------------------------------------------------------------------------------------------------------+ + | Black | AI | AI-64 | overlay | + +===========+======================+========+===========================================================================================================================================+ + | Internal | External (STMPE811) | TBD | `BONE-ADC.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BONE-ADC.dts>`_ | + +-----------+----------------------+--------+-------------------------------------------------------------------------------------------------------------------------------------------+ + + +PWM +------- + +PWM bone bus nodes allow creating compatible overlays for Black, AI and AI-64. For the definitions, you can see `bbai-bone-buses.dtsi#L415 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L415>`_ & `bbb-bone-buses.dtsi#L432 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L432>`_ + +.. table:: Bone bus PWM + + +------------------+--------+-------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+ + | Bone bus | Black | AI | AI-64 | A | B | Overlay | + +==================+========+=======+========+========+========+========================================================================================================+ + | /dev/bone/pwm/0 | PWM0 | - | PWM1 | P9.22 | P9.21 | `BONE-PWM0.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_pwm/src/arm/BONE-PWM0.dts>`_ | + +------------------+--------+-------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+ + | /dev/bone/pwm/1 | PWM1 | PWM3 | PWM2 | P9.14 | P9.16 | `BONE-PWM1.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_pwm/src/arm/BONE-PWM1.dts>`_ | + +------------------+--------+-------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+ + | /dev/bone/pwm/2 | PWM2 | PWM2 | PWM0 | P8.19 | P8.13 | `BONE-PWM2.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_pwm/src/arm/BONE-PWM2.dts>`_ | + +------------------+--------+-------+--------+--------+--------+--------------------------------------------------------------------------------------------------------+ + +TIMER PWM +------------- + +TIMER PWM bone bus uses ti,omap-dmtimer-pwm driver, and timer nodes that allow creating compatible overlays for Black, AI and AI-64. For the timer node definitions, you can see `bbai-bone-buses.dtsi#L449 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbai-bone-buses.dtsi#L449>`_ & `bbb-bone-buses.dtsi#L466 <https://github.com/lorforlinux/BeagleBoard-DeviceTrees/blob/97a6f0daa9eab09633a2064f68a53b107d6e3968/src/arm/bbb-bone-buses.dtsi#L466>`_. + +.. table:: Bone TIMER PWMs + + +----------------------------------------------+-------------+--------+----------+-------------------------------------------------------------------------------------------------------------------------+ + | Bone bus | Header pin | Black | AI | overlay | + +==============================================+=============+========+==========+=========================================================================================================================+ + | /sys/bus/platform/devices/bone_timer_pwm_0/ | P8.10 | timer6 | timer10 | `BONE-TIMER_PWM_0.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_timer/src/arm/BONE-TIMER_PWM_0.dts>`_ | + +----------------------------------------------+-------------+--------+----------+-------------------------------------------------------------------------------------------------------------------------+ + | /sys/bus/platform/devices/bone_timer_pwm_1/ | P8.07 | timer4 | timer11 | `BONE-TIMER_PWM_1.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_timer/src/arm/BONE-TIMER_PWM_1.dts>`_ | + +----------------------------------------------+-------------+--------+----------+-------------------------------------------------------------------------------------------------------------------------+ + | /sys/bus/platform/devices/bone_timer_pwm_2/ | P8.08 | timer7 | timer12 | `BONE-TIMER_PWM_2.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_timer/src/arm/BONE-TIMER_PWM_2.dts>`_ | + +----------------------------------------------+-------------+--------+----------+-------------------------------------------------------------------------------------------------------------------------+ + | /sys/bus/platform/devices/bone_timer_pwm_3/ | P9.21 | - | timer13 | `BONE-TIMER_PWM_3.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_timer/src/arm/BONE-TIMER_PWM_3.dts>`_ | + +----------------------------------------------+-------------+--------+----------+-------------------------------------------------------------------------------------------------------------------------+ + | /sys/bus/platform/devices/bone_timer_pwm_4/ | P8.09 | timer5 | timer14 | `BONE-TIMER_PWM_4.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_timer/src/arm/BONE-TIMER_PWM_4.dts>`_ | + +----------------------------------------------+-------------+--------+----------+-------------------------------------------------------------------------------------------------------------------------+ + | /sys/bus/platform/devices/bone_timer_pwm_5/ | P9.22 | - | timer15 | `BONE-TIMER_PWM_5.dts <https://github.com/lorforlinux/bb.org-overlays/blob/bone_timer/src/arm/BONE-TIMER_PWM_5.dts>`_ | + +----------------------------------------------+-------------+--------+----------+-------------------------------------------------------------------------------------------------------------------------+ + + +eCAP +------- + +#TODO: This doesn't include any abstraction yet. + +.. table:: Black eCAP PWMs + + +-----------------------------------------------+-------------+--------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ + | Bone bus | Header pin | peripheral | overlay | + +===============================================+=============+====================+=============================================================================================================================================+ + | /sys/bus/platform/drivers/ecap/48302100.ecap | P9.42 | eCAP0_in_PWM0_out | `BBB-ECAP0.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BBB-ECAP0.dts>`_ | + +-----------------------------------------------+-------------+--------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ + | /sys/bus/platform/drivers/ecap/48304100.ecap | P9.28 | eCAP2_in_PWM2_out | `BBB-ECAP2.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BBB-ECAP2.dts>`_ | + +-----------------------------------------------+-------------+--------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ + +.. table:: AI eCAP PWMs + + +-----------------------------------------------+-------------+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | Bone bus | Header pin | peripheral | overlay | + +===============================================+=============+====================+================================================================================================================================================+ + | /sys/bus/platform/drivers/ecap/4843e100.ecap | P8.15 | eCAP1_in_PWM1_out | `BBAI-ECAP1.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BBAI-ECAP1.dts>`_ | + +-----------------------------------------------+-------------+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | /sys/bus/platform/drivers/ecap/48440100.ecap | P8.14 | eCAP2_in_PWM2_out | `BBAI-ECAP2.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BBAI-ECAP2.dts>`_ | + +-----------------------------------------------+-------------+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | /sys/bus/platform/drivers/ecap/48440100.ecap | P8.20 | eCAP2_in_PWM2_out | `BBAI-ECAP2A.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BBAI-ECAP2A.dts>`_ | + +-----------------------------------------------+-------------+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | /sys/bus/platform/drivers/ecap/48442100.ecap | P8.04 | eCAP3_in_PWM3_out | `BBAI-ECAP3.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BBAI-ECAP3.dts>`_ | + +-----------------------------------------------+-------------+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + | /sys/bus/platform/drivers/ecap/48442100.ecap | P8.26 | eCAP3_in_PWM3_out | `BBAI-ECAP3A.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BBAI-ECAP3A.dts>`_ | + +-----------------------------------------------+-------------+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ + + +eMMC +------ + +.. table:: Bone eMMC + + +-------------+--------------+ + | 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 | + +-------------+--------------+ + +.. table:: Bone eMMC Overlay + + +--------+-------+---------------------------------------------------------------------------------------------------------------------------------------------+ + | Black | AI | overlay | + +========+=======+=============================================================================================================================================+ + | MMC2 | MMC3 | `BONE-eMMC.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BONE-eMMC.dts>`_ | + +--------+-------+---------------------------------------------------------------------------------------------------------------------------------------------+ + + +LCD +------ + +.. table:: 16bit LCD interface + + +-------------+-----------------+ + | Header pin | Description | + +=============+=================+ + | P8_45 | lcd_data0 | + +-------------+-----------------+ + | P8_46 | lcd_data1 | + +-------------+-----------------+ + | P8_43 | lcd_data2 | + +-------------+-----------------+ + | P8_44 | lcd_data3 | + +-------------+-----------------+ + | P8_41 | lcd_data4 | + +-------------+-----------------+ + | P8_42 | lcd_data5 | + +-------------+-----------------+ + | P8_39 | lcd_data6 | + +-------------+-----------------+ + | P8_40 | lcd_data7 | + +-------------+-----------------+ + | P8_37 | lcd_data8 | + +-------------+-----------------+ + | P8_38 | lcd_data9 | + +-------------+-----------------+ + | P8_36 | lcd_data10 | + +-------------+-----------------+ + | P8_34 | lcd_data11 | + +-------------+-----------------+ + | P8_35 | lcd_data12 | + +-------------+-----------------+ + | P8_33 | lcd_data13 | + +-------------+-----------------+ + | P8_31 | lcd_data14 | + +-------------+-----------------+ + | P8_32 | lcd_data15 | + +-------------+-----------------+ + | P8_27 | lcd_vsync | + +-------------+-----------------+ + | P8_29 | lcd_hsync | + +-------------+-----------------+ + | P8_28 | lcd_pclk | + +-------------+-----------------+ + | P8_30 | lcd_ac_bias_en | + +-------------+-----------------+ + +.. table:: 16bit LCD interface Overlay + + +--------+-----+----------+ + | Black | AI | overlay | + +========+=====+==========+ + | lcdc | dss | | + +--------+-----+----------+ + + +eQEP +-------- + +On BeagleBone's without an eQEP on specific pins, consider using the PRU to perform a software counter function. + +.. table:: Bone eQEP + + +----------------------+--------+--------+--------+--------+--------+-------------------------------+-------------------------------+----------+ + | Bone bus | Black | AI | AI-64 | A | B | strobe | index | overlay | + +======================+========+========+========+========+========+===============================+===============================+==========+ + | /dev/bone/counter/0 | eQEP0 | eQEP2 | eQEP0 | P9.42 | P9.27 | - Black/AI-64: P9.25 | - Black/AI-64: P9.41 | | + | | | | | | | - AI: P8.06 | - AI: P8.05 | | + +----------------------+--------+--------+--------+--------+--------+-------------------------------+-------------------------------+----------+ + | /dev/bone/counter/1 | eQEP1 | eQEP0 | eQEP1 | P8.35 | P8.33 | - Black/AI-64: P8.32 | - Black/AI-64: P8.31 | | + | | | | | | | - AI: P9.21 | - AI: ‒ | | + +----------------------+--------+--------+--------+--------+--------+-------------------------------+-------------------------------+----------+ + | /dev/bone/counter/2 | eQEP2 | eQEP1 | ‒ | P8.12 | P8.22 | - Black: P8.15 | - Black: P8.16 | | + | | | | | | | - AI: P8.18 | - AI: P9.15 | | + +----------------------+--------+--------+--------+--------+--------+-------------------------------+-------------------------------+----------+ + + +McASP +--------- + +.. table:: Bone McASP0 + + +-------------+-----------------------+ + | Header pin | Description | + +=============+=======================+ + | P9.12 | aclkr | + +-------------+-----------------------+ + | P9.25 | ahclkx | + +-------------+-----------------------+ + | P9.27 | fsr | + +-------------+-----------------------+ + | P9.28 | Black: axr2 AI: axr9 | + +-------------+-----------------------+ + | P9.29 | fsx | + +-------------+-----------------------+ + | P9.30 | Black: axr0 AI: axr10 | + +-------------+-----------------------+ + | P9.31 | aclkx | + +-------------+-----------------------+ + +.. table:: Bone McASP0 Overlay + + +--------+---------+----------+ + | Black | AI | overlay | + +========+=========+==========+ + | McASP0 | McASP1 | | + +--------+---------+----------+ + +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 [https://www.kernel.org/doc/html/latest/driver-api/uio-howto.html UIO] or [https://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/RemoteProc_and_RPMsg.html RemoteProc]. + +* /dev/remoteproc/prussX-coreY (AM3358 X = "", other x = "1|2") + +.. table:: Bone PRU eCAP + + +-------------+------------+------------+ + | Header Pin | Black | AI | + +=============+============+============+ + | P8.15 | pr1_ecap0 | pr1_ecap0 | + +-------------+------------+------------+ + | P8.32 | - | pr2_ecap0 | + +-------------+------------+------------+ + | P9.42 | pr1_ecap0 | - | + +-------------+------------+------------+ + +.. table:: AI PRU UART + + +-------------+--------+--------+-------+-------+-----------+ + | UART | TX | RX | RTSn | CTSn | Overlays | + +=============+========+========+=======+=======+===========+ + | PRU1 UART0 | P8_31 | P8_33 | P8_34 | P8_35 | | + +-------------+--------+--------+-------+-------+-----------+ + | PRU2 UART0 | P8_43 | P8_44 | P8_45 | P8_46 | | + +-------------+--------+--------+-------+-------+-----------+ + +.. table:: Bone PRU + + +-------------+--------------------+------------------+ + | Header Pin | Black | AI | + +=============+====================+==================+ + | P8.03 | - | pr2_pru0 10 | + +-------------+--------------------+------------------+ + | P8.04 | - | pr2_pru0 11 | + +-------------+--------------------+------------------+ + | P8.05 | - | pr2_pru0 06 | + +-------------+--------------------+------------------+ + | P8.06 | - | pr2_pru0 07 | + +-------------+--------------------+------------------+ + | P8.07 | - | pr2_pru1 16 | + +-------------+--------------------+------------------+ + | P8.08 | - | pr2_pru0 20 | + +-------------+--------------------+------------------+ + | P8.09 | - | pr2_pru1 06 | + +-------------+--------------------+------------------+ + | P8.10 | - | pr2_pru1 15 | + +-------------+--------------------+------------------+ + | P8.11 | pr1_pru0 15 (Out) | pr1_pru0 04 | + +-------------+--------------------+------------------+ + | P8.12 | pr1_pru0 14 (Out) | pr1_pru0 03 | + +-------------+--------------------+------------------+ + | P8.13 | - | pr1_pru1 07 | + +-------------+--------------------+------------------+ + | P8.14 | - | pr1_pru1 09 | + +-------------+--------------------+------------------+ + | P8.15 | pr1_pru0 15 (In) | pr1_pru1 16 | + +-------------+--------------------+------------------+ + | P8.16 | pr1_pru0 14 (In) | pr1_pru1 18 | + +-------------+--------------------+------------------+ + | P8.17 | - | pr2_pru0 15 | + +-------------+--------------------+------------------+ + | P8.18 | - | pr1_pru1 05 | + +-------------+--------------------+------------------+ + | P8.19 | - | pr1_pru1 06 | + +-------------+--------------------+------------------+ + | P8.20 | - | pr2_pru0 03 | + +-------------+--------------------+------------------+ + | P8.21 | - | pr2_pru0 02 | + +-------------+--------------------+------------------+ + | P8.22 | - | pr2_pru0 09 | + +-------------+--------------------+------------------+ + | P8.23 | - | pr2_pru0 08 | + +-------------+--------------------+------------------+ + | P8.24 | - | pr2_pru0 05 | + +-------------+--------------------+------------------+ + | P8.25 | - | pr2_pru0 04 | + +-------------+--------------------+------------------+ + | P8.26 | - | pr1_pru1 17 | + +-------------+--------------------+------------------+ + | P8.27 | - | pr2_pru1 17 | + +-------------+--------------------+------------------+ + | P8.28 | - | pr2_pru0 17 | + +-------------+--------------------+------------------+ + | P8.29 | - | pr2_pru0 18 | + +-------------+--------------------+------------------+ + | P8.30 | - | pr2_pru0 19 | + +-------------+--------------------+------------------+ + | P8.31 | - | pr2_pru0 11 | + +-------------+--------------------+------------------+ + | P8.32 | - | pr2_pru1 00 | + +-------------+--------------------+------------------+ + | P8.33 | - | pr2_pru0 10 | + +-------------+--------------------+------------------+ + | P8.34 | - | pr2_pru0 08 | + +-------------+--------------------+------------------+ + | P8.35 | - | pr2_pru0 09 | + +-------------+--------------------+------------------+ + | P8.36 | - | pr2_pru0 07 | + +-------------+--------------------+------------------+ + | P8.37 | - | pr2_pru0 05 | + +-------------+--------------------+------------------+ + | P8.38 | - | pr2_pru0 06 | + +-------------+--------------------+------------------+ + | P8.39 | - | pr2_pru0 03 | + +-------------+--------------------+------------------+ + | P8.40 | - | pr2_pru0 04 | + +-------------+--------------------+------------------+ + | P8.41 | - | pr2_pru0 01 | + +-------------+--------------------+------------------+ + | P8.42 | - | pr2_pru0 02 | + +-------------+--------------------+------------------+ + | P8.43 | - | pr2_pru1 20 | + +-------------+--------------------+------------------+ + | P8.44 | - | pr2_pru0 00 | + +-------------+--------------------+------------------+ + | P8.45 | - | pr2_pru1 18 | + +-------------+--------------------+------------------+ + | P8.46 | - | pr2_pru1 19 | + +-------------+--------------------+------------------+ + | P9.11 | - | pr2_pru0 14 | + +-------------+--------------------+------------------+ + | P9.13 | - | pr2_pru0 15 | + +-------------+--------------------+------------------+ + | P9.14 | - | pr1_pru1 14 | + +-------------+--------------------+------------------+ + | P9.15 | - | pr1_pru0 5 | + +-------------+--------------------+------------------+ + | P9.16 | - | pr1_pru1 15 | + +-------------+--------------------+------------------+ + | P9.17 | - | pr2_pru1 09 | + +-------------+--------------------+------------------+ + | P9.18 | - | pr2_pru1 08 | + +-------------+--------------------+------------------+ + | P9.19 | - | pr1_pru1 02 | + +-------------+--------------------+------------------+ + | P9.20 | - | pr1_pru1 01 | + +-------------+--------------------+------------------+ + | P9.24 | pr1_pru0 16 (In) | - | + +-------------+--------------------+------------------+ + | P9.25 | pr1_pru0 07 | pr2_pru1 05 | + +-------------+--------------------+------------------+ + | P9.26 | pr1_pru1 16 (In) | pr1_pru0 17 | + +-------------+--------------------+------------------+ + | P9.27 | pr1_pru0 05 | pr1_pru1 11 | + +-------------+--------------------+------------------+ + | P9.28 | pr1_pru0 03 | pr2_pru1 13 | + +-------------+--------------------+------------------+ + | P9.29 | pr1_pru0 01 | pr2_pru1 11 | + +-------------+--------------------+------------------+ + | P9.30 | pr1_pru0 02 | pr2_pru1 12 | + +-------------+--------------------+------------------+ + | P9.31 | pr1_pru0 00 | pr2_pru1 10 | + +-------------+--------------------+------------------+ + | P9.41 | pr1_pru0 06 | pr1_pru1 03 | + +-------------+--------------------+------------------+ + | P9.42 | pr1_pru0 04 | pr1_pru1 10 | + +-------------+--------------------+------------------+ + +GPIO +---------- + +TODO<br> +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 +-------------- + +10-of-symlink.rules +********************** + +.. code-block:: + + #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 +**************** + +.. code-block:: + + # 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 +------------- + +- `Device Tree: Supporting Similar Boards - The BeagleBone Example <https://beagleboard.org/blog/2022-03-31-device-tree-supporting-similar-boards-the-beaglebone-example>`_ +- `Google drive with summary of expansion signals on various BeagleBoard.org designs <https://docs.google.com/spreadsheets/d/1fE-AsDZvJ-bBwzNBj1_sPDrutvEvsmARqFwvbw_HkrE/edit?usp=sharing>`_ +- `Beagleboard:Cape Expansion Headers <https://elinux.org/Beagleboard:Cape_Expansion_Headers>`_ diff --git a/support/index.rst b/support/index.rst index f44b8a58..3077a483 100644 --- a/support/index.rst +++ b/support/index.rst @@ -10,3 +10,4 @@ Support overview.rst getting-started.rst + cape-interface-spec.rst diff --git a/support/tables/BeagleBone cape interface spec.ods b/support/tables/BeagleBone cape interface spec.ods new file mode 100644 index 0000000000000000000000000000000000000000..30c5b7cf53325db42e636e55827bda7fc79d65d8 GIT binary patch literal 23770 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 literal 0 HcmV?d00001 diff --git a/support/tables/BeagleBone-Cape-header-definition.csv b/support/tables/BeagleBone-Cape-header-definition.csv new file mode 100644 index 00000000..7f7ddb13 --- /dev/null +++ b/support/tables/BeagleBone-Cape-header-definition.csv @@ -0,0 +1,27 @@ +P9,,,, ,P8 ,,, +Functions,odd,even,Functions, ,Functions,odd,even,Functions +USB D+,E1,E2,USB D-, ,-,-,-,- +5V OUT,E3,E4,GND, ,-,-,-,- +GND,1,2,GND, ,GND,1,2,GND +3V3 OUT,3,4,3V3 OUT, ,D M,3,4,D M +5V IN,5,6,5V IN, ,D M,5,6,D M +5V OUT,7,8,5V OUT, ,C2r D,7,8,C2t D +PWR BUT,9,10,RESET, ,D,9,10,D +D U4r,11,12,D, ,D P0o,11,12,D Q2a P0o +D U4t,13,14,D E1a, ,D E2b,13,14,D +D,15,16,D E1b, ,D P0i,15,16,D P0i +D I1c S00,17,18,D I1d S0o, ,D,17,18,D +C0r D I2c,19,20,C0t D I2d, ,D E2a,19,20,D M P1 +D E0b S0i U2t,21,22,D E0a S0c U2r, ,D M P1,21,22,D M Q2b +D S01,23,24,C1r D I3c U1t, ,D M,23,24,D M +D P0,25,26,C1t D I3d U1r, ,D M,25,26,D +D P0 Q0b,27,28,D P0 S10, ,D L P1,27,28,D L P1 +D E S1i P0,29,30,D P0 S1o, ,D L P1,29,30,D L P1 +D E S1c P0,31,32,ADC VDD, ,D L,31,32,D L +A4,33,34,ADC GND, ,D L Q1b,33,34,D E L +A6,35,36,A5, ,D L Q1a,35,36,D E L +A2,37,38,A3, ,D L U5t,37,38,D L U5r +A0,39,40,A1, ,D L P1,39,40,D L P1 +D P0,41,42,D Q0a S11 U3t P0, ,D L P1,41,42,D L P1 +GND,43,44,GND, ,D L P1,43,44,D L P1 +GND,45,46,GND, ,D E L P1,45,46,D E L P1 diff --git a/support/tables/Bone-LEDs-Overlays.csv b/support/tables/Bone-LEDs-Overlays.csv new file mode 100644 index 00000000..e5fda3aa --- /dev/null +++ b/support/tables/Bone-LEDs-Overlays.csv @@ -0,0 +1,3 @@ +Header,Pin,Overlay +P8,3,`BONE-LED_P8_03.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BONE-LED_P8_03.dts>`_ +P9,11,`BONE-LED_P9_11.dts <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/blob/v4.19.x-ti-overlays/src/arm/overlays/BONE-LED_P9_11.dts>`_ diff --git a/support/tables/Bone-LEDs.csv b/support/tables/Bone-LEDs.csv new file mode 100644 index 00000000..c43e24ad --- /dev/null +++ b/support/tables/Bone-LEDs.csv @@ -0,0 +1,78 @@ +LED,Header pin,Black,AI,AI-64 +/sys/class/leds/led_P8_03 ,P8_03,gpio1_6,gpio1_24,gpio0_20 +/sys/class/leds/led_P8_04 ,P8_04,gpio1_7,gpio1_25,gpio0_48 +/sys/class/leds/led_P8_05 ,P8_05,gpio1_2,gpio7_1,gpio0_33 +/sys/class/leds/led_P8_06 ,P8_06,gpio1_3,gpio7_2,gpio0_34 +/sys/class/leds/led_P8_07 ,P8_07,gpio2_2,gpio6_5,gpio0_15 +/sys/class/leds/led_P8_08 ,P8_08,gpio2_3,gpio6_6,gpio0_14 +/sys/class/leds/led_P8_09 ,P8_09,gpio2_5,gpio6_18,gpio0_17 +/sys/class/leds/led_P8_10 ,P8_10,gpio2_4,gpio6_4,gpio0_16 +/sys/class/leds/led_P8_11 ,P8_11,gpio1_13,gpio3_11,gpio0_60 +/sys/class/leds/led_P8_12 ,P8_12,gpio1_12,gpio3_10,gpio0_59 +/sys/class/leds/led_P8_13 ,P8_13,gpio0_23,gpio4_11,gpio0_89 +/sys/class/leds/led_P8_14 ,P8_14,gpio0_26,gpio4_13,gpio0_75 +/sys/class/leds/led_P8_15 ,P8_15,gpio1_15,gpio4_3,gpio0_61 +/sys/class/leds/led_P8_16 ,P8_16,gpio1_14,gpio4_29,gpio0_62 +/sys/class/leds/led_P8_17 ,P8_17,gpio0_27,gpio8_18,gpio0_3 +/sys/class/leds/led_P8_18 ,P8_18,gpio2_1,gpio4_9,gpio0_4 +/sys/class/leds/led_P8_19 ,P8_19,gpio0_22,gpio4_10,gpio0_88 +/sys/class/leds/led_P8_20 ,P8_20,gpio1_31,gpio6_30,gpio0_76 +/sys/class/leds/led_P8_21 ,P8_21,gpio1_30,gpio6_29,gpio0_30 +/sys/class/leds/led_P8_22 ,P8_22,gpio1_5,gpio1_23,gpio0_5 +/sys/class/leds/led_P8_23 ,P8_23,gpio1_4,gpio1_22,gpio0_31 +/sys/class/leds/led_P8_24 ,P8_24,gpio1_1,gpio7_0,gpio0_6 +/sys/class/leds/led_P8_25 ,P8_25,gpio1_0,gpio6_31,gpio0_35 +/sys/class/leds/led_P8_26 ,P8_26,gpio1_29,gpio4_28,gpio0_51 +/sys/class/leds/led_P8_27 ,P8_27,gpio2_22,gpio4_23,gpio0_71 +/sys/class/leds/led_P8_28 ,P8_28,gpio2_24,gpio4_19,gpio0_72 +/sys/class/leds/led_P8_29 ,P8_29,gpio2_23,gpio4_22,gpio0_73 +/sys/class/leds/led_P8_30 ,P8_30,gpio2_25,gpio4_20,gpio0_74 +/sys/class/leds/led_P8_31 ,P8_31,gpio0_10,gpio8_14,gpio0_32 +/sys/class/leds/led_P8_32 ,P8_32,gpio0_11,gpio8_15,gpio0_26 +/sys/class/leds/led_P8_33 ,P8_33,gpio0_9,gpio8_13,gpio0_25 +/sys/class/leds/led_P8_34 ,P8_34,gpio2_17,gpio8_11,gpio0_7 +/sys/class/leds/led_P8_35 ,P8_35,gpio0_8,gpio8_12,gpio0_24 +/sys/class/leds/led_P8_36 ,P8_36,gpio2_16,gpio8_10,gpio0_8 +/sys/class/leds/led_P8_37 ,P8_37,gpio2_14,gpio8_8,gpio0_106 +/sys/class/leds/led_P8_38 ,P8_38,gpio2_15,gpio8_9,gpio0_105 +/sys/class/leds/led_P8_39 ,P8_39,gpio2_12,gpio8_6,gpio0_69 +/sys/class/leds/led_P8_40 ,P8_40,gpio2_13,gpio8_7,gpio0_70 +/sys/class/leds/led_P8_41 ,P8_41,gpio2_10,gpio8_4,gpio0_67 +/sys/class/leds/led_P8_42 ,P8_42,gpio2_11,gpio8_5,gpio0_68 +/sys/class/leds/led_P8_43 ,P8_43,gpio2_8,gpio8_2,gpio0_65 +/sys/class/leds/led_P8_44 ,P8_44,gpio2_9,gpio8_3,gpio0_66 +/sys/class/leds/led_P8_45 ,P8_45,gpio2_6,gpio8_0,gpio0_79 +/sys/class/leds/led_P8_46 ,P8_46,gpio2_7,gpio8_1,gpio0_80 +/sys/class/leds/led_P9_11 ,P9_11,gpio0_30,gpio8_17,gpio0_1 +/sys/class/leds/led_P9_12 ,P9_12,gpio1_28,gpio5_0,gpio0_45 +/sys/class/leds/led_P9_13 ,P9_13,gpio0_31,gpio6_12,gpio0_2 +/sys/class/leds/led_P9_14 ,P9_14,gpio1_18,gpio4_25,gpio0_93 +/sys/class/leds/led_P9_15 ,P9_15,gpio1_16,gpio3_12,gpio0_47 +/sys/class/leds/led_P9_16 ,P9_16,gpio1_19,gpio4_26,gpio0_94 +/sys/class/leds/led_P9_17 ,P9_17,gpio0_5,gpio7_17,gpio0_28 +/sys/class/leds/led_P9_18 ,P9_18,gpio0_4,gpio7_16,gpio0_40 +/sys/class/leds/led_P9_19 ,P9_19,gpio0_13,gpio7_3,gpio0_78 +/sys/class/leds/led_P9_20 ,P9_20,gpio0_12,gpio7_4,gpio0_77 +/sys/class/leds/led_P9_21 ,P9_21,gpio0_3,gpio3_3,gpio0_39 +/sys/class/leds/led_P9_22 ,P9_22,gpio0_2,gpio6_19,gpio0_38 +/sys/class/leds/led_P9_23 ,P9_23,gpio1_17,gpio7_11,gpio0_10 +/sys/class/leds/led_P9_24 ,P9_24,gpio0_15,gpio6_15,gpio0_13 +/sys/class/leds/led_P9_25 ,P9_25,gpio3_21,gpio6_17,gpio0_127 +/sys/class/leds/led_P9_26 ,P9_26,gpio0_14,gpio6_14,gpio0_12 +/sys/class/leds/led_P9_27 ,P9_27,gpio3_19,gpio4_15,gpio0_46 +/sys/class/leds/led_P9_28 ,P9_28,gpio3_17,gpio4_17,gpio1_11 +/sys/class/leds/led_P9_29 ,P9_29,gpio3_15,gpio5_11,gpio0_53 +/sys/class/leds/led_P9_30 ,P9_30,gpio3_16,gpio5_12,gpio0_44 +/sys/class/leds/led_P9_31 ,P9_31,gpio3_14,gpio5_10,gpio0_52 +/sys/class/leds/led_P9_33 ,P9_33,,,gpio0_50 +/sys/class/leds/led_P9_35 ,P9_35,,,gpio0_55 +/sys/class/leds/led_P9_36 ,P9_36,,,gpio0_56 +/sys/class/leds/led_P9_37 ,P9_37,,,gpio0_57 +/sys/class/leds/led_P9_38 ,P9_38,,,gpio0_58 +/sys/class/leds/led_P9_39 ,P9_39,,,gpio0_54 +/sys/class/leds/led_P9_40 ,P9_40,,,gpio0_81 +/sys/class/leds/led_P9_41 ,P9_41,gpio0_20,gpio6_20,gpio1_0 +/sys/class/leds/led_P9_91 ,P9_91,gpio3_20,, +/sys/class/leds/led_P9_42 ,P9_42,gpio0_7,gpio4_18,gpio0_123 +/sys/class/leds/led_P9_92 ,P9_92,gpio3_18,, +/sys/class/leds/led_A15 ,A15,gpio0_19,, -- GitLab