Date: Thu, 1 Sep 2022 07:23:13 GMT From: Ganbold Tsagaankhuu <ganbold@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 48551d3240a0 - main - Fix problem getting gpio version during attach. Both RK3328 and RK3399 don't have GPIO_VER_ID register. Set gpio version depending on compat string of the parent. Message-ID: <202209010723.2817NDwk073618@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by ganbold: URL: https://cgit.FreeBSD.org/src/commit/?id=48551d3240a052f7c0e2ebf9b0e97327f4a85048 commit 48551d3240a052f7c0e2ebf9b0e97327f4a85048 Author: Ganbold Tsagaankhuu <ganbold@FreeBSD.org> AuthorDate: 2022-09-01 07:21:56 +0000 Commit: Ganbold Tsagaankhuu <ganbold@FreeBSD.org> CommitDate: 2022-09-01 07:21:56 +0000 Fix problem getting gpio version during attach. Both RK3328 and RK3399 don't have GPIO_VER_ID register. Set gpio version depending on compat string of the parent. --- sys/arm64/rockchip/rk_gpio.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/sys/arm64/rockchip/rk_gpio.c b/sys/arm64/rockchip/rk_gpio.c index c3b1044df2f7..0b4012707363 100644 --- a/sys/arm64/rockchip/rk_gpio.c +++ b/sys/arm64/rockchip/rk_gpio.c @@ -259,12 +259,13 @@ static int rk_gpio_attach(device_t dev) { struct rk_gpio_softc *sc; - phandle_t node; + phandle_t parent_node, node; int err, i; sc = device_get_softc(dev); sc->sc_dev = dev; sc->pinctrl = device_get_parent(dev); + parent_node = ofw_bus_get_node(sc->pinctrl); node = ofw_bus_get_node(sc->sc_dev); if (!OF_hasprop(node, "gpio-controller")) @@ -303,9 +304,15 @@ rk_gpio_attach(device_t dev) return (ENXIO); } - RK_GPIO_LOCK(sc); - sc->version = rk_gpio_read_4(sc, RK_GPIO_VERSION); - RK_GPIO_UNLOCK(sc); + /* + * RK3568 has GPIO_VER_ID register, however both + * RK3328 and RK3399 doesn't have. So choose the + * version based on parent's compat string. + */ + if (ofw_bus_node_is_compatible(parent_node, "rockchip,rk3568-pinctrl")) + sc->version = RK_GPIO_TYPE_V2; + else + sc->version = RK_GPIO_TYPE_V1; switch (sc->version) { case RK_GPIO_TYPE_V1:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202209010723.2817NDwk073618>