Re: GPIO pullups not working -- SOLVED (or at least understood) [brcm,bcm2711-gpio in compat_data correct?]

Mark Millard via freebsd-arm <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
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 <[email protected]>
> 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)
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.