Commit 66dde54e authored by Santosh Shilimkar's avatar Santosh Shilimkar Committed by Paul Walmsley

ARM: OMAP2+: hwmod-data: UART IP needs software control to manage sidle modes

OMAP UART IP needs software control for slave idle modes based on functional
state of the IP. i.e The IP slave idle settings should be set to 'noidle' when
being used and then put back to 'smart_idle' when unused. Currently this is
handled by the driver with function pointers implemented in platform code.
This however breaks in case of device tree because of missing idle handling
APIs.

Previous patches in this series added a flag HWMOD_SWSUP_SIDLE_ACTIVE which
takes care of the mentioned requirement. Hence add the flag for all UART IPs
to take advantage of feature supported by framework.

Subsequent patches removes the slave idle handling from driver code.
Tested-by: default avatarVaibhav Bedia <vaibhav.bedia@ti.com>
Tested-by: default avatarSourav Poddar <sourav.poddar@ti.com>
Signed-off-by: default avatarRajendra Nayak <rnayak@ti.com>
Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
Reviewed-by: default avatarKevin Hilman <khilman@linaro.org>
Tested-by: Kevin Hilman <khilman@linaro.org>  # OMAP4/Panda
Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
parent ca43ea34
...@@ -512,6 +512,7 @@ struct omap_hwmod omap2xxx_uart1_hwmod = { ...@@ -512,6 +512,7 @@ struct omap_hwmod omap2xxx_uart1_hwmod = {
.mpu_irqs = omap2_uart1_mpu_irqs, .mpu_irqs = omap2_uart1_mpu_irqs,
.sdma_reqs = omap2_uart1_sdma_reqs, .sdma_reqs = omap2_uart1_sdma_reqs,
.main_clk = "uart1_fck", .main_clk = "uart1_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = CORE_MOD, .module_offs = CORE_MOD,
...@@ -531,6 +532,7 @@ struct omap_hwmod omap2xxx_uart2_hwmod = { ...@@ -531,6 +532,7 @@ struct omap_hwmod omap2xxx_uart2_hwmod = {
.mpu_irqs = omap2_uart2_mpu_irqs, .mpu_irqs = omap2_uart2_mpu_irqs,
.sdma_reqs = omap2_uart2_sdma_reqs, .sdma_reqs = omap2_uart2_sdma_reqs,
.main_clk = "uart2_fck", .main_clk = "uart2_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = CORE_MOD, .module_offs = CORE_MOD,
...@@ -550,6 +552,7 @@ struct omap_hwmod omap2xxx_uart3_hwmod = { ...@@ -550,6 +552,7 @@ struct omap_hwmod omap2xxx_uart3_hwmod = {
.mpu_irqs = omap2_uart3_mpu_irqs, .mpu_irqs = omap2_uart3_mpu_irqs,
.sdma_reqs = omap2_uart3_sdma_reqs, .sdma_reqs = omap2_uart3_sdma_reqs,
.main_clk = "uart3_fck", .main_clk = "uart3_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = CORE_MOD, .module_offs = CORE_MOD,
......
...@@ -1995,6 +1995,7 @@ static struct omap_hwmod am33xx_uart1_hwmod = { ...@@ -1995,6 +1995,7 @@ static struct omap_hwmod am33xx_uart1_hwmod = {
.name = "uart1", .name = "uart1",
.class = &uart_class, .class = &uart_class,
.clkdm_name = "l4_wkup_clkdm", .clkdm_name = "l4_wkup_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.mpu_irqs = am33xx_uart1_irqs, .mpu_irqs = am33xx_uart1_irqs,
.sdma_reqs = uart1_edma_reqs, .sdma_reqs = uart1_edma_reqs,
.main_clk = "dpll_per_m2_div4_wkupdm_ck", .main_clk = "dpll_per_m2_div4_wkupdm_ck",
...@@ -2015,6 +2016,7 @@ static struct omap_hwmod am33xx_uart2_hwmod = { ...@@ -2015,6 +2016,7 @@ static struct omap_hwmod am33xx_uart2_hwmod = {
.name = "uart2", .name = "uart2",
.class = &uart_class, .class = &uart_class,
.clkdm_name = "l4ls_clkdm", .clkdm_name = "l4ls_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.mpu_irqs = am33xx_uart2_irqs, .mpu_irqs = am33xx_uart2_irqs,
.sdma_reqs = uart1_edma_reqs, .sdma_reqs = uart1_edma_reqs,
.main_clk = "dpll_per_m2_div4_ck", .main_clk = "dpll_per_m2_div4_ck",
...@@ -2042,6 +2044,7 @@ static struct omap_hwmod am33xx_uart3_hwmod = { ...@@ -2042,6 +2044,7 @@ static struct omap_hwmod am33xx_uart3_hwmod = {
.name = "uart3", .name = "uart3",
.class = &uart_class, .class = &uart_class,
.clkdm_name = "l4ls_clkdm", .clkdm_name = "l4ls_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.mpu_irqs = am33xx_uart3_irqs, .mpu_irqs = am33xx_uart3_irqs,
.sdma_reqs = uart3_edma_reqs, .sdma_reqs = uart3_edma_reqs,
.main_clk = "dpll_per_m2_div4_ck", .main_clk = "dpll_per_m2_div4_ck",
...@@ -2062,6 +2065,7 @@ static struct omap_hwmod am33xx_uart4_hwmod = { ...@@ -2062,6 +2065,7 @@ static struct omap_hwmod am33xx_uart4_hwmod = {
.name = "uart4", .name = "uart4",
.class = &uart_class, .class = &uart_class,
.clkdm_name = "l4ls_clkdm", .clkdm_name = "l4ls_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.mpu_irqs = am33xx_uart4_irqs, .mpu_irqs = am33xx_uart4_irqs,
.sdma_reqs = uart1_edma_reqs, .sdma_reqs = uart1_edma_reqs,
.main_clk = "dpll_per_m2_div4_ck", .main_clk = "dpll_per_m2_div4_ck",
...@@ -2082,6 +2086,7 @@ static struct omap_hwmod am33xx_uart5_hwmod = { ...@@ -2082,6 +2086,7 @@ static struct omap_hwmod am33xx_uart5_hwmod = {
.name = "uart5", .name = "uart5",
.class = &uart_class, .class = &uart_class,
.clkdm_name = "l4ls_clkdm", .clkdm_name = "l4ls_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.mpu_irqs = am33xx_uart5_irqs, .mpu_irqs = am33xx_uart5_irqs,
.sdma_reqs = uart1_edma_reqs, .sdma_reqs = uart1_edma_reqs,
.main_clk = "dpll_per_m2_div4_ck", .main_clk = "dpll_per_m2_div4_ck",
...@@ -2102,6 +2107,7 @@ static struct omap_hwmod am33xx_uart6_hwmod = { ...@@ -2102,6 +2107,7 @@ static struct omap_hwmod am33xx_uart6_hwmod = {
.name = "uart6", .name = "uart6",
.class = &uart_class, .class = &uart_class,
.clkdm_name = "l4ls_clkdm", .clkdm_name = "l4ls_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.mpu_irqs = am33xx_uart6_irqs, .mpu_irqs = am33xx_uart6_irqs,
.sdma_reqs = uart1_edma_reqs, .sdma_reqs = uart1_edma_reqs,
.main_clk = "dpll_per_m2_div4_ck", .main_clk = "dpll_per_m2_div4_ck",
......
...@@ -490,6 +490,7 @@ static struct omap_hwmod omap3xxx_uart1_hwmod = { ...@@ -490,6 +490,7 @@ static struct omap_hwmod omap3xxx_uart1_hwmod = {
.mpu_irqs = omap2_uart1_mpu_irqs, .mpu_irqs = omap2_uart1_mpu_irqs,
.sdma_reqs = omap2_uart1_sdma_reqs, .sdma_reqs = omap2_uart1_sdma_reqs,
.main_clk = "uart1_fck", .main_clk = "uart1_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = CORE_MOD, .module_offs = CORE_MOD,
...@@ -508,6 +509,7 @@ static struct omap_hwmod omap3xxx_uart2_hwmod = { ...@@ -508,6 +509,7 @@ static struct omap_hwmod omap3xxx_uart2_hwmod = {
.mpu_irqs = omap2_uart2_mpu_irqs, .mpu_irqs = omap2_uart2_mpu_irqs,
.sdma_reqs = omap2_uart2_sdma_reqs, .sdma_reqs = omap2_uart2_sdma_reqs,
.main_clk = "uart2_fck", .main_clk = "uart2_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = CORE_MOD, .module_offs = CORE_MOD,
...@@ -526,6 +528,7 @@ static struct omap_hwmod omap3xxx_uart3_hwmod = { ...@@ -526,6 +528,7 @@ static struct omap_hwmod omap3xxx_uart3_hwmod = {
.mpu_irqs = omap2_uart3_mpu_irqs, .mpu_irqs = omap2_uart3_mpu_irqs,
.sdma_reqs = omap2_uart3_sdma_reqs, .sdma_reqs = omap2_uart3_sdma_reqs,
.main_clk = "uart3_fck", .main_clk = "uart3_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = OMAP3430_PER_MOD, .module_offs = OMAP3430_PER_MOD,
...@@ -555,6 +558,7 @@ static struct omap_hwmod omap36xx_uart4_hwmod = { ...@@ -555,6 +558,7 @@ static struct omap_hwmod omap36xx_uart4_hwmod = {
.mpu_irqs = uart4_mpu_irqs, .mpu_irqs = uart4_mpu_irqs,
.sdma_reqs = uart4_sdma_reqs, .sdma_reqs = uart4_sdma_reqs,
.main_clk = "uart4_fck", .main_clk = "uart4_fck",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.prcm = { .prcm = {
.omap2 = { .omap2 = {
.module_offs = OMAP3430_PER_MOD, .module_offs = OMAP3430_PER_MOD,
......
...@@ -3434,6 +3434,7 @@ static struct omap_hwmod omap44xx_uart1_hwmod = { ...@@ -3434,6 +3434,7 @@ static struct omap_hwmod omap44xx_uart1_hwmod = {
.name = "uart1", .name = "uart1",
.class = &omap44xx_uart_hwmod_class, .class = &omap44xx_uart_hwmod_class,
.clkdm_name = "l4_per_clkdm", .clkdm_name = "l4_per_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.mpu_irqs = omap44xx_uart1_irqs, .mpu_irqs = omap44xx_uart1_irqs,
.sdma_reqs = omap44xx_uart1_sdma_reqs, .sdma_reqs = omap44xx_uart1_sdma_reqs,
.main_clk = "func_48m_fclk", .main_clk = "func_48m_fclk",
...@@ -3462,6 +3463,7 @@ static struct omap_hwmod omap44xx_uart2_hwmod = { ...@@ -3462,6 +3463,7 @@ static struct omap_hwmod omap44xx_uart2_hwmod = {
.name = "uart2", .name = "uart2",
.class = &omap44xx_uart_hwmod_class, .class = &omap44xx_uart_hwmod_class,
.clkdm_name = "l4_per_clkdm", .clkdm_name = "l4_per_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.mpu_irqs = omap44xx_uart2_irqs, .mpu_irqs = omap44xx_uart2_irqs,
.sdma_reqs = omap44xx_uart2_sdma_reqs, .sdma_reqs = omap44xx_uart2_sdma_reqs,
.main_clk = "func_48m_fclk", .main_clk = "func_48m_fclk",
...@@ -3490,7 +3492,8 @@ static struct omap_hwmod omap44xx_uart3_hwmod = { ...@@ -3490,7 +3492,8 @@ static struct omap_hwmod omap44xx_uart3_hwmod = {
.name = "uart3", .name = "uart3",
.class = &omap44xx_uart_hwmod_class, .class = &omap44xx_uart_hwmod_class,
.clkdm_name = "l4_per_clkdm", .clkdm_name = "l4_per_clkdm",
.flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET, .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET |
HWMOD_SWSUP_SIDLE_ACT,
.mpu_irqs = omap44xx_uart3_irqs, .mpu_irqs = omap44xx_uart3_irqs,
.sdma_reqs = omap44xx_uart3_sdma_reqs, .sdma_reqs = omap44xx_uart3_sdma_reqs,
.main_clk = "func_48m_fclk", .main_clk = "func_48m_fclk",
...@@ -3519,6 +3522,7 @@ static struct omap_hwmod omap44xx_uart4_hwmod = { ...@@ -3519,6 +3522,7 @@ static struct omap_hwmod omap44xx_uart4_hwmod = {
.name = "uart4", .name = "uart4",
.class = &omap44xx_uart_hwmod_class, .class = &omap44xx_uart_hwmod_class,
.clkdm_name = "l4_per_clkdm", .clkdm_name = "l4_per_clkdm",
.flags = HWMOD_SWSUP_SIDLE_ACT,
.mpu_irqs = omap44xx_uart4_irqs, .mpu_irqs = omap44xx_uart4_irqs,
.sdma_reqs = omap44xx_uart4_sdma_reqs, .sdma_reqs = omap44xx_uart4_sdma_reqs,
.main_clk = "func_48m_fclk", .main_clk = "func_48m_fclk",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment