Questions about BBB/BBG dtb names vs. content

Tony Hain tony at tndh.net
Wed Feb 15 17:34:19 UTC 2017


Ian Lepore wrote:
> >     ---------------   snip   ----------------------
> 
> It looks like you've designed it so that you have to modify the stock
source to
> include that file above.  Instead, reverse that.  Remove the block that
has the
> model= and all, and in its place do
> 
>  #include "am335x-bonegreen.dts"
> 
> and then follow that with the &am33xx_pinmux {...} and #uartN {...} blocks
> you already have.
> 
> Then you just need to tell crochet to build that dts file instead of (or
in
> addition to) the standard ones.  I don't use crochet, so I'm not sure how
to
> make it do that, but someone here can probably give us the right
incantation.

Well crochet appears to be an obscure collection of scripts that do not
provide an option for specific dts files. With the only configuration option
being at the board level, Beaglebone, it builds dtb's for both White and
Black, and I can't figure out how to modify that. My approach was to move
the black.dts out of the way and park a modified green.dts in its place,
with the include for the uarts. Yes I could have put the uart definitions in
the dts, but it seems more broadly applicable to keep that as a full set to
be included when needed, rather than cluttering up the base dts for every
board type. The list  I sent the other day had syntax errors, as well as
duplicating the uart0_pins label, so dtc kept failing, and the error message
was not descriptive enough to make debugging easy. In any case, with the
steps below a crochet build completed, but I keep getting "read-only file
system - growfs: /dev/mmcsd0s2: Operation not permitted " and " cannot open
/etc/fstab: No such file or directory " after the resize so I don't know if
it runs on the BBG yet.

mv am335x-boneblack.dts am335x-boneblack.dts.dist
cp am335x-bonegreen.dts am335x-boneblack.dts
(fav editor) --- am335x-boneblack.dts
diff am335x-bonegreen.dts am335x-boneblack.dts(modified)

> #include "am335x-bone-uarts.dtsi"

< &am33xx_pinmux {
<       uart2_pins: uart2_pins {
<               pinctrl-single,pins = <
<                       AM33XX_IOPAD(0x950, PIN_INPUT | MUX_MODE1)      /*
spi0_sclk.uart2_rxd */
<                       AM33XX_IOPAD(0x954, PIN_OUTPUT | MUX_MODE1)     /*
spi0_d0.uart2_txd */
<               >;
<       };
< };
<
< &uart2 {
<       pinctrl-names = "default";
<       pinctrl-0 = <&uart2_pins>;
<       status = "okay";
< };
<


cat am335x-bone-uarts.dtsi
/* am335x-bone-uarts.dtsi
 *
 * BeagleBone Green / Black - All 6 uarts defined :
 *   this was difficult to find as the SRM doesn't include the address
offset,
 *       and example dts files found by search were incomplete,
 *       many with incorrect offsets
 *   eventually tripped over address offset P8/9 maps at:
 *
http://www.siue.edu/~gengel/bbbWebStuff/BeagleboneBlackP8HeaderTable.pdf
 *
http://www.siue.edu/~gengel/bbbWebStuff/BeagleboneBlackP9HeaderTable.pdf
 *   coorelated with 335x pin map at
 *     http://www.ti.com/lit/ds/symlink/am3359.pdf
 *         zcz ball number matches above tables
 *
 *   compiled by Tony Hain - 2/12/17
 *
 *  modify comment markers below to enable/disable required uarts
 *
 *  add  #include "am335x-bone-uarts.dtsi"   to board dts
 */

//     IOPAD  Addr offset | Direction  | MuxMode  |  Connector | Proc pin |
SignalName | Conflict

&am33xx_pinmux {
//      uart0_pins: uart0_pins {
//              pinctrl-single,pins = <
//      AM33XX_IOPAD(0x970, PIN_INPUT_PULLUP | MUX_MODE0)    /* J1_4 E15
uart0_rxd */
//      AM33XX_IOPAD(0x974, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* J1_5 E16
uart0_txd */
//      AM33XX_IOPAD(0x978, PIN_OUTPUT | MUX_MODE5)          /* P9_20 D18
uart0_ctsn ! uart1_cts*/
//      AM33XX_IOPAD(0x97c, PIN_INPUT | MUX_MODE5)           /* P9_19 D17
uart0_rtsn ! uart1_rts*/
//              >;
//      };

        uart1_pins: uart1_pins {
                pinctrl-single,pins = <
        AM33XX_IOPAD(0x980, PIN_INPUT | MUX_MODE0)           /* P9_26 D16
uart1_rxd */
        AM33XX_IOPAD(0x984, PIN_INPUT | MUX_MODE0)           /* P9_24 D15
uart1_txd */
//      AM33XX_IOPAD(0x978, PIN_INPUT_PULLDOWN | MUX_MODE0)  /* P9_20 D18
uart1_ctsn ! uart0_cts*/
//      AM33XX_IOPAD(0x97c, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* P9_19 D17
uart1_rtsn ! uart0_rts*/
//      AM33XX_IOPAD(0xXxx, PIN_INPUT_PULLDOWN | MUX_MODE5)  /* No_pin G16
uart1_ri */
//      AM33XX_IOPAD(0xXxx, PIN_INPUT_PULLDOWN | MUX_MODE5)  /* No_pin K18
uart1_dcd */
//      AM33XX_IOPAD(0xXxx, PIN_INPUT_PULLDOWN | MUX_MODE5)  /* No_pin L18
uart1_dsr */
//      AM33XX_IOPAD(0xXxx, PIN_OUTPUT_PULLDOWN | MUX_MODE5) /* No_pin L17
uart1_dtr */
                >;
        };

        uart2_pins: uart2_pins {
                pinctrl-single,pins = <
        AM33XX_IOPAD(0x950, PIN_INPUT | MUX_MODE1)           /* P9_22 A17
uart2_rxd */
        AM33XX_IOPAD(0x954, PIN_OUTPUT | MUX_MODE1)          /* P9_21 B17
uart2_txd */
//      AM33XX_IOPAD(0x8c0, PIN_INPUT_PULLDOWN | MUX_MODE6)  /* P8_37 U1
uart2_ctsn ! uart5_txd*/
//      AM33XX_IOPAD(0x8b8, PIN_OUTPUT_PULLDOWN | MUX_MODE6) /* P8_38 U2
uart2_rtsn ! uart5_rxd*/
                >;
        };

        uart3_pins: uart3_pins {
                pinctrl-single,pins = <
//      AM33XX_IOPAD(0xXxx, PIN_INPUT | MUX_MODE1)           /* No_pin C15
uart3_rxd ! hdmi */
        AM33XX_IOPAD(0x964, PIN_OUTPUT_PULLUP | MUX_MODE1)   /* P9_42 C18
uart3_txd */
//      AM33XX_IOPAD(0x8c8, PIN_INPUT_PULLUP | MUX_MODE6)    /* P8_36 U3
uart3_ctsn */
//      AM33XX_IOPAD(0x8cc, PIN_OUTPUT | MUX_MODE6)          /* P8_34 U4
uart3_rtsn */
                >;
        };

        uart4_pins: uart4_pins {
                pinctrl-single,pins = <
        AM33XX_IOPAD(0x870, PIN_INPUT_PULLUP | MUX_MODE6)    /* P9_11 T17
uart4_rxd */
        AM33XX_IOPAD(0x874, PIN_OUTPUT_PULLDOWN | MUX_MODE6) /* P9_13 U17
uart4_txd */
//      AM33XX_IOPAD(0x8d0, PIN_INPUT_PULLUP | MUX_MODE6)    /* P8_35 V2
uart4_ctsn */
//      AM33XX_IOPAD(0x8d4, PIN_OUTPUT | MUX_MODE6)          /* P8_33 V3
uart4_rtsn */
                >;
        };

        uart5_pins: uart5_pins {
                pinctrl-single,pins = <
        AM33XX_IOPAD(0x8c4, PIN_INPUT | MUX_MODE4)           /* P8_38 U2
uart5_rxd ! uart2_rts*/
        AM33XX_IOPAD(0x8c0, PIN_OUTPUT | MUX_MODE4)          /* P8_37 U1
uart5_txd ! uart2_cts*/
//      AM33XX_IOPAD(0x8d8, PIN_INPUT_PULLUP | MUX_MODE6)    /* P8_31 V4
uart5_ctsn */
//      AM33XX_IOPAD(0x8dc, PIN_OUTPUT | MUX_MODE6)          /* P8_32 T5
uart5_rtsn */
                >;
        };
};

&uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_pins>;
        status = "okay";
//      status = "disabled";
};

&uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart1_pins>;
        status = "okay";
//      status = "disabled";
};

&uart2 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart2_pins>;
//      status = "okay";
        status = "disabled";
};

&uart3 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart3_pins>;
//      status = "okay";
        status = "disabled";
};

&uart4 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart4_pins>;
//      status = "okay";
        status = "disabled";
};

&uart5 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart5_pins>;
//      status = "okay";
        status = "disabled";
};






More information about the freebsd-arm mailing list