pinctrl: imx: Use temporary variable to hold pins
[linux-2.6-microblaze.git] / drivers / pinctrl / freescale / pinctrl-imx.c
index 9bc1694..28164b0 100644 (file)
@@ -511,6 +511,7 @@ static int imx_pinctrl_parse_groups(struct device_node *np,
 {
        const struct imx_pinctrl_soc_info *info = ipctl->info;
        struct imx_pin *pin;
+       unsigned int *pins;
        int size, pin_size;
        const __be32 *list;
        int i;
@@ -557,20 +558,20 @@ static int imx_pinctrl_parse_groups(struct device_node *np,
        grp->data = devm_kcalloc(ipctl->dev,
                                 grp->num_pins, sizeof(struct imx_pin),
                                 GFP_KERNEL);
-       grp->pins = devm_kcalloc(ipctl->dev,
-                                grp->num_pins, sizeof(unsigned int),
-                                GFP_KERNEL);
-       if (!grp->pins || !grp->data)
+       if (!grp->data)
+               return -ENOMEM;
+
+       pins = devm_kcalloc(ipctl->dev, grp->num_pins, sizeof(*pins), GFP_KERNEL);
+       if (!pins)
                return -ENOMEM;
+       grp->pins = pins;
 
        for (i = 0; i < grp->num_pins; i++) {
                pin = &((struct imx_pin *)(grp->data))[i];
                if (info->flags & IMX_USE_SCU)
-                       info->imx_pinctrl_parse_pin(ipctl, &grp->pins[i],
-                                                 pin, &list);
+                       info->imx_pinctrl_parse_pin(ipctl, &pins[i], pin, &list);
                else
-                       imx_pinctrl_parse_pin_mmio(ipctl, &grp->pins[i],
-                                                  pin, &list, np);
+                       imx_pinctrl_parse_pin_mmio(ipctl, &pins[i], pin, &list, np);
        }
 
        return 0;