Questions about BBB/BBG dtb names vs. content
Ian Lepore
ian at freebsd.org
Mon Feb 13 16:56:51 UTC 2017
On Sun, 2017-02-12 at 23:01 -0800, Tony Hain wrote:
>
> >
> > -----Original Message-----
> > From: Ian Lepore [mailto:ian at freebsd.org]
> > Sent: Saturday, February 11, 2017 11:36 AM
> > To: Tony Hain; 'Oleksandr Tymoshenko'
> > Cc: freebsd-arm at freebsd.org
> > Subject: Re: Questions about BBB/BBG dtb names vs. content
> >
> > On Sat, 2017-02-11 at 11:08 -0800, Tony Hain wrote:
> > >
> > > >
> > > >
> > > >
> > [...]
> > >
> > >
> > > There is still the open question about the "compatible" strings
> > > containing "-" while the file names do not. If that is what is
> > > coming
> > > from upstream and expected, fine. I just wanted to check to make
> > > sure
> > > something didn't get crossed up during the name changes.
> > > Hopefully I
> > > will get a green build done this weekend.
> > >
> > > Tony
> > There is not necessarily any relationship between dts/dtb filenames
> > and
> > any compat strings within the dtb. The compat strings are defined
> > by the
> > bindings documentation, and are essentially a contract between the
> > dts
> > source and the device driver source. The filenames are a separate
> contract,
> >
> > mostly between vendors and the u-boot source, but even those don't
> > have
> > to agree.
> >
> > Anybody can set the u-boot fdt_file env var to anything they want.
> > IMO,
> that
> >
> > is the right way to handle all this freebsd and local user
> customization... if you
> >
> > want a uart device enabled, then create your own tony-bb.dts that
> > includes
> > the standard beaglebone source, then adds the few lines of code
> > needed to
> > enable the uart, and in u-boot just do setenv fdt_file tony-bb.dtb;
> > saveenv. (At least until overlay support settles down and finds
> > its way
> into
> >
> > freebsd.)
> So how would I get crochet to build that dtb? As far as I can tell I
> need to
> add an include line in the black file, including the compatible for
> green,
> because I can't follow the sequence that actually builds the dts
> initially.
> I did put together a dts for all 6 uarts, because it was a pita to
> find and
> correlate the references which are not collected as a complete set
> anywhere
> as far as I can tell. I offer it here for contrib if it is useful for
> the
> short term, or for the dtbo effort. I am running crochet now, so I am
> not
> positive this works yet, but it should be close.
>
> /* am335x-bone-uarts.dts
> *
> * 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.dts" to board dts
> */
>
> /dts-v1/;
>
> / {
> model = "TI AM335x BeagleBone Green";
> compatible = "ti,am335x-bone-green", "ti,am335x-bone-black",
> "ti,am335x-bone", "ti,am33xx";
> };
>
> &am33xx_pinmux {
> uart0_pins: uart0_pins {
> pinctrl-single,pins = <
> /* Addr offset | Direction | MuxMode | Connector |
> Proc pin
> >
> > SignalName | Conflict
> */
> 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 */
> };
> 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";
> };
>
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.
-- Ian
More information about the freebsd-arm
mailing list