Merge tag 'platform-drivers-x86-v6.8-3' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-block.git] / drivers / pinctrl / pinctrl-ingenic.c
index ee718f6e25566a437382623a17e370e2e70abab9..bc6358a686fcde9c2808eb4fdf226f51a5d389f9 100644 (file)
 #define PINS_PER_GPIO_CHIP                     32
 #define JZ4730_PINS_PER_PAIRED_REG     16
 
-#define INGENIC_PIN_GROUP_FUNCS(name, id, funcs)               \
-       {                                               \
-               name,                                   \
-               id##_pins,                              \
-               ARRAY_SIZE(id##_pins),                  \
-               funcs,                                  \
+#define INGENIC_PIN_GROUP_FUNCS(_name_, id, funcs)                                     \
+       {                                                                               \
+               .grp = PINCTRL_PINGROUP(_name_, id##_pins, ARRAY_SIZE(id##_pins)),      \
+               .data = funcs,                                                          \
        }
 
-#define INGENIC_PIN_GROUP(name, id, func)              \
-       INGENIC_PIN_GROUP_FUNCS(name, id, (void *)(func))
+#define INGENIC_PIN_GROUP(_name_, id, func)                                            \
+       {                                                                               \
+               .grp = PINCTRL_PINGROUP(_name_, id##_pins, ARRAY_SIZE(id##_pins)),      \
+               .data = (void *)func,                                                   \
+       }
 
 enum jz_version {
        ID_JZ4730,
@@ -3761,17 +3762,17 @@ static int ingenic_pinmux_set_mux(struct pinctrl_dev *pctldev,
                return -EINVAL;
 
        dev_dbg(pctldev->dev, "enable function %s group %s\n",
-               func->name, grp->name);
+               func->name, grp->grp.name);
 
        mode = (uintptr_t)grp->data;
        if (mode <= 3) {
-               for (i = 0; i < grp->num_pins; i++)
-                       ingenic_pinmux_set_pin_fn(jzpc, grp->pins[i], mode);
+               for (i = 0; i < grp->grp.npins; i++)
+                       ingenic_pinmux_set_pin_fn(jzpc, grp->grp.pins[i], mode);
        } else {
                pin_modes = grp->data;
 
-               for (i = 0; i < grp->num_pins; i++)
-                       ingenic_pinmux_set_pin_fn(jzpc, grp->pins[i], pin_modes[i]);
+               for (i = 0; i < grp->grp.npins; i++)
+                       ingenic_pinmux_set_pin_fn(jzpc, grp->grp.pins[i], pin_modes[i]);
        }
 
        return 0;
@@ -4298,12 +4299,12 @@ static int __init ingenic_pinctrl_probe(struct platform_device *pdev)
 
        for (i = 0; i < chip_info->num_groups; i++) {
                const struct group_desc *group = &chip_info->groups[i];
+               const struct pingroup *grp = &group->grp;
 
-               err = pinctrl_generic_add_group(jzpc->pctl, group->name,
-                               group->pins, group->num_pins, group->data);
+               err = pinctrl_generic_add_group(jzpc->pctl, grp->name, grp->pins, grp->npins,
+                                               group->data);
                if (err < 0) {
-                       dev_err(dev, "Failed to register group %s\n",
-                                       group->name);
+                       dev_err(dev, "Failed to register group %s\n", grp->name);
                        return err;
                }
        }