From owner-freebsd-arm@freebsd.org Mon Feb 13 16:56:51 2017 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 13E1BCDDD65 for ; Mon, 13 Feb 2017 16:56:51 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from outbound1b.ore.mailhop.org (outbound1b.ore.mailhop.org [54.200.247.200]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E97F8E2F for ; Mon, 13 Feb 2017 16:56:50 +0000 (UTC) (envelope-from ian@freebsd.org) X-MHO-User: 6e55dd3e-f20d-11e6-ba57-8bc134ee460a X-Report-Abuse-To: https://support.duocircle.com/support/solutions/articles/5000540958-duocircle-standard-smtp-abuse-information X-Originating-IP: 73.78.92.27 X-Mail-Handler: DuoCircle Outbound SMTP Received: from ilsoft.org (unknown [73.78.92.27]) by outbound1.ore.mailhop.org (Halon) with ESMTPSA id 6e55dd3e-f20d-11e6-ba57-8bc134ee460a; Mon, 13 Feb 2017 16:56:58 +0000 (UTC) Received: from rev (rev [172.22.42.240]) by ilsoft.org (8.15.2/8.15.2) with ESMTP id v1DGuetj005747; Mon, 13 Feb 2017 09:56:40 -0700 (MST) (envelope-from ian@freebsd.org) Message-ID: <1487005000.10020.292.camel@freebsd.org> Subject: Re: Questions about BBB/BBG dtb names vs. content From: Ian Lepore To: Tony Hain , "'Oleksandr Tymoshenko'" Cc: freebsd-arm@freebsd.org Date: Mon, 13 Feb 2017 09:56:40 -0700 In-Reply-To: <0fe001d285c7$032c32a0$098497e0$@tndh.net> References: <0ee901d28406$052ed070$0f8c7150$@tndh.net> <20170211015231.GA56071@bluezbox.com> <0f3901d2849a$3ac2ca40$b0485ec0$@tndh.net> <1486841770.10020.287.camel@freebsd.org> <0fe001d285c7$032c32a0$098497e0$@tndh.net> Content-Type: text/plain; charset="ISO-8859-1" X-Mailer: Evolution 3.18.5.1 FreeBSD GNOME Team Port Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Feb 2017 16:56:51 -0000 On Sun, 2017-02-12 at 23:01 -0800, Tony Hain wrote: > > > > > -----Original Message----- > > From: Ian Lepore [mailto:ian@freebsd.org] > > Sent: Saturday, February 11, 2017 11:36 AM > > To: Tony Hain; 'Oleksandr Tymoshenko' > > Cc: freebsd-arm@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