Merge tag 'pinctrl-v3.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw...
[sfrench/cifs-2.6.git] / drivers / pinctrl / pinctrl-as3722.c
index b80f1e150f53084409b8929bdea3d2d585c159cc..92ed4b2e3c0716cf3f21580b49434fc6e9952fc6 100644 (file)
@@ -250,6 +250,26 @@ static int as3722_pinctrl_enable(struct pinctrl_dev *pctldev, unsigned function,
                return ret;
        }
        as_pci->gpio_control[group].io_function = function;
+
+       switch (val) {
+       case AS3722_GPIO_IOSF_SD0_OUT:
+       case AS3722_GPIO_IOSF_PWR_GOOD_OUT:
+       case AS3722_GPIO_IOSF_Q32K_OUT:
+       case AS3722_GPIO_IOSF_PWM_OUT:
+       case AS3722_GPIO_IOSF_SD6_LOW_VOLT_LOW:
+               ret = as3722_update_bits(as_pci->as3722, gpio_cntr_reg,
+                       AS3722_GPIO_MODE_MASK, AS3722_GPIO_MODE_OUTPUT_VDDH);
+               if (ret < 0) {
+                       dev_err(as_pci->dev, "GPIO%d_CTRL update failed %d\n",
+                               group, ret);
+                       return ret;
+               }
+               as_pci->gpio_control[group].mode_prop =
+                               AS3722_GPIO_MODE_OUTPUT_VDDH;
+               break;
+       default:
+               break;
+       }
        return ret;
 }