rk30:sdk:mask interrupt of the wm8326 which is not used
author张晴 <zhangqing@rock-chips.com>
Wed, 18 Apr 2012 09:41:24 +0000 (17:41 +0800)
committer张晴 <zhangqing@rock-chips.com>
Wed, 18 Apr 2012 09:41:24 +0000 (17:41 +0800)
arch/arm/mach-rk30/board-rk30-sdk-wm8326.c
drivers/mfd/wm831x-i2c.c

index dd184ced8301fb7984cbb95e27d7e65521af8ca7..f8c62338d6d9ab720406902c64b2fed5b7ac4ea2 100755 (executable)
@@ -125,6 +125,19 @@ static int wm831x_pre_init(struct wm831x *parm)
 
        return 0;
 }
+static int wm831x_mask_interrupt(struct wm831x *Wm831x)
+{
+       /**************************clear interrupt********************/
+       wm831x_reg_write(Wm831x,WM831X_INTERRUPT_STATUS_1,0xffff);
+       wm831x_reg_write(Wm831x,WM831X_INTERRUPT_STATUS_2,0xffff);
+       wm831x_reg_write(Wm831x,WM831X_INTERRUPT_STATUS_3,0xffff);
+       wm831x_reg_write(Wm831x,WM831X_INTERRUPT_STATUS_4,0xffff);
+       wm831x_reg_write(Wm831x,WM831X_INTERRUPT_STATUS_5,0xffff);
+       
+       wm831x_reg_write(Wm831x,WM831X_SYSTEM_INTERRUPTS_MASK,0xbedc); //mask interrupt which not used
+       return 0;
+       /*****************************************************************/
+}
 
 int wm831x_post_init(struct wm831x *Wm831x)
 {
@@ -243,6 +256,7 @@ int wm831x_post_init(struct wm831x *Wm831x)
        regulator_put(ldo);
        udelay(100);
 
+       wm831x_mask_interrupt(Wm831x);
        printk("wm831x_post_init end");
        return 0;
 }
index 717f629336f3333e83ef9a0e98b2a1d9a0b432a8..f618a4af127f97971269840a7df1bcf60a503131 100755 (executable)
@@ -207,8 +207,8 @@ static int wm831x_i2c_resume(struct device *dev)
 void wm831x_i2c_shutdown(struct i2c_client *i2c)
 {
        struct wm831x *wm831x = i2c_get_clientdata(i2c);
-//     printk("%s\n", __FUNCTION__);
-//     wm831x_device_shutdown(wm831x);
+       printk("%s\n", __FUNCTION__);
+       wm831x_device_shutdown(wm831x);
 }
 
 static const struct i2c_device_id wm831x_i2c_id[] = {