Audio: Check for vibra enable status before disabling it.
authorVaibhav Agarwal <vaibhav.agarwal@intel.com>
Fri, 27 Apr 2012 06:47:06 +0000 (12:17 +0530)
committerbuildbot <buildbot@intel.com>
Wed, 2 May 2012 17:35:35 +0000 (10:35 -0700)
BZ: 31967

Currently, irrespective of vibra enable status, it'll process disable request.
Thus causing invalid pm_usage_count for SST. This breaks audio playback
during D0x states.

The solution is to disable vibra only in case it is enabled.

Change-Id: I767dacd82aed3bc0333e2773e8419e1723cd4091
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@intel.com>
Reviewed-on: http://android.intel.com:8080/46557
Reviewed-by: Babu, Ramesh <ramesh.babu@intel.com>
Reviewed-by: Kp, Jeeja <jeeja.kp@intel.com>
Reviewed-by: Koul, Vinod <vinod.koul@intel.com>
Reviewed-by: Abdullah, Omair M <omair.m.abdullah@intel.com>
Reviewed-by: Neerebailoor, ShreyasX <shreyasx.neerebailoor@intel.com>
Reviewed-by: Gupta, ArvindX K <arvindx.k.gupta@intel.com>
Reviewed-by: M, Arulselvan <arulselvan.m@intel.com>
Tested-by: M, Arulselvan <arulselvan.m@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/input/misc/intel_mid_vibra.c

index 404d45b..739d0e9 100644 (file)
@@ -58,11 +58,13 @@ static void vibra_enable(struct vibra_info *info)
 static void vibra_disable(struct vibra_info *info)
 {
 
-       pr_debug("Disable gpio\n");
-       gpio_set_value(PWM_ENABLE_GPIO, 0);
-       gpio_set_value(VIBRA_ENABLE_GPIO, 0);
-       info->enabled = false;
-       intel_sst_pwm_suspend(true);
+       if (info->enabled) {
+               pr_debug("Disable gpio\n");
+               gpio_set_value(PWM_ENABLE_GPIO, 0);
+               gpio_set_value(VIBRA_ENABLE_GPIO, 0);
+               info->enabled = false;
+               intel_sst_pwm_suspend(true);
+       }
 }
 
 
@@ -164,6 +166,7 @@ static int __init intel_mid_vibra_probe(struct platform_device *pdev)
 
        info->dev = &pdev->dev;
        info->name = "intel_mid:vibrator";
+       info->enabled = false;
 
        mutex_init(&info->lock);