Date: Sat, 15 May 2021 14:43:45 -0700 From: Mark Millard via freebsd-arm <freebsd-arm@freebsd.org> To: Elwood Downey <elwood.downey@gmail.com> Cc: freebsd-arm@freebsd.org Subject: Re: GPIO pullups not working -- SOLVED (or at least understood) [brcm,bcm2711-gpio in compat_data correct?] Message-ID: <D0F2CF16-E2DB-4D8A-A153-B6BD78F6DE7A@yahoo.com> In-Reply-To: <CAL98DL4SWGA%2Bb%2BvtfDhLna2TEmwfKnLZ2-E7-CgC%2BPvL08MvXw@mail.gmail.com> References: <CAL98DL70Zt7oV57MwNrOKakXPieu5smjR%2BNJdkUUHcBjiwdvTg@mail.gmail.com> <CAL98DL4SWGA%2Bb%2BvtfDhLna2TEmwfKnLZ2-E7-CgC%2BPvL08MvXw@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2021-May-5, at 21:04, Elwood Downey <elwood.downey at gmail.com> = wrote: > A little followup to my own post.... >=20 > I have done some bare metal programming on the broadcom devices in the = past > so I thought I'd try to find the relevant freebsd driver. The closest = one I > could find in /usr/src is for the bcm2835. >=20 > This chip was used on the Pi3. The Pi4 uses the bcm2711 which, in = their > infinite wisdom, uses a different register set and protocol for = controlling > the gpio pullups. Code for the 2835 executing on a 2711 is harmless = but > does nothing, in agreement with my observations. Does this mean that main's 2551d928501f 2021-02-17 commit of: diff --git a/sys/arm/broadcom/bcm2835/bcm2835_gpio.c = b/sys/arm/broadcom/bcm2835/bcm2835_gpio.c index 61513df9c008..70b69eb154e8 100644 --- a/sys/arm/broadcom/bcm2835/bcm2835_gpio.c +++ b/sys/arm/broadcom/bcm2835/bcm2835_gpio.c @@ -157,6 +157,7 @@ enum bcm_gpio_pud { static struct ofw_compat_data compat_data[] =3D { {"broadcom,bcm2835-gpio", 1}, {"brcm,bcm2835-gpio", 1}, + {"brcm,bcm2711-gpio", 1}, {NULL, 0} }; was inappropriate? > Then I found bcm2835_gpio.c which I must say is beautifully written. = I'm > tempted to tweak a few lines in bcm_gpio_set_pud() but I'd have to = figure > out how to rebuild the kernel which I will leave for another day. >=20 > Not a big deal, until the 2711 is supported I'll just use an external > pullup. >=20 > All the best, >=20 > On Tue, May 4, 2021 at 11:24 AM Elwood Downey = <elwood.downey@gmail.com> > wrote: >=20 >> Hello all; >>=20 >> Using RELEASE-13 on Raspberry Pi 4 I can not seem to engage GPIO = input >> pullups. Doing so should cause an input not connected to anything to = read >> high but it always reads low. Connecting the pin to 3.3V does read hi = so I >> know the pin is working correctly as an input, just that the pullup = is not >> connecting. >>=20 >> I configure the pin as follows: >>=20 >> freebsdpi# gpioctl -c 21 PU IN >> freebsdpi# gpioctl -l | grep 21 >> pin 21: 0 pin 21<IN,PU> >> freebsdpi# sysctl dev.gpio.0.pin.21.function >> dev.gpio.0.pin.21.function: input >>=20 >> # test with pin disconnected >> freebsdpi# gpioctl 21 >> 0 >>=20 >> Now connecting to 3.3V: >> freebsdpi# gpioctl 21 >> 1 >>=20 >> Installing a microSD with Raspbian Buster in the same Pi, I can = repeat the >> above using their tools and the pullup works as expected, so I know = the >> hardware is fine. =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D0F2CF16-E2DB-4D8A-A153-B6BD78F6DE7A>