aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2012-03-13 17:40:00 -0400
committerRafael J. Wysocki <rjw@sisk.pl>2012-03-16 16:45:06 -0400
commit2ee619f9487c2acc1efdf2c78e68e2bd51b635fa (patch)
treea44a5c574d316ca9b27195a9939b84948dd10d0d
parent1e78a0c7fc92aee076965d516cf54475c39e9894 (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.c2
-rw-r--r--drivers/clocksource/sh_tmu.c4
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
1046void __init sh7372_add_early_devices(void) 1048void __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
36struct sh_tmu_priv { 37struct 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;