return 0;
 }
 
-static int meson_pinconf_set(struct pinctrl_dev *pcdev, unsigned int pin,
-                            unsigned long *configs, unsigned num_configs)
+static int meson_pinconf_disable_bias(struct meson_pinctrl *pc,
+                                     unsigned int pin)
 {
-       struct meson_pinctrl *pc = pinctrl_dev_get_drvdata(pcdev);
        struct meson_bank *bank;
-       enum pin_config_param param;
-       unsigned int reg, bit;
-       int i, ret;
+       unsigned int reg, bit = 0;
+       int ret;
 
        ret = meson_get_bank(pc, pin, &bank);
        if (ret)
                return ret;
 
+       meson_calc_reg_and_bit(bank, pin, REG_PULLEN, ®, &bit);
+       ret = regmap_update_bits(pc->reg_pullen, reg, BIT(bit), 0);
+       if (ret)
+               return ret;
+
+       return 0;
+}
+
+static int meson_pinconf_enable_bias(struct meson_pinctrl *pc, unsigned int pin,
+                                    bool pull_up)
+{
+       struct meson_bank *bank;
+       unsigned int reg, bit, val = 0;
+       int ret;
+
+       ret = meson_get_bank(pc, pin, &bank);
+       if (ret)
+               return ret;
+
+       meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit);
+       if (pull_up)
+               val = BIT(bit);
+
+       ret = regmap_update_bits(pc->reg_pull, reg, BIT(bit), val);
+       if (ret)
+               return ret;
+
+       meson_calc_reg_and_bit(bank, pin, REG_PULLEN, ®, &bit);
+       ret = regmap_update_bits(pc->reg_pullen, reg, BIT(bit), BIT(bit));
+       if (ret)
+               return ret;
+
+       return 0;
+}
+
+static int meson_pinconf_set(struct pinctrl_dev *pcdev, unsigned int pin,
+                            unsigned long *configs, unsigned num_configs)
+{
+       struct meson_pinctrl *pc = pinctrl_dev_get_drvdata(pcdev);
+       enum pin_config_param param;
+       int i, ret;
+
        for (i = 0; i < num_configs; i++) {
                param = pinconf_to_config_param(configs[i]);
 
                switch (param) {
                case PIN_CONFIG_BIAS_DISABLE:
-                       dev_dbg(pc->dev, "pin %u: disable bias\n", pin);
-
-                       meson_calc_reg_and_bit(bank, pin, REG_PULLEN, ®,
-                                              &bit);
-                       ret = regmap_update_bits(pc->reg_pullen, reg,
-                                                BIT(bit), 0);
+                       ret = meson_pinconf_disable_bias(pc, pin);
                        if (ret)
                                return ret;
                        break;
                case PIN_CONFIG_BIAS_PULL_UP:
-                       dev_dbg(pc->dev, "pin %u: enable pull-up\n", pin);
-
-                       meson_calc_reg_and_bit(bank, pin, REG_PULLEN,
-                                              ®, &bit);
-                       ret = regmap_update_bits(pc->reg_pullen, reg,
-                                                BIT(bit), BIT(bit));
-                       if (ret)
-                               return ret;
-
-                       meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit);
-                       ret = regmap_update_bits(pc->reg_pull, reg,
-                                                BIT(bit), BIT(bit));
+                       ret = meson_pinconf_enable_bias(pc, pin, true);
                        if (ret)
                                return ret;
                        break;
                case PIN_CONFIG_BIAS_PULL_DOWN:
-                       dev_dbg(pc->dev, "pin %u: enable pull-down\n", pin);
-
-                       meson_calc_reg_and_bit(bank, pin, REG_PULLEN,
-                                              ®, &bit);
-                       ret = regmap_update_bits(pc->reg_pullen, reg,
-                                                BIT(bit), BIT(bit));
-                       if (ret)
-                               return ret;
-
-                       meson_calc_reg_and_bit(bank, pin, REG_PULL, ®, &bit);
-                       ret = regmap_update_bits(pc->reg_pull, reg,
-                                                BIT(bit), 0);
+                       ret = meson_pinconf_enable_bias(pc, pin, false);
                        if (ret)
                                return ret;
                        break;