diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-08 16:10:57 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-08 16:10:57 -0500 |
commit | eb59c505f8a5906ad2e053d14fab50eb8574fd6f (patch) | |
tree | c6e875adc12b481b916e847e8f80b8881a0fb02c /drivers/input/touchscreen/st1232.c | |
parent | 1619ed8f60959829d070d8f39cd2f8ca0e7135ce (diff) | |
parent | c233523b3d392e530033a7587d7970dc62a02361 (diff) |
Merge branch 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
* 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (76 commits)
PM / Hibernate: Implement compat_ioctl for /dev/snapshot
PM / Freezer: fix return value of freezable_schedule_timeout_killable()
PM / shmobile: Allow the A4R domain to be turned off at run time
PM / input / touchscreen: Make st1232 use device PM QoS constraints
PM / QoS: Introduce dev_pm_qos_add_ancestor_request()
PM / shmobile: Remove the stay_on flag from SH7372's PM domains
PM / shmobile: Don't include SH7372's INTCS in syscore suspend/resume
PM / shmobile: Add support for the sh7372 A4S power domain / sleep mode
PM: Drop generic_subsys_pm_ops
PM / Sleep: Remove forward-only callbacks from AMBA bus type
PM / Sleep: Remove forward-only callbacks from platform bus type
PM: Run the driver callback directly if the subsystem one is not there
PM / Sleep: Make pm_op() and pm_noirq_op() return callback pointers
PM/Devfreq: Add Exynos4-bus device DVFS driver for Exynos4210/4212/4412.
PM / Sleep: Merge internal functions in generic_ops.c
PM / Sleep: Simplify generic system suspend callbacks
PM / Hibernate: Remove deprecated hibernation snapshot ioctls
PM / Sleep: Fix freezer failures due to racy usermodehelper_is_disabled()
ARM: S3C64XX: Implement basic power domain support
PM / shmobile: Use common always on power domain governor
...
Fix up trivial conflict in fs/xfs/xfs_buf.c due to removal of unused
XBT_FORCE_SLEEP bit
Diffstat (limited to 'drivers/input/touchscreen/st1232.c')
-rw-r--r-- | drivers/input/touchscreen/st1232.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/input/touchscreen/st1232.c b/drivers/input/touchscreen/st1232.c index 4ab371358b33..8825fe37d433 100644 --- a/drivers/input/touchscreen/st1232.c +++ b/drivers/input/touchscreen/st1232.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/input.h> | 23 | #include <linux/input.h> |
24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | #include <linux/pm_qos.h> | ||
26 | #include <linux/slab.h> | 27 | #include <linux/slab.h> |
27 | #include <linux/types.h> | 28 | #include <linux/types.h> |
28 | 29 | ||
@@ -46,6 +47,7 @@ struct st1232_ts_data { | |||
46 | struct i2c_client *client; | 47 | struct i2c_client *client; |
47 | struct input_dev *input_dev; | 48 | struct input_dev *input_dev; |
48 | struct st1232_ts_finger finger[MAX_FINGERS]; | 49 | struct st1232_ts_finger finger[MAX_FINGERS]; |
50 | struct dev_pm_qos_request low_latency_req; | ||
49 | }; | 51 | }; |
50 | 52 | ||
51 | static int st1232_ts_read_data(struct st1232_ts_data *ts) | 53 | static int st1232_ts_read_data(struct st1232_ts_data *ts) |
@@ -118,8 +120,17 @@ static irqreturn_t st1232_ts_irq_handler(int irq, void *dev_id) | |||
118 | } | 120 | } |
119 | 121 | ||
120 | /* SYN_MT_REPORT only if no contact */ | 122 | /* SYN_MT_REPORT only if no contact */ |
121 | if (!count) | 123 | if (!count) { |
122 | input_mt_sync(input_dev); | 124 | input_mt_sync(input_dev); |
125 | if (ts->low_latency_req.dev) { | ||
126 | dev_pm_qos_remove_request(&ts->low_latency_req); | ||
127 | ts->low_latency_req.dev = NULL; | ||
128 | } | ||
129 | } else if (!ts->low_latency_req.dev) { | ||
130 | /* First contact, request 100 us latency. */ | ||
131 | dev_pm_qos_add_ancestor_request(&ts->client->dev, | ||
132 | &ts->low_latency_req, 100); | ||
133 | } | ||
123 | 134 | ||
124 | /* SYN_REPORT */ | 135 | /* SYN_REPORT */ |
125 | input_sync(input_dev); | 136 | input_sync(input_dev); |