aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRajendra Nayak <rnayak@ti.com>2013-07-29 01:01:50 -0400
committerPaul Walmsley <paul@pwsan.com>2013-07-30 07:13:36 -0400
commitf66e329d889fce165074f677509d449fc92ff7b9 (patch)
tree4f491601aee180af3f8dec87bdf49393038ca1a3 /arch
parent7dedd346941d317b6b313de4746ad0354006e68b (diff)
ARM: OMAP2+: Avoid idling memory controllers with no drivers
Memory controllers in OMAP (like GPMC and EMIF) have the hwmods marked with HWMOD_INIT_NO_IDLE and are left in enabled state post initial setup. Even if they have drivers missing, avoid idling them as part of omap_device_late_idle() Signed-off-by: Rajendra Nayak <rnayak@ti.com> Tested-by: Mark Jackson <mpfj-list@newflow.co.uk> Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-omap2/omap_device.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c
index 5cc92874be7e..1c82cdedd358 100644
--- a/arch/arm/mach-omap2/omap_device.c
+++ b/arch/arm/mach-omap2/omap_device.c
@@ -842,6 +842,7 @@ static int __init omap_device_late_idle(struct device *dev, void *data)
842{ 842{
843 struct platform_device *pdev = to_platform_device(dev); 843 struct platform_device *pdev = to_platform_device(dev);
844 struct omap_device *od = to_omap_device(pdev); 844 struct omap_device *od = to_omap_device(pdev);
845 int i;
845 846
846 if (!od) 847 if (!od)
847 return 0; 848 return 0;
@@ -850,6 +851,15 @@ static int __init omap_device_late_idle(struct device *dev, void *data)
850 * If omap_device state is enabled, but has no driver bound, 851 * If omap_device state is enabled, but has no driver bound,
851 * idle it. 852 * idle it.
852 */ 853 */
854
855 /*
856 * Some devices (like memory controllers) are always kept
857 * enabled, and should not be idled even with no drivers.
858 */
859 for (i = 0; i < od->hwmods_cnt; i++)
860 if (od->hwmods[i]->flags & HWMOD_INIT_NO_IDLE)
861 return 0;
862
853 if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER) { 863 if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER) {
854 if (od->_state == OMAP_DEVICE_STATE_ENABLED) { 864 if (od->_state == OMAP_DEVICE_STATE_ENABLED) {
855 dev_warn(dev, "%s: enabled but no driver. Idling\n", 865 dev_warn(dev, "%s: enabled but no driver. Idling\n",