Add runtime pm autosuspend to improve the performance of reading data.
Signed-off-by: Joseph Lai <[email protected]> --- diff -urN a/drivers/input/misc/bma023.c b/drivers/input/misc/bma023.c --- a/drivers/input/misc/bma023.c 2011-05-17 16:20:10.000000000 +0800 +++ b/drivers/input/misc/bma023.c 2011-05-17 17:15:12.000000000 +0800 @@ -44,7 +44,7 @@ #include <linux/slab.h> #include <linux/pm_runtime.h> -#define BMA023_DEFAULT_AUTO_DELAY 250 /* mS */ +#define BMA023_DEFAULT_AUTO_DELAY 500 /* mS */ #define BMA023_CHIP_ID_REG 0x00 #define BMA023_X_LSB_REG 0x02 @@ -616,12 +616,13 @@ struct bma023_sensor *sensor = dev_get_drvdata(dev); pm_runtime_get_sync(dev); + pm_runtime_mark_last_busy(dev); mutex_lock(&sensor->lock); bma023_read_xyz(sensor->client, &sensor->data); mutex_unlock(&sensor->lock); - pm_runtime_put(dev); + pm_runtime_put_sync_autosuspend(dev); return sprintf(buf, "(%d,%d,%d)\n", sensor->data.x, sensor->data.y, sensor->data.z); @@ -1004,7 +1005,7 @@ static int bma023_input_open(struct input_dev *input) { struct bma023_sensor *sensor = input_get_drvdata(input); - pm_runtime_get(sensor->dev); + pm_runtime_get_sync(sensor->dev); return 0; } @@ -1018,7 +1019,7 @@ static void bma023_input_close(struct input_dev *input) { struct bma023_sensor *sensor = input_get_drvdata(input); - pm_runtime_put(sensor->dev); + pm_runtime_put_sync(sensor->dev); } /** @@ -1180,6 +1181,7 @@ pm_runtime_enable(&client->dev); pm_runtime_set_autosuspend_delay(&client->dev, sensor->auto_delay); + pm_runtime_use_autosuspend(&client->dev); dev_info(&client->dev, "%s registered\n", id->name); return 0;
linux-2.6.37-bma023-add-autosuspend.patch
Description: linux-2.6.37-bma023-add-autosuspend.patch
_______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
