compass akm8975: modify earlysuspend and resume to nomal suspend and resume
authorlyx <lyx@rock-chips.com>
Tue, 2 Aug 2011 01:39:17 +0000 (18:39 -0700)
committerlyx <lyx@rock-chips.com>
Tue, 2 Aug 2011 01:42:04 +0000 (18:42 -0700)
drivers/input/magnetometer/ak8975.c

index 92970094de220cdb6eaa8640d3e6055dcf21f0d9..5b424add2b315f104a84bc66be91a6714bda9ea1 100755 (executable)
@@ -701,7 +701,28 @@ static void akm8975_early_resume(struct early_suspend *handler)
        AKMDBG("resumed with flag=%d", 
               atomic_read(&reserve_open_flag));
 }
+static void akm8975_suspend(struct i2c_client *client, pm_message_t mesg)
+{
+       AKMFUNC("akm8975_early_suspend");
+       atomic_set(&suspend_flag, 1);
+       atomic_set(&reserve_open_flag, atomic_read(&open_flag));
+       atomic_set(&open_flag, 0);
+       wake_up(&open_wq);
+       disable_irq(this_client->irq);
+       AKMDBG("suspended with flag=%d", 
+              atomic_read(&reserve_open_flag));
+}
 
+static void akm8975_resume(struct i2c_client *client)
+{
+       AKMFUNC("akm8975_early_resume");
+       enable_irq(this_client->irq);
+       atomic_set(&suspend_flag, 0);
+       atomic_set(&open_flag, atomic_read(&reserve_open_flag));
+       wake_up(&open_wq);
+       AKMDBG("resumed with flag=%d", 
+              atomic_read(&reserve_open_flag));
+}
 /*********************************************/
 static struct file_operations akmd_fops = {
        .owner = THIS_MODULE,
@@ -864,9 +885,9 @@ int akm8975_probe(struct i2c_client *client, const struct i2c_device_id *id)
        atomic_set(&a_flag, 1);
        atomic_set(&mv_flag, 1);
        
-       akm->akm_early_suspend.suspend = akm8975_early_suspend;
-       akm->akm_early_suspend.resume = akm8975_early_resume;
-       register_early_suspend(&akm->akm_early_suspend);
+       //akm->akm_early_suspend.suspend = akm8975_early_suspend;
+       //akm->akm_early_suspend.resume = akm8975_early_resume;
+       //register_early_suspend(&akm->akm_early_suspend);
        
        AKMDBG("successfully probed.");
        return 0;
@@ -910,6 +931,8 @@ static const struct i2c_device_id akm8975_id[] = {
 static struct i2c_driver akm8975_driver = {
        .probe          = akm8975_probe,
        .remove         = akm8975_remove,
+       .suspend = akm8975_suspend,
+       .resume = akm8975_resume,
        .id_table       = akm8975_id,
        .driver = {
                .name = AKM8975_I2C_NAME,