From 880b242a2b42f1706cbaec98848efa3d0f5a9b3e Mon Sep 17 00:00:00 2001 From: Grazvydas Ignotas Date: Sat, 28 May 2016 02:48:17 +0300 Subject: [PATCH] ARM: OMAP3: hwmod data: set sw control flag on dss hwmods Without this hwmod's _setup() enables interface clock and leaves it on forever supposedly for hw autoidle to manage. However this causes clockdomain's reference counter to never return to zero and omap3xxx_clkdm_clk_disable() never gets called to remove autoteps to MPU, which means DSS ends up needlessly transitioning alog with the CPU. This hack avoids such switching. It also makes context loss counter work without need to call pwrdm_{pre,post}_transition on all power domains in omap_sram_idle() as it's taken care by clkdm enable/disable. Could not measure any power usage differences though. --- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 34b2dfa5104e..0273a21fb531 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c @@ -1386,6 +1386,7 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss = { .flags = OMAP_FIREWALL_L4, } }, + .flags = OCPIF_SWSUP_IDLE, .user = OCP_USER_MPU | OCP_USER_SDMA, }; @@ -1491,6 +1492,7 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = { .flags = OMAP_FIREWALL_L4, } }, + .flags = OCPIF_SWSUP_IDLE, .user = OCP_USER_MPU | OCP_USER_SDMA, }; @@ -1554,6 +1556,7 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = { .flags = OMAP_FIREWALL_L4, } }, + .flags = OCPIF_SWSUP_IDLE, .user = OCP_USER_MPU | OCP_USER_SDMA, }; @@ -1598,6 +1601,7 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_rfbi = { .flags = OMAP_FIREWALL_L4, } }, + .flags = OCPIF_SWSUP_IDLE, .user = OCP_USER_MPU | OCP_USER_SDMA, }; -- 2.39.5