Hi Heiko, On 2024-11-21 15:27, Heiko Stuebner wrote: > From: Steven Liu <steven....@rock-chips.com> > > Add support for the rk3576 variant of pinctrl. > > Signed-off-by: Steven Liu <steven....@rock-chips.com> > [adapted to mainline u-boot] > Signed-off-by: Heiko Stuebner <he...@sntech.de> > --- > drivers/pinctrl/rockchip/Makefile | 1 + > drivers/pinctrl/rockchip/pinctrl-rk3576.c | 287 ++++++++++++++++++++ > drivers/pinctrl/rockchip/pinctrl-rockchip.h | 3 + > 3 files changed, 291 insertions(+) > create mode 100644 drivers/pinctrl/rockchip/pinctrl-rk3576.c > > diff --git a/drivers/pinctrl/rockchip/Makefile > b/drivers/pinctrl/rockchip/Makefile > index c91f650b043..468840913dd 100644 > --- a/drivers/pinctrl/rockchip/Makefile > +++ b/drivers/pinctrl/rockchip/Makefile > @@ -15,6 +15,7 @@ obj-$(CONFIG_ROCKCHIP_RK3328) += pinctrl-rk3328.o > obj-$(CONFIG_ROCKCHIP_RK3368) += pinctrl-rk3368.o > obj-$(CONFIG_ROCKCHIP_RK3399) += pinctrl-rk3399.o > obj-$(CONFIG_ROCKCHIP_RK3568) += pinctrl-rk3568.o > +obj-$(CONFIG_ROCKCHIP_RK3576) += pinctrl-rk3576.o > obj-$(CONFIG_ROCKCHIP_RK3588) += pinctrl-rk3588.o > obj-$(CONFIG_ROCKCHIP_RV1108) += pinctrl-rv1108.o > obj-$(CONFIG_ROCKCHIP_RV1126) += pinctrl-rv1126.o > diff --git a/drivers/pinctrl/rockchip/pinctrl-rk3576.c > b/drivers/pinctrl/rockchip/pinctrl-rk3576.c > new file mode 100644 > index 00000000000..9399540ed4a > --- /dev/null > +++ b/drivers/pinctrl/rockchip/pinctrl-rk3576.c > @@ -0,0 +1,287 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * (C) Copyright 2024 Rockchip Electronics Co., Ltd > + */ > + > +#include <dm.h> > +#include <dm/pinctrl.h> > +#include <regmap.h> > +#include <syscon.h> > + > +#include "pinctrl-rockchip.h" > +#include <dt-bindings/pinctrl/rockchip.h> > + > +static int rk3576_set_mux(struct rockchip_pin_bank *bank, int pin, int mux) > +{ > + struct rockchip_pinctrl_priv *priv = bank->priv; > + int iomux_num = (pin / 8); > + struct regmap *regmap; > + int reg, ret, mask; > + u8 bit; > + u32 data; > + > + debug("setting mux of GPIO%d-%d to %d\n", bank->bank_num, pin, mux);
This and the debug() below is not really needed, pinctrl-rockchip-core.c already has similar debug() calls. > + > + regmap = priv->regmap_base; > + reg = bank->iomux[iomux_num].offset; > + if ((pin % 8) >= 4) > + reg += 0x4; > + bit = (pin % 4) * 4; > + mask = 0xf; > + > + data = (mask << (bit + 16)); > + data |= (mux & mask) << bit; > + > + if (bank->bank_num == 0 && pin >= RK_PB4 && pin <= RK_PB7) > + reg += 0x1FF4; /* GPIO0_IOC_GPIO0B_IOMUX_SEL_H */ > + > + debug("iomux write reg = %x data = %x\n", reg, data); > + > + ret = regmap_write(regmap, reg, data); We should use regmap_update_bits() similar to Linux kernel. Please feel free to squash "fixup: pinctrl: rockchip: support rk3576 pinctrl" at [1] if you agree. [1] https://github.com/Kwiboo/u-boot-rockchip/commits/rk3576-2025.04-wip/ Regards, Jonas > + > + return ret; > +} [snip]