[PATCH v2 1/4] pinctrl: mediatek: add handling for RSEL register

Macpaul Lin (林智斌) Macpaul.Lin at mediatek.com
Tue Apr 7 16:37:55 CEST 2026


On Mon, 2026-03-30 at 11:00 -0500, David Lechner wrote:
> Add a new PINCTRL_PIN_REG_RSEL register type and a new function
> mtk_pinconf_bias_set_pu_pd_rsel() to handle setting it.
> 
> Some MediaTek SoCs have a pin configuration register called RSEL that
> sets the resistance value for bias pullup/pulldown.
> 
> Signed-off-by: David Lechner <dlechner at baylibre.com>
> ---
>  drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 14 ++++++++++++++
>  drivers/pinctrl/mediatek/pinctrl-mtk-common.h |  3 +++
>  2 files changed, 17 insertions(+)
> 
> diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> index d152e216634..1028b8a93f5 100644
> --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> @@ -450,6 +450,20 @@ int mtk_pinconf_bias_set_pupd_r1_r0(struct
> udevice *dev, u32 pin, bool disable,
>  	return 0;
>  }
>  
> +int mtk_pinconf_bias_set_pu_pd_rsel(struct udevice *dev, u32 pin,
> bool disable,
> +				    bool pullup, u32 val)
> +{
> +	int err;
> +
> +	/* val is expected to be one of MTK_PULL_SET_RSEL_XXX */
> +
> +	err = mtk_pinconf_bias_set_pu_pd(dev, pin, disable, pullup,
> val);
> +	if (err)
> +		return err;
> +
> +	return mtk_hw_set_value(dev, pin, PINCTRL_PIN_REG_RSEL, val
> & 0x7);
> +}
> +
>  int mtk_pinconf_bias_set(struct udevice *dev, u32 pin, u32 arg, u32
> val)
>  {
>  	int err;
> diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.h
> b/drivers/pinctrl/mediatek/pinctrl-mtk-common.h
> index 58f13613633..1215fb7094b 100644
> --- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.h
> +++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.h
> @@ -67,6 +67,7 @@ enum {
>  	PINCTRL_PIN_REG_PUPD,
>  	PINCTRL_PIN_REG_R0,
>  	PINCTRL_PIN_REG_R1,
> +	PINCTRL_PIN_REG_RSEL,
>  	PINCTRL_PIN_REG_MAX,
>  };
>  
> @@ -253,6 +254,8 @@ int mtk_pinconf_bias_set_pullen_pullsel(struct
> udevice *dev, u32 pin,
>  					bool disable, bool pullup,
> u32 val);
>  int mtk_pinconf_bias_set_pupd_r1_r0(struct udevice *dev, u32 pin,
> bool disable,
>  				    bool pullup, u32 val);
> +int mtk_pinconf_bias_set_pu_pd_rsel(struct udevice *dev, u32 pin,
> bool disable,
> +				    bool pullup, u32 val);
>  int mtk_pinconf_bias_set_v0(struct udevice *dev, u32 pin, bool
> disable,
>  			    bool pullup, u32 val);
>  int mtk_pinconf_bias_set_v1(struct udevice *dev, u32 pin, bool
> disable,
> 

Reviewed-by: Macpaul Lin <macpaul.lin at mediatek.com>

Thanks!
Macpaul Lin


More information about the U-Boot mailing list