pinctrl: as3722: Set pin to output mode for some function
authorMallikarjun Kasoju <mkasoju@nvidia.com>
Tue, 7 Jan 2014 08:40:56 +0000 (14:10 +0530)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 14 Jan 2014 09:34:18 +0000 (10:34 +0100)
If pins are used for function output like pwm, clk32k,
power good etc then set it as output mode default.

Signed-off-by: Mallikarjun Kasoju <mkasoju@nvidia.com>
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-as3722.c
include/linux/mfd/as3722.h

index 01bffc1d52fd278a9adfa37420e6b792c83531df..3be47ae34d3a50bb9b228eebf3a06f3466ec5445 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;
 }
 
index 16bf8a0dcd973dc7fd9e25666a6f83c1e6f8ddf6..f654a7a422608b054c0175dd51a33e3b23a399cf 100644 (file)
 #define AS3722_GPIO_IOSF_GPIO_INTERRUPT_IN             AS3722_GPIO_IOSF_VAL(3)
 #define AS3722_GPIO_IOSF_ISINK_PWM_IN                  AS3722_GPIO_IOSF_VAL(4)
 #define AS3722_GPIO_IOSF_VOLTAGE_STBY                  AS3722_GPIO_IOSF_VAL(5)
+#define AS3722_GPIO_IOSF_SD0_OUT                       AS3722_GPIO_IOSF_VAL(6)
 #define AS3722_GPIO_IOSF_PWR_GOOD_OUT                  AS3722_GPIO_IOSF_VAL(7)
 #define AS3722_GPIO_IOSF_Q32K_OUT                      AS3722_GPIO_IOSF_VAL(8)
 #define AS3722_GPIO_IOSF_WATCHDOG_IN                   AS3722_GPIO_IOSF_VAL(9)