1.make sure power key can wake up system and light lcd even though pressure time...
authorroot <root@lw.(none)>
Thu, 16 Jun 2011 20:01:28 +0000 (04:01 +0800)
committerroot <root@lw.(none)>
Thu, 16 Jun 2011 20:08:53 +0000 (04:08 +0800)
2.mask some unused log.

drivers/input/misc/wm831x-on.c
drivers/input/touchscreen/ili2102_ts.c
drivers/regulator/wm831x-ldo.c
drivers/video/backlight/aw9364_bl.c

index 3d1787ac4410a770263718916279a6c8be2201f3..4b8782d662f25af2ad6c8f7405639e958e87cf15 100755 (executable)
@@ -41,6 +41,8 @@ struct wm831x_on {
        struct input_dev *dev;
        struct delayed_work work;
        struct wm831x *wm831x;
+       int flag_resume;
+       spinlock_t              flag_lock;
        struct wake_lock        wm831x_on_wake;
 };
 
@@ -63,24 +65,39 @@ void rk28_send_wakeup_key(void)
 }
 #endif
 
-#if 0
+#if 1
 
 static int wm831x_on_suspend_noirq(struct device *dev)
 {
        DBG("%s\n",__FUNCTION__);
+       
+       if(!g_wm831x_on)
+       {
+               printk("%s:addr err!\n",__FUNCTION__);
+               return -1;
+       }
+
+       spin_lock(&g_wm831x_on->flag_lock);
+       g_wm831x_on->flag_resume = 0;
+       spin_unlock(&g_wm831x_on->flag_lock);
        return 0;
 }
 
 static int wm831x_on_resume_noirq(struct device *dev)
 {
-       int poll, ret;
+       //int poll, ret;
        
        if(!g_wm831x_on)
        {
                printk("%s:addr err!\n",__FUNCTION__);
-               return;
+               return -1;
        }
        
+       spin_lock(&g_wm831x_on->flag_lock);
+       g_wm831x_on->flag_resume = 1;
+       spin_unlock(&g_wm831x_on->flag_lock);
+       
+#if 0  
        ret = wm831x_reg_read(g_wm831x_on->wm831x, WM831X_ON_PIN_CONTROL);
        if (ret >= 0) {
                poll = !(ret & WM831X_ON_PIN_STS);      
@@ -89,7 +106,7 @@ static int wm831x_on_resume_noirq(struct device *dev)
                input_sync(g_wm831x_on->dev);
                DBG("%s:poll=%d,ret=0x%x\n",__FUNCTION__,poll,ret);
        } 
-
+#endif
        DBG("%s\n",__FUNCTION__);
        return 0;
 }
@@ -173,11 +190,17 @@ static irqreturn_t wm831x_on_irq(int irq, void *data)
        int poll, ret;
        
        //wake_lock(&wm831x_on->wm831x_on_wake);
-       
-read_again:
-       
-       ret = wm831x_reg_read(wm831x, WM831X_ON_PIN_CONTROL);
+               
+       ret = wm831x_reg_read(wm831x, WM831X_ON_PIN_CONTROL);//it may be unpress if start to read register now
        if (ret >= 0) {
+               if(wm831x_on->flag_resume)
+               {
+                       poll = 1;
+                       spin_lock(&wm831x_on->flag_lock);
+                       wm831x_on->flag_resume = 0;
+                       spin_unlock(&wm831x_on->flag_lock);
+               }
+               else
                poll = !(ret & WM831X_ON_PIN_STS);
                input_report_key(wm831x_on->dev, KEY_POWER, poll);
                input_sync(wm831x_on->dev);
@@ -200,8 +223,8 @@ read_again:
 
 static int __devinit wm831x_on_probe(struct platform_device *pdev)
 {
-       struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent);;
-       struct wm831x_on *wm831x_on;
+       struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent);
+       struct wm831x_on *wm831x_on = NULL;
        int irq = platform_get_irq(pdev, 0);
        int ret;
        printk("%s irq=%d\n", __FUNCTION__,irq);
@@ -230,7 +253,7 @@ static int __devinit wm831x_on_probe(struct platform_device *pdev)
        wm831x_on->dev->dev.parent = &pdev->dev;
        g_wm831x_on = wm831x_on;
 
-//     wm831x_on_pm_init();
+       wm831x_on_pm_init();
        
        ret = request_threaded_irq(irq, NULL, wm831x_on_irq,
                                   IRQF_TRIGGER_RISING, "wm831x_on",
index 6000f2c7dd740c6f6f71ede25ec3fe76d5ff561b..e5b78bc772c33a5c2e46926a48316087e07cee77 100755 (executable)
@@ -810,7 +810,7 @@ static void ili2102_ts_resume_work_func(struct work_struct *work)
        printk("%s:request irq=%d failed,ret=%d\n",__FUNCTION__,ts->client->irq,ret);
 
        PREPARE_DELAYED_WORK(&ts->work, ili2102_ts_work_func);
-       printk("%s,irq=%d\n",__FUNCTION__,ts->client->irq);
+       DBG("%s,irq=%d\n",__FUNCTION__,ts->client->irq);
 }
 
 
index 30d5dbec260538350febc76fa3d0be4d49c5d500..f74692826dfb01249157129863b92b8c93da1ad0 100755 (executable)
@@ -143,7 +143,7 @@ static int wm831x_gp_ldo_set_voltage(struct regulator_dev *rdev,
 {
        struct wm831x_ldo *ldo = rdev_get_drvdata(rdev);
        int reg = ldo->base + WM831X_LDO_ON_CONTROL;
-       printk("%s base=%x,%d,%d\n", __FUNCTION__,ldo->base,min_uV,max_uV);
+       //printk("%s base=%x,%d,%d\n", __FUNCTION__,ldo->base,min_uV,max_uV);
        return wm831x_gp_ldo_set_voltage_int(rdev, reg, min_uV, max_uV);
 }
 
@@ -166,7 +166,7 @@ static int wm831x_gp_ldo_get_voltage(struct regulator_dev *rdev)
        ret = wm831x_reg_read(wm831x, reg);
        if (ret < 0)
                return ret;
-       printk("%s base=%x,ret=%x\n", __FUNCTION__,ldo->base,ret);
+       //printk("%s base=%x,ret=%x\n", __FUNCTION__,ldo->base,ret);
        ret &= WM831X_LDO1_ON_VSEL_MASK;
 
        return wm831x_gp_ldo_list_voltage(rdev, ret);
index 35b05142020e6775b52522f30defa867c3ed785c..bd9c2f60eda472f4e5e4364621cf0f9d796cf3c9 100755 (executable)
@@ -124,7 +124,7 @@ static int aw9364_backlight_update_status(struct backlight_device *bl)
        if (bl->props.state & BL_CORE_SUSPENDED)
                brightness = 0;
 
-       printk("backlight brightness=%d\n", brightness);
+       DBG("backlight brightness=%d\n", brightness);
 
        return aw9364_backlight_set(bl, brightness);
 }