add wm831x shutdown support for phonesdk
authorluowei <lw@rock-chips.com>
Wed, 27 Apr 2011 09:27:29 +0000 (17:27 +0800)
committerluowei <lw@rock-chips.com>
Wed, 27 Apr 2011 09:27:29 +0000 (17:27 +0800)
arch/arm/mach-rk29/board-rk29-phonesdk.c
drivers/mfd/wm831x-core.c

index 45d2e65d435c4eacf5647697b96837d985b99a3c..16d50e2b4a2389dd73e608f29cee76d61fea5dd4 100755 (executable)
@@ -547,12 +547,12 @@ struct rk29_gpio_expander_info  wm831x_gpio_settinginfo[] = {
 
 
 #if defined(CONFIG_MFD_WM831X)
-
+static struct wm831x *gWm831x;
 int wm831x_pre_init(struct wm831x *parm)
 {
        int ret;
        printk("%s\n", __FUNCTION__);
-
+       gWm831x = parm;
        //ILIM = 900ma
        ret = wm831x_reg_read(parm, WM831X_POWER_STATE) & 0xffff;
        wm831x_reg_write(parm, WM831X_POWER_STATE, (ret&0xfff8) | 0x04);        
@@ -568,7 +568,6 @@ int wm831x_post_init(struct wm831x *parm)
        struct regulator *dcdc;
        struct regulator *ldo;
        
-
        dcdc = regulator_get(NULL, "dcdc3");            // 1th IO
        regulator_set_voltage(dcdc,3000000,3000000);
        regulator_enable(dcdc);                 
@@ -3030,6 +3029,9 @@ static void rk29_pm_power_off(void)
 {
        printk(KERN_ERR "rk29_pm_power_off start...\n");
        gpio_direction_output(POWER_ON_PIN, GPIO_LOW);
+#if defined(CONFIG_MFD_WM831X)
+       wm831x_device_shutdown(gWm831x);
+#endif
        while (1);
 }
 
index d7489cb71e8988f99d373cd2e69a349e31a3bfa8..0ce83bee2c8498eab80d2a974393b40d2aaa36cc 100755 (executable)
@@ -1796,17 +1796,19 @@ int wm831x_device_shutdown(struct wm831x *wm831x)
                        //goto err_irq;
                }
        }
-#if 0
-       if(0 == reboot_cmd_get())
+
+       //if(0 == reboot_cmd_get())
        {
                if(wm831x_set_bits(wm831x, WM831X_POWER_STATE, WM831X_CHIP_ON_MASK, 0) < 0)
                        printk("%s wm831x_set_bits err\n", __FUNCTION__);
-               printk("post WM831X_POWER_STATE = 0x%x\n", wm831x_reg_read(wm831x, WM831X_POWER_STATE));
+               //printk("post WM831X_POWER_STATE = 0x%x\n", wm831x_reg_read(wm831x, WM831X_POWER_STATE));
        }
-#endif
+
        return 0;       
 }
 
+EXPORT_SYMBOL_GPL(wm831x_device_shutdown);
+
 MODULE_DESCRIPTION("Core support for the WM831X AudioPlus PMIC");
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Mark Brown");