STRUCT SCMI_PINCTRL_PROTO_OPS(9)
π NAME
struct scmi_pinctrl_proto_ops β bestie, this is literally the struct that holds all the operations the SCMI Pinctrl Protocol gives you β¨
π¦ SYNOPSIS
struct scmi_pinctrl_proto_ops {
int (*count_get)(const struct scmi_protocol_handle *ph, enum scmi_pinctrl_selector_type type);
int (*name_get)(const struct scmi_protocol_handle *ph, u32 selector, enum scmi_pinctrl_selector_type type, const char **name);
int (*group_pins_get)(const struct scmi_protocol_handle *ph, u32 selector, const unsigned int **pins, unsigned int *nr_pins);
int (*function_groups_get)(const struct scmi_protocol_handle *ph, u32 selector, unsigned int *nr_groups, const unsigned int **groups);
int (*mux_set)(const struct scmi_protocol_handle *ph, u32 selector, u32 group);
int (*settings_get_one)(const struct scmi_protocol_handle *ph, u32 selector, enum scmi_pinctrl_selector_type type, enum scmi_pinctrl_conf_type config_type, u32 *config_value);
int (*settings_get_all)(const struct scmi_protocol_handle *ph, u32 selector, enum scmi_pinctrl_selector_type type, unsigned int *nr_configs, enum scmi_pinctrl_conf_type *config_types, u32 *config_values);
int (*settings_conf)(const struct scmi_protocol_handle *ph, u32 selector, enum scmi_pinctrl_selector_type type, unsigned int nr_configs, enum scmi_pinctrl_conf_type *config_type, u32 *config_value);
int (*pin_request)(const struct scmi_protocol_handle *ph, u32 pin);
int (*pin_free)(const struct scmi_protocol_handle *ph, u32 pin);
};
π MEMBERS
okay so here's the whole friend group, one function pointer at a time π«Ά
count_getβ hands you back the count of the registered elements in the given type. very "how many of y'all are there" energy πname_getβ returns the name by index of the given type. it's giving "who are you again" but make it polite β¨group_pins_getβ returns the set of pins assigned to the specified group. the whole squad, assembled πfunction_groups_getβ returns the set of groups assigned to the specified function. like, which groups are matching the vibes of this function? πmux_setβ sets the muxing function for groups of pins. muxing = the main character switch-up π₯settings_get_oneβ returns one configuration parameter for the pin or group specified byconfig_type. just the one, no extra πsettings_get_allβ returns all the configuration parameters for the pin or group. the full drop, no cap πsettings_confβ sets the configuration parameter for the pin or group. this is the "actually do the thing" one πΈpin_requestβ aquire the pin before selecting the mux setting. (yes, that's "aquire" β spelling stays exactly as the source says it, iykyk π)pin_freeβ frees the pin, acquired byrequest_pincall. bye bestie, you're released π
π SEE ALSO
go read these next, fr fr β the kernel file ./include/linux/scmi_protocol.h plus all of these: struct scmi_base_info(9), struct scmi_clk_proto_ops(9), struct scmi_perf_proto_ops(9), struct scmi_power_proto_ops(9), struct scmi_sensor_reading(9), struct scmi_range_attrs(9), struct scmi_sensor_axis_info(9), struct scmi_sensor_intervals_info(9), struct scmi_sensor_info(9), struct scmi_sensor_proto_ops(9), struct scmi_reset_proto_ops(9), struct scmi_voltage_info(9), struct scmi_voltage_proto_ops(9), struct scmi_powercap_info(9), struct scmi_powercap_proto_ops(9), struct scmi_notify_ops(9), struct scmi_handle(9), module_scmi_driver(9), module_scmi_protocol(9) β
ngl this page lives in./include/linux, it says October 2026 on the tin, and it's thestruct scmi...rl_proto_ops(9)page you just read. okay that's the whole thing β ily, go forth and mux responsibly ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms