Re: Onewire on BeagleBoneBlack example ?

From: Ian Lepore <ian_at_freebsd.org>
Date: Wed, 20 Dec 2017 16:21:17 -0700
On Wed, 2017-12-20 at 22:58 +0000, Poul-Henning Kamp wrote:
> --------
> In message <97808.1513774311_at_critter.freebsd.dk>, Poul-Henning Kamp writes:
> 
> > 
> > Does anybody have a working example of getting onewire sensors
> > working on beagleboneblack ?
> Ok, with some hints from the usual IRC channel I managed to figure it out:
> 
> 	cd /boot/dfb
> 	mv am335x-boneblack.dtb _am335x-boneblack.dtb
> 	dtc -I dtb -O dts -o am335x-boneblack.dts _am335x-boneblack.dtb
> 	patch am335x-boneblack.dts (see below)
> 	dtc -I dts -O dtb -o am335x-boneblack.dtb am335x-boneblack.dts
> 	echo "owc_load=YES" >> /boot/loader.conf
> 	echo "ow_load=YES" >> /boot/loader.conf
> 	echo "ow_temp_load=YES" >> /boot/loader.conf
> 
> The patching of am335x-boneblack.dts is black magic, but this patch
> worked for me:
> 
> 	root_at_beaglebone:/boot/dtb # diff -u *dts
> 	--- _am335x-boneblack.dts       2017-07-21 11:24:18.229468000 +0000
> 	+++ am335x-boneblack.dts        2017-07-21 19:19:35.166447000 +0000
> 	_at__at_ -2149,6 +2149,14 _at__at_
> 			status = "disabled";
> 		};
> 	 
> 	+       // first number (0x36, 0x4b) refers to "phandle" of gpio#
> 	+       // second number is bit on that *cpu* GPIO
> 	+       // not sure if the third matter, but 1 works.
> 	+       onewire0 { compatible = "w1-gpio"; gpios = <0x36 30 1>; }; // P9::11
> 	+       onewire1 { compatible = "w1-gpio"; gpios = <0x36 31 1>; }; // P9::13
> 	+       onewire2 { compatible = "w1-gpio"; gpios = <0x4b 16 1>; }; // P9::15
> 	+       onewire3 { compatible = "w1-gpio"; gpios = <0x36 3 1>; };  // P9::21
> 	+
> 		__symbols__ {
> 			l4_wkup = "/ocp/l4_wkup_at_44c00000";
> 			wkup_m3 = "/ocp/l4_wkup_at_44c00000/wkup_m3_at_100000";
> 
> Either device tree overlays just plain don't work, I can't figure out how to
> write them (p=0.5).
> 
> I sure get why getting people hooked on FreeBSD with RPi's and
> BeagleBones is not happening :-/
> 

That 3rd number in gpios= describes pin attributes:

    /* Bit 0 express polarity */
    #define GPIO_ACTIVE_HIGH 0
    #define GPIO_ACTIVE_LOW 1

    /* Bit 1 express single-endedness */
    #define GPIO_PUSH_PULL 0
    #define GPIO_SINGLE_ENDED 2


    If you #include <dt-bindings/gpio/gpio.h> in the dts source you can
    just use the symbolic names.

    For years, folks have been espousing the value of getting people hooked
    on freebsd via rpi and beaglebone, but somehow those folks never end up
    doing a lot of committing of arm code that advances that goal, they
    just keep saying what a laudable goal it is.  The people who do work on
    arm code mostly aren't all that interested in rpi or beaglebone, so we
    fight the fires that are reported, and commit code contributed by
    others, but don't do much optional work on them.

    -- Ian
Received on Wed Dec 20 2017 - 22:21:19 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:14 UTC