}
static int scmi_pinctrl_get_group_info(const struct scmi_protocol_handle *ph,
- u32 selector,
- struct scmi_group_info *group)
+ u32 selector)
{
+ struct scmi_pinctrl_info *pi = ph->get_priv(ph);
+ struct scmi_group_info *group;
int ret;
+ if (selector >= pi->nr_groups)
+ return -EINVAL;
+
+ group = &pi->groups[selector];
+ if (group->present)
+ return 0;
+
ret = scmi_pinctrl_attributes(ph, GROUP_TYPE, selector, group->name,
&group->nr_pins);
if (ret)
u32 selector, const char **name)
{
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
+ int ret;
if (!name)
return -EINVAL;
- if (selector >= pi->nr_groups || pi->nr_groups == 0)
- return -EINVAL;
-
- if (!pi->groups[selector].present) {
- int ret;
-
- ret = scmi_pinctrl_get_group_info(ph, selector,
- &pi->groups[selector]);
- if (ret)
- return ret;
- }
+ ret = scmi_pinctrl_get_group_info(ph, selector);
+ if (ret)
+ return ret;
*name = pi->groups[selector].name;
u32 *nr_pins)
{
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
+ int ret;
if (!pins || !nr_pins)
return -EINVAL;
- if (selector >= pi->nr_groups || pi->nr_groups == 0)
- return -EINVAL;
-
- if (!pi->groups[selector].present) {
- int ret;
-
- ret = scmi_pinctrl_get_group_info(ph, selector,
- &pi->groups[selector]);
- if (ret)
- return ret;
- }
+ ret = scmi_pinctrl_get_group_info(ph, selector);
+ if (ret)
+ return ret;
*pins = pi->groups[selector].group_pins;
*nr_pins = pi->groups[selector].nr_pins;
}
static int scmi_pinctrl_get_function_info(const struct scmi_protocol_handle *ph,
- u32 selector,
- struct scmi_function_info *func)
+ u32 selector)
{
+ struct scmi_pinctrl_info *pi = ph->get_priv(ph);
+ struct scmi_function_info *func;
int ret;
+ if (selector >= pi->nr_functions)
+ return -EINVAL;
+
+ func = &pi->functions[selector];
+ if (func->present)
+ return 0;
+
ret = scmi_pinctrl_attributes(ph, FUNCTION_TYPE, selector, func->name,
&func->nr_groups);
if (ret)
u32 selector, const char **name)
{
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
+ int ret;
if (!name)
return -EINVAL;
- if (selector >= pi->nr_functions || pi->nr_functions == 0)
- return -EINVAL;
-
- if (!pi->functions[selector].present) {
- int ret;
-
- ret = scmi_pinctrl_get_function_info(ph, selector,
- &pi->functions[selector]);
- if (ret)
- return ret;
- }
+ ret = scmi_pinctrl_get_function_info(ph, selector);
+ if (ret)
+ return ret;
*name = pi->functions[selector].name;
return 0;
const u32 **groups)
{
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
+ int ret;
if (!groups || !nr_groups)
return -EINVAL;
- if (selector >= pi->nr_functions || pi->nr_functions == 0)
- return -EINVAL;
-
- if (!pi->functions[selector].present) {
- int ret;
-
- ret = scmi_pinctrl_get_function_info(ph, selector,
- &pi->functions[selector]);
- if (ret)
- return ret;
- }
+ ret = scmi_pinctrl_get_function_info(ph, selector);
+ if (ret)
+ return ret;
*groups = pi->functions[selector].groups;
*nr_groups = pi->functions[selector].nr_groups;
}
static int scmi_pinctrl_get_pin_info(const struct scmi_protocol_handle *ph,
- u32 selector, struct scmi_pin_info *pin)
+ u32 selector)
{
+ struct scmi_pinctrl_info *pi = ph->get_priv(ph);
+ struct scmi_pin_info *pin;
int ret;
- if (!pin)
+ if (selector >= pi->nr_pins)
return -EINVAL;
+ pin = &pi->pins[selector];
+ if (pin->present)
+ return 0;
+
ret = scmi_pinctrl_attributes(ph, PIN_TYPE, selector, pin->name, NULL);
if (ret)
return ret;
u32 selector, const char **name)
{
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
+ int ret;
if (!name)
return -EINVAL;
- if (selector >= pi->nr_pins)
- return -EINVAL;
-
- if (!pi->pins[selector].present) {
- int ret;
-
- ret = scmi_pinctrl_get_pin_info(ph, selector, &pi->pins[selector]);
- if (ret)
- return ret;
- }
+ ret = scmi_pinctrl_get_pin_info(ph, selector);
+ if (ret)
+ return ret;
*name = pi->pins[selector].name;