[PATCH 3/4] scmi: pinctrl: add pinctrl driver for SCMI

Dan Carpenter dan.carpenter at linaro.org
Wed Feb 25 15:34:43 CET 2026


Thanks, Peng.  This is all good feedback and I'll fix it in the
next version.

On Wed, Feb 25, 2026 at 10:03:13PM +0800, Peng Fan wrote:
> >+int scmi_pinctrl_attrs(struct udevice *dev, enum select_type select_type,
> >+		       unsigned int selector, bool *gpio, unsigned int *count,
> >+		       char *name)
> >+{
> >+	struct scmi_pinctrl_attrs_in in;
> >+	struct scmi_pinctrl_attrs_out out;
> >+	struct scmi_msg msg = {
> >+		.protocol_id = SCMI_PROTOCOL_ID_PINCTRL,
> >+		.message_id = SCMI_PINCTRL_ATTRIBUTES,
> >+		.in_msg = (u8 *)&in,
> >+		.in_msg_sz = sizeof(in),
> >+		.out_msg = (u8 *)&out,
> >+		.out_msg_sz = sizeof(out),
> >+	};
> >+	int ret;
> >+
> >+	in.select_type = select_type;
> >+	in.id = selector;
> >+
> >+	ret = devm_scmi_process_msg(dev, &msg);
> >+	if (ret)
> >+		return ret;
> >+	if (out.status)
> >+		return scmi_to_linux_errno(out.status);
> >+
> >+	//estended_name = FIELD_GET(BIT(31), out.attr);
> 
> Drop this?
> 

Yeah.  I don't think anyone cares about the extended name ever.

> >+	if (gpio)
> >+		*gpio = FIELD_GET(BIT(17), out.attr);
> >+	//pin_only = FIELD_GET(BIT(16), out.attr);
> 
> Ditto.
> 

Huh.  Yeah.  It's not really clear how to handle pin only GPIO pins.

[ snip ]

> >+
> >+#define SCMI_PINCTRL_CONFIG_SETTINGS_FUNCTION -2u
> 
> I see spec is using 2, not understand well -2u here.
> When set to 2, no configuration values need to be returned.
> The command only returns the function selected for the pin or the group.
> 

This was just a magic define I used internally.

regards,
dan carpenter



More information about the U-Boot mailing list