diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2012-03-13 17:40:00 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rjw@sisk.pl> | 2012-03-16 16:45:06 -0400 |
commit | 2ee619f9487c2acc1efdf2c78e68e2bd51b635fa (patch) | |
tree | a44a5c574d316ca9b27195a9939b84948dd10d0d | |
parent | 1e78a0c7fc92aee076965d516cf54475c39e9894 (diff) |
PM / shmobile: Make TMU driver use pm_genpd_dev_always_on()
Make the TMU clocksource driver mark its device as "always on"
using pm_genpd_dev_always_on() to protect it from surprise power
removals and make sh7372_add_standard_devices() add TMU devices on
sh7372 to the A4R power domain so that their "always on" flags
are taken into account as appropriate.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Tested-by: Simon Horman <horms@verge.net.au>
Acked-by: Paul Mundt <lethal@linux-sh.org>
Cc: stable@vger.kernel.org
-rw-r--r-- | arch/arm/mach-shmobile/setup-sh7372.c | 2 | ||||
-rw-r--r-- | drivers/clocksource/sh_tmu.c | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c index 6fcf304d3cdf..9f2d7f2b5374 100644 --- a/arch/arm/mach-shmobile/setup-sh7372.c +++ b/arch/arm/mach-shmobile/setup-sh7372.c | |||
@@ -1041,6 +1041,8 @@ void __init sh7372_add_standard_devices(void) | |||
1041 | sh7372_add_device_to_domain(&sh7372_a4r, &veu2_device); | 1041 | sh7372_add_device_to_domain(&sh7372_a4r, &veu2_device); |
1042 | sh7372_add_device_to_domain(&sh7372_a4r, &veu3_device); | 1042 | sh7372_add_device_to_domain(&sh7372_a4r, &veu3_device); |
1043 | sh7372_add_device_to_domain(&sh7372_a4r, &jpu_device); | 1043 | sh7372_add_device_to_domain(&sh7372_a4r, &jpu_device); |
1044 | sh7372_add_device_to_domain(&sh7372_a4r, &tmu00_device); | ||
1045 | sh7372_add_device_to_domain(&sh7372_a4r, &tmu01_device); | ||
1044 | } | 1046 | } |
1045 | 1047 | ||
1046 | void __init sh7372_add_early_devices(void) | 1048 | void __init sh7372_add_early_devices(void) |
diff --git a/drivers/clocksource/sh_tmu.c b/drivers/clocksource/sh_tmu.c index 079e96ad44e8..97f54b634be4 100644 --- a/drivers/clocksource/sh_tmu.c +++ b/drivers/clocksource/sh_tmu.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/sh_timer.h> | 32 | #include <linux/sh_timer.h> |
33 | #include <linux/slab.h> | 33 | #include <linux/slab.h> |
34 | #include <linux/module.h> | 34 | #include <linux/module.h> |
35 | #include <linux/pm_domain.h> | ||
35 | 36 | ||
36 | struct sh_tmu_priv { | 37 | struct sh_tmu_priv { |
37 | void __iomem *mapbase; | 38 | void __iomem *mapbase; |
@@ -410,6 +411,9 @@ static int __devinit sh_tmu_probe(struct platform_device *pdev) | |||
410 | struct sh_tmu_priv *p = platform_get_drvdata(pdev); | 411 | struct sh_tmu_priv *p = platform_get_drvdata(pdev); |
411 | int ret; | 412 | int ret; |
412 | 413 | ||
414 | if (!is_early_platform_device(pdev)) | ||
415 | pm_genpd_dev_always_on(&pdev->dev, true); | ||
416 | |||
413 | if (p) { | 417 | if (p) { |
414 | dev_info(&pdev->dev, "kept as earlytimer\n"); | 418 | dev_info(&pdev->dev, "kept as earlytimer\n"); |
415 | return 0; | 419 | return 0; |