Re: GPIO pullups not working -- SOLVED (or at least understood) [brcm,bcm2711-gpio in compat_data correct?]
Date: Sat, 15 May 2021 21:43:45 UTC
On 2021-May-5, at 21:04, Elwood Downey <elwood.downey at gmail.com> wrote: > A little followup to my own post.... > > 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. > > 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[] = { {"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. > > Not a big deal, until the 2711 is supported I'll just use an external > pullup. > > All the best, > > On Tue, May 4, 2021 at 11:24 AM Elwood Downey <elwood.downey@gmail.com> > wrote: > >> Hello all; >> >> 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. >> >> I configure the pin as follows: >> >> 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 >> >> # test with pin disconnected >> freebsdpi# gpioctl 21 >> 0 >> >> Now connecting to 3.3V: >> freebsdpi# gpioctl 21 >> 1 >> >> 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. === Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)