Skip site navigation (1)Skip section navigation (2)
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>