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 <[email protected]> --- 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, -- 2.43.0

