diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-05 14:15:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-05 14:15:54 -0400 |
commit | 45e36c1666aa6c8b0c538abcf984b336184d8c3f (patch) | |
tree | c1f1771d6b02ec210238081450b4a063847b3383 /drivers/input | |
parent | 87fc94d54b639d8c39fc4a11db0e142f84096e13 (diff) | |
parent | 68b42d1b548be1840aff7122fdebeb804daf0fa3 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (23 commits)
sh: sh7785lcr: Map whole PCI address space.
sh: Fix up DSP context save/restore.
sh: Fix up number of on-chip DMA channels on SH7091.
sh: update defconfigs.
sh: Kill off broken direct-mapped cache mode.
sh: Wire up ARCH_HAS_DEFAULT_IDLE for cpuidle.
sh: Add a command line option for disabling I/O trapping.
sh: Select ARCH_HIBERNATION_POSSIBLE.
sh: migor: Fix up CEU use flags.
input: migor_ts: add wakeup support
rtc: rtc-sh: use set_irq_wake()
input: sh_keysc: use enable/disable_irq_wake()
sh: intc: set_irq_wake() support
sh: intc: install enable, disable and shutdown callbacks
clocksource: sh_cmt: use remove_irq() and remove clockevent workaround
sh: ap325 and Migo-R use new sh_mobile_ceu_info flags
sh: Fix up -Wformat-security whining.
sh: ap325rxa: Add ov772x support, again.
sh: Sanitize asm/mmu.h for assembly use.
sh: Tidy up sh7786 pinmux table.
...
Diffstat (limited to 'drivers/input')
-rw-r--r-- | drivers/input/keyboard/sh_keysc.c | 17 | ||||
-rw-r--r-- | drivers/input/touchscreen/migor_ts.c | 23 |
2 files changed, 39 insertions, 1 deletions
diff --git a/drivers/input/keyboard/sh_keysc.c b/drivers/input/keyboard/sh_keysc.c index e1480fb11de3..cea70e6a1031 100644 --- a/drivers/input/keyboard/sh_keysc.c +++ b/drivers/input/keyboard/sh_keysc.c | |||
@@ -259,12 +259,15 @@ static int sh_keysc_suspend(struct device *dev) | |||
259 | { | 259 | { |
260 | struct platform_device *pdev = to_platform_device(dev); | 260 | struct platform_device *pdev = to_platform_device(dev); |
261 | struct sh_keysc_priv *priv = platform_get_drvdata(pdev); | 261 | struct sh_keysc_priv *priv = platform_get_drvdata(pdev); |
262 | int irq = platform_get_irq(pdev, 0); | ||
262 | unsigned short value; | 263 | unsigned short value; |
263 | 264 | ||
264 | value = ioread16(priv->iomem_base + KYCR1_OFFS); | 265 | value = ioread16(priv->iomem_base + KYCR1_OFFS); |
265 | 266 | ||
266 | if (device_may_wakeup(dev)) | 267 | if (device_may_wakeup(dev)) { |
267 | value |= 0x80; | 268 | value |= 0x80; |
269 | enable_irq_wake(irq); | ||
270 | } | ||
268 | else | 271 | else |
269 | value &= ~0x80; | 272 | value &= ~0x80; |
270 | 273 | ||
@@ -272,8 +275,20 @@ static int sh_keysc_suspend(struct device *dev) | |||
272 | return 0; | 275 | return 0; |
273 | } | 276 | } |
274 | 277 | ||
278 | static int sh_keysc_resume(struct device *dev) | ||
279 | { | ||
280 | struct platform_device *pdev = to_platform_device(dev); | ||
281 | int irq = platform_get_irq(pdev, 0); | ||
282 | |||
283 | if (device_may_wakeup(dev)) | ||
284 | disable_irq_wake(irq); | ||
285 | |||
286 | return 0; | ||
287 | } | ||
288 | |||
275 | static struct dev_pm_ops sh_keysc_dev_pm_ops = { | 289 | static struct dev_pm_ops sh_keysc_dev_pm_ops = { |
276 | .suspend = sh_keysc_suspend, | 290 | .suspend = sh_keysc_suspend, |
291 | .resume = sh_keysc_resume, | ||
277 | }; | 292 | }; |
278 | 293 | ||
279 | struct platform_driver sh_keysc_device_driver = { | 294 | struct platform_driver sh_keysc_device_driver = { |
diff --git a/drivers/input/touchscreen/migor_ts.c b/drivers/input/touchscreen/migor_ts.c index 504ca11749a1..141dd584330e 100644 --- a/drivers/input/touchscreen/migor_ts.c +++ b/drivers/input/touchscreen/migor_ts.c | |||
@@ -198,6 +198,7 @@ static int migor_ts_probe(struct i2c_client *client, | |||
198 | goto err2; | 198 | goto err2; |
199 | } | 199 | } |
200 | 200 | ||
201 | device_init_wakeup(&client->dev, 1); | ||
201 | return 0; | 202 | return 0; |
202 | 203 | ||
203 | err2: | 204 | err2: |
@@ -224,6 +225,26 @@ static int migor_ts_remove(struct i2c_client *client) | |||
224 | return 0; | 225 | return 0; |
225 | } | 226 | } |
226 | 227 | ||
228 | static int migor_ts_suspend(struct i2c_client *client, pm_message_t mesg) | ||
229 | { | ||
230 | struct migor_ts_priv *priv = dev_get_drvdata(&client->dev); | ||
231 | |||
232 | if (device_may_wakeup(&client->dev)) | ||
233 | enable_irq_wake(priv->irq); | ||
234 | |||
235 | return 0; | ||
236 | } | ||
237 | |||
238 | static int migor_ts_resume(struct i2c_client *client) | ||
239 | { | ||
240 | struct migor_ts_priv *priv = dev_get_drvdata(&client->dev); | ||
241 | |||
242 | if (device_may_wakeup(&client->dev)) | ||
243 | disable_irq_wake(priv->irq); | ||
244 | |||
245 | return 0; | ||
246 | } | ||
247 | |||
227 | static const struct i2c_device_id migor_ts_id[] = { | 248 | static const struct i2c_device_id migor_ts_id[] = { |
228 | { "migor_ts", 0 }, | 249 | { "migor_ts", 0 }, |
229 | { } | 250 | { } |
@@ -236,6 +257,8 @@ static struct i2c_driver migor_ts_driver = { | |||
236 | }, | 257 | }, |
237 | .probe = migor_ts_probe, | 258 | .probe = migor_ts_probe, |
238 | .remove = migor_ts_remove, | 259 | .remove = migor_ts_remove, |
260 | .suspend = migor_ts_suspend, | ||
261 | .resume = migor_ts_resume, | ||
239 | .id_table = migor_ts_id, | 262 | .id_table = migor_ts_id, |
240 | }; | 263 | }; |
241 | 264 | ||