.. _beaglebone-cape-interface-spec: BeagleBone cape interface spec ############################### .. |I2C| replace:: I\ :sup:`2`\ C This page is a fork of `BeagleBone cape interface spec <https://elinux.org/Beagleboard:BeagleBone_cape_interface_spec>`_ page on elinux. This is the new official home. Background and overview *********************** .. important:: Resources * See `Device Tree: Supporting Similar Boards - The BeagleBone Example blog post <https://beagleboard.org/blog/2022-03-31-device-tree-supporting-similar-boards-the-beaglebone-example>`_ on BeagleBoard.org * See `spreadsheet with pin header details <https://docs.google.com/spreadsheets/d/1fE-AsDZvJ-bBwzNBj1_sPDrutvEvsmARqFwvbw_HkrE/edit?usp=sharing>`_ * See `elinux.org Cape Expansion Headers for BeagleBone page <https://elinux.org/Beagleboard:Cape_Expansion_Headers>`_ * See :ref:`BeagleBone Black System Reference Manual Connectors section <beagleboneblack-connectors>` * See :ref:`BeagleBone AI System Reference Manual Connectors section <beaglebone-ai-connectors>` * See :ref:`BeagleBone AI-64 System Reference Manual Connectors section <TODO>` .. note:: Below, when mentioning "Black", this is true for all AM3358-based BeagleBone boards. "AI" is AM5729-based. "AI-64" is TDA4VM-based. The device tree symbols for the BeagleBone Cape Compatibility Layer are provided in `BeagleBoard-DeviceTrees <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees>`_ at: * Black: `bbb-bone-buses.dtsi <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/-/blob/v5.10.x-ti-unified/src/arm/bbb-bone-buses.dtsi>`_ * AI: `bbai-bone-buses.dtsi <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/-/blob/v5.10.x-ti-unified/src/arm/bbai-bone-buses.dtsi>`_ * AI-64: `k3-j721e-beagleboneai-64-bone-buses.dtsi <https://git.beagleboard.org/beagleboard/BeagleBoard-DeviceTrees/-/blob/v5.10.x-ti-unified/src/arm64/k3-j721e-beagleboneai64-bone-buses.dtsi>`_ The udev rules used to create the userspace symlinks for the BeagleBone Cape Compatibility Layer are provided in `usr-customizations <https://git.beagleboard.org/beagleboard/usr-customizations>`_ at: More details can be found in :ref:`bone-methodology`. .. table:: Overall +-----------------------------------------------+-----+--------------------------------------+ | .. centered:: P9 | | .. 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 C4t | 5 | 6 | D M C4r | +---------------+-----+------+------------------+-----+------------+-----+------+------------+ | 5V OUT | 7 | 8 | 5V OUT | | D C2r | 7 | 8 | D C2t | +---------------+-----+------+------------------+-----+------------+-----+------+------------+ | PWR BUT | 9 | 10 | RESET | | D C3r | 9 | 10 | D C3t | +---------------+-----+------+------------------+-----+------------+-----+------+------------+ | 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 U6r | +---------------+-----+------+------------------+-----+------------+-----+------+------------+ | D E S1i P0 | 29 | 30 | D P0 S1o | | D L P1 U6t | 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 | +---------------+-----+------+------------------+-----+------------+-----+------+------------+ .. note:: Legend * A: :ref:`bone-analog` * B: :ref:`bone-i2s` * C: :ref:`bone-can` * D: :ref:`bone-gpio` * E: :ref:`bone-pwm` * I: :ref:`bone-i2c` * L: :ref:`bone-lcd` * M: :ref:`bone-mmc` * P: :ref:`bone-pru` * Q: :ref:`bone-capture` * S: :ref:`bone-spi` * U: :ref:`bone-uart` * Y: :ref:`bone-ecap` .. _bone-gpio: Digital GPIO ************ The compatibility layer comes with simple reference nodes for attaching the Linux gpio-leds or gpio-keys to any cape header GPIO pin. This provides simple userspace general purpose input or output with various trigger modes. The format followed for the gpio-leds nodes is **bone_led_P8_## / bone_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. .. code-block:: c :linenos: :caption: Example device tree overlay to enable LED driver on header P8 pin 3 :name: bone_cape_spec_led_example /dts-v1/; /plugin/; &bone_led_P8_03 { status = "okay"; } In :ref:`bone_cape_spec_led_example`, it is possible to redefine the default label and other properties defined in the `gpio-leds schema <https://elixir.bootlin.com/linux/v5.10/source/Documentation/devicetree/bindings/leds/leds-gpio.yaml>`_. .. table:: Bone GPIO LEDs interface +------------------------+-------------+----------+-----------+-----------+ | LED SYSFS | Header pin | Black | AI | AI-64 | +========================+=============+==========+===========+===========+ | /sys/class/leds/P8_03 | P8_03 | gpio1_6 | gpio1_24 | gpio0_20 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_04 | P8_04 | gpio1_7 | gpio1_25 | gpio0_48 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_05 | P8_05 | gpio1_2 | gpio7_1 | gpio0_33 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_06 | P8_06 | gpio1_3 | gpio7_2 | gpio0_34 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_07 | P8_07 | gpio2_2 | gpio6_5 | gpio0_15 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_08 | P8_08 | gpio2_3 | gpio6_6 | gpio0_14 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_09 | P8_09 | gpio2_5 | gpio6_18 | gpio0_17 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_10 | P8_10 | gpio2_4 | gpio6_4 | gpio0_16 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_11 | P8_11 | gpio1_13 | gpio3_11 | gpio0_60 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_12 | P8_12 | gpio1_12 | gpio3_10 | gpio0_59 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_13 | P8_13 | gpio0_23 | gpio4_11 | gpio0_89 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_14 | P8_14 | gpio0_26 | gpio4_13 | gpio0_75 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_15 | P8_15 | gpio1_15 | gpio4_3 | gpio0_61 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_16 | P8_16 | gpio1_14 | gpio4_29 | gpio0_62 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_17 | P8_17 | gpio0_27 | gpio8_18 | gpio0_3 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_18 | P8_18 | gpio2_1 | gpio4_9 | gpio0_4 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_19 | P8_19 | gpio0_22 | gpio4_10 | gpio0_88 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_20 | P8_20 | gpio1_31 | gpio6_30 | gpio0_76 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_21 | P8_21 | gpio1_30 | gpio6_29 | gpio0_30 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_22 | P8_22 | gpio1_5 | gpio1_23 | gpio0_5 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_23 | P8_23 | gpio1_4 | gpio1_22 | gpio0_31 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_24 | P8_24 | gpio1_1 | gpio7_0 | gpio0_6 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_25 | P8_25 | gpio1_0 | gpio6_31 | gpio0_35 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_26 | P8_26 | gpio1_29 | gpio4_28 | gpio0_51 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_27 | P8_27 | gpio2_22 | gpio4_23 | gpio0_71 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_28 | P8_28 | gpio2_24 | gpio4_19 | gpio0_72 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_29 | P8_29 | gpio2_23 | gpio4_22 | gpio0_73 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_30 | P8_30 | gpio2_25 | gpio4_20 | gpio0_74 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_31 | P8_31 | gpio0_10 | gpio8_14 | gpio0_32 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_32 | P8_32 | gpio0_11 | gpio8_15 | gpio0_26 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_33 | P8_33 | gpio0_9 | gpio8_13 | gpio0_25 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_34 | P8_34 | gpio2_17 | gpio8_11 | gpio0_7 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_35 | P8_35 | gpio0_8 | gpio8_12 | gpio0_24 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_36 | P8_36 | gpio2_16 | gpio8_10 | gpio0_8 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_37 | P8_37 | gpio2_14 | gpio8_8 | gpio0_106 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_38 | P8_38 | gpio2_15 | gpio8_9 | gpio0_105 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_39 | P8_39 | gpio2_12 | gpio8_6 | gpio0_69 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_40 | P8_40 | gpio2_13 | gpio8_7 | gpio0_70 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_41 | P8_41 | gpio2_10 | gpio8_4 | gpio0_67 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_42 | P8_42 | gpio2_11 | gpio8_5 | gpio0_68 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_43 | P8_43 | gpio2_8 | gpio8_2 | gpio0_65 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_44 | P8_44 | gpio2_9 | gpio8_3 | gpio0_66 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_45 | P8_45 | gpio2_6 | gpio8_0 | gpio0_79 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P8_46 | P8_46 | gpio2_7 | gpio8_1 | gpio0_80 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_11 | P9_11 | gpio0_30 | gpio8_17 | gpio0_1 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_12 | P9_12 | gpio1_28 | gpio5_0 | gpio0_45 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_13 | P9_13 | gpio0_31 | gpio6_12 | gpio0_2 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_14 | P9_14 | gpio1_18 | gpio4_25 | gpio0_93 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_15 | P9_15 | gpio1_16 | gpio3_12 | gpio0_47 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_16 | P9_16 | gpio1_19 | gpio4_26 | gpio0_94 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_17 | P9_17 | gpio0_5 | gpio7_17 | gpio0_28 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_18 | P9_18 | gpio0_4 | gpio7_16 | gpio0_40 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_19 | P9_19 | gpio0_13 | gpio7_3 | gpio0_78 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_20 | P9_20 | gpio0_12 | gpio7_4 | gpio0_77 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_21 | P9_21 | gpio0_3 | gpio3_3 | gpio0_39 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_22 | P9_22 | gpio0_2 | gpio6_19 | gpio0_38 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_23 | P9_23 | gpio1_17 | gpio7_11 | gpio0_10 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_24 | P9_24 | gpio0_15 | gpio6_15 | gpio0_13 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_25 | P9_25 | gpio3_21 | gpio6_17 | gpio0_127 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_26 | P9_26 | gpio0_14 | gpio6_14 | gpio0_12 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_27 | P9_27 | gpio3_19 | gpio4_15 | gpio0_46 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_28 | P9_28 | gpio3_17 | gpio4_17 | gpio1_11 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_29 | P9_29 | gpio3_15 | gpio5_11 | gpio0_53 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_30 | P9_30 | gpio3_16 | gpio5_12 | gpio0_44 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_31 | P9_31 | gpio3_14 | gpio5_10 | gpio0_52 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_33 | P9_33 | *n/a* | *n/a* | gpio0_50 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_35 | P9_35 | *n/a* | *n/a* | gpio0_55 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_36 | P9_36 | *n/a* | *n/a* | gpio0_56 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_37 | P9_37 | *n/a* | *n/a* | gpio0_57 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_38 | P9_38 | *n/a* | *n/a* | gpio0_58 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_39 | P9_39 | *n/a* | *n/a* | gpio0_54 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_40 | P9_40 | *n/a* | *n/a* | gpio0_81 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_41 | P9_41 | gpio0_20 | gpio6_20 | gpio1_0 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/P9_42 | P9_42 | gpio0_7 | gpio4_18 | gpio0_123 | +------------------------+-------------+----------+-----------+-----------+ | /sys/class/leds/A15 | A15 | gpio0_19 | NA | NA | +------------------------+-------------+----------+-----------+-----------+ .. _bone-i2c: |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_#**. .. table:: Bone I2C +------------------+--------------+--------+-------+------------+-----------------+--------+-----------+ | SYSFS | DT symbol | Black | AI | AI-64 | SCL | SDA | Overlay | +==================+==============+========+=======+============+=================+========+===========+ | /dev/bone/i2c/0 | bone_i2c_0 | I2C0 | I2C1 | TBD | .. centered:: N/A (On-board) | +------------------+--------------+--------+-------+------------+-----------------+--------+-----------+ | /dev/bone/i2c/1 | bone_i2c_1 | I2C1 | I2C5 | MAIN_I2C6 | P9.17 | P9.18 | BONE-I2C1 | +------------------+--------------+--------+-------+------------+-----------------+--------+-----------+ | /dev/bone/i2c/2 | bone_i2c_2 | I2C2 | I2C4 | MAIN_I2C3 | P9.19 | P9.20 | BONE-I2C2 | +------------------+--------------+--------+-------+------------+-----------------+--------+-----------+ | /dev/bone/i2c/3 | bone_i2c_3 | I2C1 | I2C3 | MAIN_I2C4 | P9.24 | P9.26 | BONE-I2C3 | +------------------+--------------+--------+-------+------------+-----------------+--------+-----------+ | /dev/bone/i2c/4 | bone_i2c_4 | I2C2 | - | MAIN_I2C3 | P9.21 | P9.22 | BONE-I2C4 | +------------------+--------------+--------+-------+------------+-----------------+--------+-----------+ .. important:: In the case the same controller is used for 2 different bone bus nodes, usage of those nodes is mutually-exclusive. .. code-block:: c :linenos: :caption: Example device tree overlay to enable I2C driver :name: bone_cape_spec_i2c_example /dts-v1/; /plugin/; &bone_i2c_1 { status = "okay"; accel@1c { compatible = "fsl,mma8453"; reg = <0x1c>; }; } In :ref:`bone_cape_spec_i2c_example`, you can specify what driver you want to load and provide any properties it might need. * https://www.kernel.org/doc/html/v5.10/i2c/summary.html * https://www.kernel.org/doc/html/v5.10/i2c/instantiating-devices.html#method-1-declare-the-i2c-devices-statically * https://www.kernel.org/doc/Documentation/devicetree/bindings/i2c/ .. _bone-spi: SPI *** SPI bone bus nodes allow creating compatible overlays for Black, AI and AI-64. .. table:: Bone bus SPI +--------------------+------------+--------+-------+------------+--------+--------+--------+---------------------------------------+---------------+ | Bone bus | DT symbol | Black | AI | AI-64 | SDO | SDI | CLK | CS | Overlays | +====================+============+========+=======+============+========+========+========+=======================================+===============+ | /dev/bone/spi/0.x | bone_spi_0 | SPI0 | SPI2 | MAIN_SPI6 | P9.18 | P9.21 | P9.22 | - P9.17 (CS0) | - BONE-SPI0_0 | | | | | | | | | | - P9.23 (CS1 - BBAI and BBAI64 only) | - BONE-SPI0_1 | +--------------------+------------+--------+-------+------------+--------+--------+--------+---------------------------------------+---------------+ | /dev/bone/spi/1.x | bone_spi_1 | SPI1 | SPI3 | MAIN_SPI7 | P9.30 | P9.29 | P9.31 | - P9.28 (CS0) | - BONE-SPI1_0 | | | | | | | | | | - P9.42 (CS1) | - BONE-SPI1_1 | +--------------------+------------+--------+-------+------------+--------+--------+--------+---------------------------------------+---------------+ .. code-block:: c :linenos: :caption: Example device tree overlay to enable SPI driver :name: bone_cape_spec_spi_example /dts-v1/; /plugin/; &bone_spi_0 { status = "okay"; pressure@0 { compatible = "bosch,bmp280"; reg = <0>; /* CS0 */ spi-max-frequency = <5000000>; }; } In :ref:`bone_cape_spec_spi_example`, you can specify what driver you want to load and provide any properties it might need. * https://www.kernel.org/doc/html/v5.10/spi/spi-summary.html * https://www.kernel.org/doc/Documentation/devicetree/bindings/spi/ .. _bone-uart: UART ***** UART bone bus nodes allow creating compatible overlays for Black, AI and AI-64. .. table:: Bone bus UART +-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+ | Bone bus | DT symbol | Black | AI | AI-64 | TX | RX | RTSn | CTSn | Overlays | +===================+==============+========+========+=======================+========+========+=============================================+=============================================+============+ | /dev/bone/uart/0 | bone_uart_0 | UART0 | UART1 | MAIN_UART0 | .. centered:: NA (console debug header pins) | +-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+ | /dev/bone/uart/1 | 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 | +-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+ | /dev/bone/uart/2 | bone_uart_2 | UART2 | UART3 | *n/a* | P9.21 | P9.22 | P8.38 (N/A on AM5729) | P8.37 (N/A on AM5729) | BONE-UART2 | +-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+ | /dev/bone/uart/3 | bone_uart_3 | UART3 | *n/a* | *n/a* | P9.42 | *n/a* | *n/a* | *n/a* | BONE-UART3 | +-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+ | /dev/bone/uart/4 | 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 | +-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+ | /dev/bone/uart/5 | bone_uart_5 | UART5 | UART8 | MAIN_UART5 | P8.37 | P8.38 | P8.32 | P8.31 | BONE-UART5 | +-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+ | /dev/bone/uart/6 | bone_uart_6 | *n/a* | *n/a* | MAIN_UART8 | P8.29 | P8.28 | *n/a* | *n/a* | BONE-UART6 | +-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+ | /dev/bone/uart/7 | bone_uart_7 | *n/a* | *n/a* | MAIN_UART2 | P8.34 | P8.22 | *n/a* | *n/a* | BONE-UART7 | +-------------------+--------------+--------+--------+-----------------------+--------+--------+---------------------------------------------+---------------------------------------------+------------+ .. _bone-can: CAN ***** CAN bone bus nodes allow creating compatible overlays for Black, AI and AI-64. .. table:: Bone bus CAN +------------------+--------+--------------------------+------------+--------+--------+-----------+ | Bone bus | Black | AI | AI-64 | TX | RX | Overlays | +==================+========+==========================+============+========+========+===========+ | /dev/bone/can/0 | CAN0 | - | MAIN_MCAN0 | P9.20 | P9.19 | BONE-CAN0 | +------------------+--------+--------------------------+------------+--------+--------+-----------+ | /dev/bone/can/1 | CAN1 | CAN2 | MAIN_MCAN4 | P9.26 | P9.24 | BONE-CAN1 | +------------------+--------+--------------------------+------------+--------+--------+-----------+ | /dev/bone/can/2 | - | CAN1 (rev A2 and later) | MAIN_MCAN5 | P8.08 | P8.07 | BONE-CAN2 | +------------------+--------+--------------------------+------------+--------+--------+-----------+ | /dev/bone/can/3 | - | - | MAIN_MCAN6 | P8.10 | P8.09 | BONE-CAN3 | +------------------+--------+--------------------------+------------+--------+--------+-----------+ | /dev/bone/can/4 | - | - | MAIN_MCAN7 | P8.05 | P8.06 | BONE-CAN4 | +------------------+--------+--------------------------+------------+--------+--------+-----------+ .. _bone-analog: 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 * .. _bone-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 ========================= 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>`_