From aa755bd0661d7862ca4c3da3e5108a0a61b64639 Mon Sep 17 00:00:00 2001 From: Ranjani Vaidyanathan Date: Sat, 22 Feb 2025 10:32:38 -0600 Subject: [PATCH] LFU-834-2 pinctrl: nxp: Add support for vendor defined pinctrl config iMX94 has special muxing options for certain pins. Add new vendor defined pinctrl type to SCMI pinctrl driver to handle these pins. The MUX value field in the IOMUX table is extended to 16 bits where the lower 8 bits represent the current IOMUX value and the upper 8 bits represent the new extended mux added in iMX94. Signed-off-by: Ranjani Vaidyanathan Acked-by: Peng Fan --- drivers/pinctrl/nxp/pinctrl-scmi.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/nxp/pinctrl-scmi.c b/drivers/pinctrl/nxp/pinctrl-scmi.c index ee40c315809..bb2bbd7ee47 100644 --- a/drivers/pinctrl/nxp/pinctrl-scmi.c +++ b/drivers/pinctrl/nxp/pinctrl-scmi.c @@ -31,6 +31,8 @@ #define PINCTRL_TYPE_CONFIG 193 #define PINCTRL_TYPE_DAISY_ID 194 #define PINCTRL_TYPE_DAISY_CFG 195 +#define PINCTRL_TYPE_EXT 196 + #define PINCTRL_NUM_CFGS_SHIFT 2 static int imx_pinconf_scmi_set(struct udevice *dev, u32 mux_ofs, u32 mux, u32 config_val, @@ -47,8 +49,13 @@ static int imx_pinconf_scmi_set(struct udevice *dev, u32 mux_ofs, u32 mux, u32 c }; if (mux_ofs != 0) { in.configs[num_cfgs].type = PINCTRL_TYPE_MUX; - in.configs[num_cfgs].val = mux; + in.configs[num_cfgs].val = mux & 0xFF; num_cfgs++; + if (mux & 0xFF00){ + in.configs[num_cfgs].type = PINCTRL_TYPE_EXT; + in.configs[num_cfgs].val = (mux & 0xFF00) >> 8; + num_cfgs++; + } } if (config_val != 0) { in.configs[num_cfgs].type = PINCTRL_TYPE_CONFIG;