Re: device-tree on BeagleBone Black (enabling UART)

Ian Lepore <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On Sun, 2021-02-07 at 00:58 +0100, Kristoff wrote:
> Hi all,
> 
> 
> I was pointed to this mailing-list by the FreeBSD "stand" at fosdem.
> 
> 
> I am running FreeBSD 12.1 on a beaglebone black. As I want to use it
> for 
> a time-server (i.e. connect it to a GPS), I want to enable an
> additional 
> UART (and also a pps gpio-pin, I guess).
> 
> 
> I have been trying to create a DTS-overlay file for this, but for
> some 
> reason, I do not get this OK.
> 
> 
> The overlay file (see below) I use is below.
> 
> Some remarks:
> - I compile the blob with dtc, copy the file to /boot/DTB and modify 
> /boot/loader.conf
> I guess this is correct?
> 
> - when I do "ofwdump -a -p", I see that UART1_pins exists, but no
> UART1.
> 
> - while searching the web, I found multiple posts about this. What I 
> have noticed is that in quite a lot of them, in the DTS file the
> pinmux 
> for the UART has the TX pins first followed by the RX pin.
> However, looking the output of ofwdump, that seams to have the RX
> pin 
> first. (at least for UART0, which does seams to work)
> 
> So am I correct to assume that the pinmux must have the RX pin
> 
> 
> Can somebody shed some light on this?
> 
> Any feedback would be welcome.
> As far as I see, enabling an UART using the Device-tree should be
> quite 
> simple, so I do not understand why I cannot get this to work.
> 
> 
> --- cut here --- cut here --- cut here --- cut here --- cut here ---
> cut 
> here --- cut here --- cut here ---
> /dts-v1/;
> /plugin/;
> 
> / {
>          compatible = "ti,am335x-bone-black", "ti,am335x-bone",
> "ti,am33xx";
> 
>          fragment@0 {
>                  target = <&am33xx_pinmux>;
>                  __overlay__ {
>                          uart1_pins: pinmux_uart1_pins {
>                                  pinctrl-single,pins = <
>                                      0x180 0x25 /* P9.26 
> uart1_rxd.uart1_rxd MODE5 INPUT (RX) */
>                                      0x184 0x05 /* P9.24 
> uart1_txd.uart1_txd MODE5 OUTPUT (TX) */
>                                  >;
>                    };
>                  };
>          };
> 
>          fragment@1 {
>                  target = <&uart1>;
>                  __overlay__ {
>                                                          status =
> "okay";
> pinctrl-names = "default";
>                                                          pinctrl-0 = 
> <&uart1_pins>;
>                  };
>          };
> };
> 
> 
> --- cut here --- cut here --- cut here --- cut here --- cut here ---
> cut 
> here --- cut here --- cut here ---
> 
> 
> 
> Cheerio! Kr. Bonne.
> 

The beaglebone has a special pps driver that uses the am335x chip's
timer hardware to measure the pps pulse time with better accuracy than
the generic gpio-pps driver.  To use it, add 

  am335x_dmtpps_load=YES

to your /boot/loader.conf, and use this overlay to set up the pps pin:

/dts-v1/;
/plugin/;

#include <dt-bindings/pinctrl/am33xx.h>

/ {
        compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
};

&am33xx_pinmux {
        timer4_pins: timer4_pins {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x890, (PIN_INPUT | MUX_MODE2))  /* timer4 */
                >;
        };
};

&timer4 {
        pinctrl-names = "default";
        pinctrl-0 = <&timer4_pins>;
        status = "okay";
};

-- Ian


_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-arm
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.