return -1;
 }
 
-#define REG(r, info, p) ((r) * (info)->stride + (4 * ((p) / 32)))
+#define REG_ALT(msb, info, p) (OCELOT_GPIO_ALT0 * (info)->stride + 4 * ((msb) + ((info)->stride * ((p) / 32))))
 
 static int ocelot_pinmux_set_mux(struct pinctrl_dev *pctldev,
                                 unsigned int selector, unsigned int group)
 
        /*
         * f is encoded on two bits.
-        * bit 0 of f goes in BIT(pin) of ALT0, bit 1 of f goes in BIT(pin) of
-        * ALT1
+        * bit 0 of f goes in BIT(pin) of ALT[0], bit 1 of f goes in BIT(pin) of
+        * ALT[1]
         * This is racy because both registers can't be updated at the same time
         * but it doesn't matter much for now.
         */
-       regmap_update_bits(info->map, REG(OCELOT_GPIO_ALT0, info, pin->pin),
+       regmap_update_bits(info->map, REG_ALT(0, info, pin->pin),
                           BIT(p), f << p);
-       regmap_update_bits(info->map, REG(OCELOT_GPIO_ALT1, info, pin->pin),
+       regmap_update_bits(info->map, REG_ALT(1, info, pin->pin),
                           BIT(p), f << (p - 1));
 
        return 0;
 }
 
+#define REG(r, info, p) ((r) * (info)->stride + (4 * ((p) / 32)))
+
 static int ocelot_gpio_set_direction(struct pinctrl_dev *pctldev,
                                     struct pinctrl_gpio_range *range,
                                     unsigned int pin, bool input)
        struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
        unsigned int p = offset % 32;
 
-       regmap_update_bits(info->map, REG(OCELOT_GPIO_ALT0, info, offset),
+       regmap_update_bits(info->map, REG_ALT(0, info, offset),
                           BIT(p), 0);
-       regmap_update_bits(info->map, REG(OCELOT_GPIO_ALT1, info, offset),
+       regmap_update_bits(info->map, REG_ALT(1, info, offset),
                           BIT(p), 0);
 
        return 0;