Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Aug 2022 14:05:05 +1000
From:      Peter Jeremy <peterj@freebsd.org>
To:        Ganbold Tsagaankhuu <ganbold@freebsd.org>
Cc:        src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
Subject:   Re: git: 901df07a4768 - main - Code refactoring for existing rk_gpio driver. It supports gpio type checking. Depending on gpio type some register addresses are different.
Message-ID:  <YwGu8dSqAcVoMNt2@server.rulingia.com>
In-Reply-To: <202208191322.27JDMv0b007432@gitrepo.freebsd.org>
References:  <202208191322.27JDMv0b007432@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--oB64sfg/x42kUbgQ
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On 2022-Aug-19 13:22:57 +0000, Ganbold Tsagaankhuu <ganbold@FreeBSD.org> wr=
ote:
>The branch main has been updated by ganbold:
>
>URL: https://cgit.FreeBSD.org/src/commit/?id=3D901df07a47684dca7b06f60d838=
a56456d751a23
>
>commit 901df07a47684dca7b06f60d838a56456d751a23
>Author:     S=F8ren Schmidt <sos@FreeBSD.org>
>AuthorDate: 2022-08-19 13:22:01 +0000
>Commit:     Ganbold Tsagaankhuu <ganbold@FreeBSD.org>
>CommitDate: 2022-08-19 13:22:01 +0000
>
>    Code refactoring for existing rk_gpio driver.
>    It supports gpio type checking. Depending on gpio type some
>    register addresses are different.
>   =20
>    Reviewed by:    manu
>    Differential Revision:  https://reviews.freebsd.org/D36262

My Rock64 is now hanging on boot as follows:
rk_pinctrl0: <RockChip Pinctrl controller> on ofwbus0
gpio0: <RockChip GPIO Bank controller> mem 0xff210000-0xff2100ff irq 53 on =
rk_pinctrl0
gpio0: Unknown gpio version 48000000
<<hang>>

>@@ -170,6 +221,43 @@ rk_gpio_attach(device_t dev)
> 		rk_gpio_detach(dev);
> 		return (ENXIO);
> 	}
>+	RK_GPIO_LOCK(sc);
>+	sc->version =3D rk_gpio_read_4(sc, RK_GPIO_VERSION);
>+	RK_GPIO_UNLOCK(sc);

This call to rk_gpio_read_4() looks wrong:
a) rk_gpio_read_4() tests sc->version which this call is setting.
b) The second argument to rk_gpio_read_4() is a "enum gpio_regs", not
   an actual offset - RK_GPIO_VERSION (=3D0x78) is way outside the
   sc->regs array.
c) sc->regs is also uninitialised at this point.

Maybe this should call RK_GPIO_READ() instead, but neither my RK3328
TRM (revision 1.2 from July 2017) nor my RK3399 TRM (revision 1.4 from
April 2017) document a GPIO register at offset 0x78 - both only go to
0x60.  (If you have a later TRM for either chip, I would be interested
in a copy).

--=20
Peter Jeremy

--oB64sfg/x42kUbgQ
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEE7rKYbDBnHnTmXCJ+FqWXoOSiCzQFAmMBrutfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEVF
QjI5ODZDMzA2NzFFNzRFNjVDMjI3RTE2QTU5N0EwRTRBMjBCMzQACgkQFqWXoOSi
CzTV2w//YNj3ms/689BX2nuQxGVN88RDNrMNE88p9jmVoZjK5cSTf1S6/AS1ijgj
WoyozC/tz4Bhaiygb3K4zaoXqoDmsvkuV899UPj0ECLA7UywbCImqkefVWf1hytP
Fc6l+I+JgCpRc1pErJLLMZsrssEG8TE3fFmhzD0mcXtZNcJ9HDC8sigoHgq4s3Vi
sfwxGaqih2JLBQjaS0W/7zIhuumrKwsnaMjvzn75CSrNqtgZJHugOslCrTRz+Vut
mfeAzmdlBan2v74XxEbgZrskSxSUIFdBMZDAAYByr1nLzjDBURuH6Hj+ZKLn6NkH
Yzf468TVbZH5IkBRIT9KLtbMEoGxqyyNKuDdEmd2m83XUoEpFdX7ZT18KaKbTr81
fPqXE8vqlVoPeI2BQcp7eHbkJ52CG9Z+MYEcL9jxFV3umc6xTmbTnhtphSgCYNvN
+nGQqzlnI2ym+hyMSCZjUJ3leJKcYeDbq00xc/5E8rV3Ylu+J+mB9SE/n+3AX3PS
8EQp/Sok86OLjbGPNJqoAXnyNrdrrIsleYC5I/qNcJpnAqHfyWQngsvk4IITiFqd
bgIh0+oqwtGy7yb9F2Qk3mOVoOwGiJJGAwu/Pi476Grgtax1s/0UTQChqEYEt3sx
B4pt8QehZvKSpCckXMiw1x3mx7tDHXpVh5H/WCWMGA7C3FwjGDs=
=ytU4
-----END PGP SIGNATURE-----

--oB64sfg/x42kUbgQ--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YwGu8dSqAcVoMNt2>