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)