提交 da7cdfac 编写于 作者: T Tomi Valkeinen 提交者: Paul Walmsley

OMAP4: hwmod data: Change DSS main_clk scheme

Currently using pm_runtime with DSS requires the DSS driver to enable
the DSS functional clock before calling pm_runtime_get(). That makes it
impossible to use pm_runtime in DSS as it is meant to be used, with
pm_runtime callbacks.

This patch changes the hwmod database for OMAP4 so that enabling the
hwmod via pm_runtime will also enable the DSS functional clock, allowing
us to use pm_runtime properly in DSS driver.

The DSS HWMOD side is not really correct, not before nor after this
patch, and getting DSS to retention will probably not work currently.
However, it is not supported in the mainline kernel anyway, so this
won't break anything.

So this patch allows us to write the pm_runtime adaptation for the DSS
driver the way it should be done, and the HWMOD/PM side can be fixed
later.
Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: NBenoit Cousson <b-cousson@ti.com>
Signed-off-by: NPaul Walmsley <paul@pwsan.com>
上级 3a23aafc
...@@ -1136,7 +1136,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = { ...@@ -1136,7 +1136,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = { static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
.master = &omap44xx_l3_main_2_hwmod, .master = &omap44xx_l3_main_2_hwmod,
.slave = &omap44xx_dss_hwmod, .slave = &omap44xx_dss_hwmod,
.clk = "l3_div_ck", .clk = "dss_fck",
.addr = omap44xx_dss_dma_addrs, .addr = omap44xx_dss_dma_addrs,
.user = OCP_USER_SDMA, .user = OCP_USER_SDMA,
}; };
...@@ -1175,7 +1175,7 @@ static struct omap_hwmod_opt_clk dss_opt_clks[] = { ...@@ -1175,7 +1175,7 @@ static struct omap_hwmod_opt_clk dss_opt_clks[] = {
static struct omap_hwmod omap44xx_dss_hwmod = { static struct omap_hwmod omap44xx_dss_hwmod = {
.name = "dss_core", .name = "dss_core",
.class = &omap44xx_dss_hwmod_class, .class = &omap44xx_dss_hwmod_class,
.main_clk = "dss_fck", .main_clk = "dss_dss_clk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
...@@ -1238,7 +1238,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = { ...@@ -1238,7 +1238,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = { static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
.master = &omap44xx_l3_main_2_hwmod, .master = &omap44xx_l3_main_2_hwmod,
.slave = &omap44xx_dss_dispc_hwmod, .slave = &omap44xx_dss_dispc_hwmod,
.clk = "l3_div_ck", .clk = "dss_fck",
.addr = omap44xx_dss_dispc_dma_addrs, .addr = omap44xx_dss_dispc_dma_addrs,
.user = OCP_USER_SDMA, .user = OCP_USER_SDMA,
}; };
...@@ -1279,7 +1279,7 @@ static struct omap_hwmod omap44xx_dss_dispc_hwmod = { ...@@ -1279,7 +1279,7 @@ static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
.flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
.mpu_irqs = omap44xx_dss_dispc_irqs, .mpu_irqs = omap44xx_dss_dispc_irqs,
.sdma_reqs = omap44xx_dss_dispc_sdma_reqs, .sdma_reqs = omap44xx_dss_dispc_sdma_reqs,
.main_clk = "dss_fck", .main_clk = "dss_dss_clk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
...@@ -1338,7 +1338,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = { ...@@ -1338,7 +1338,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = { static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
.master = &omap44xx_l3_main_2_hwmod, .master = &omap44xx_l3_main_2_hwmod,
.slave = &omap44xx_dss_dsi1_hwmod, .slave = &omap44xx_dss_dsi1_hwmod,
.clk = "l3_div_ck", .clk = "dss_fck",
.addr = omap44xx_dss_dsi1_dma_addrs, .addr = omap44xx_dss_dsi1_dma_addrs,
.user = OCP_USER_SDMA, .user = OCP_USER_SDMA,
}; };
...@@ -1376,7 +1376,7 @@ static struct omap_hwmod omap44xx_dss_dsi1_hwmod = { ...@@ -1376,7 +1376,7 @@ static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
.class = &omap44xx_dsi_hwmod_class, .class = &omap44xx_dsi_hwmod_class,
.mpu_irqs = omap44xx_dss_dsi1_irqs, .mpu_irqs = omap44xx_dss_dsi1_irqs,
.sdma_reqs = omap44xx_dss_dsi1_sdma_reqs, .sdma_reqs = omap44xx_dss_dsi1_sdma_reqs,
.main_clk = "dss_fck", .main_clk = "dss_dss_clk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
...@@ -1414,7 +1414,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = { ...@@ -1414,7 +1414,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = { static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
.master = &omap44xx_l3_main_2_hwmod, .master = &omap44xx_l3_main_2_hwmod,
.slave = &omap44xx_dss_dsi2_hwmod, .slave = &omap44xx_dss_dsi2_hwmod,
.clk = "l3_div_ck", .clk = "dss_fck",
.addr = omap44xx_dss_dsi2_dma_addrs, .addr = omap44xx_dss_dsi2_dma_addrs,
.user = OCP_USER_SDMA, .user = OCP_USER_SDMA,
}; };
...@@ -1452,7 +1452,7 @@ static struct omap_hwmod omap44xx_dss_dsi2_hwmod = { ...@@ -1452,7 +1452,7 @@ static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
.class = &omap44xx_dsi_hwmod_class, .class = &omap44xx_dsi_hwmod_class,
.mpu_irqs = omap44xx_dss_dsi2_irqs, .mpu_irqs = omap44xx_dss_dsi2_irqs,
.sdma_reqs = omap44xx_dss_dsi2_sdma_reqs, .sdma_reqs = omap44xx_dss_dsi2_sdma_reqs,
.main_clk = "dss_fck", .main_clk = "dss_dss_clk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
...@@ -1510,7 +1510,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = { ...@@ -1510,7 +1510,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = { static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
.master = &omap44xx_l3_main_2_hwmod, .master = &omap44xx_l3_main_2_hwmod,
.slave = &omap44xx_dss_hdmi_hwmod, .slave = &omap44xx_dss_hdmi_hwmod,
.clk = "l3_div_ck", .clk = "dss_fck",
.addr = omap44xx_dss_hdmi_dma_addrs, .addr = omap44xx_dss_hdmi_dma_addrs,
.user = OCP_USER_SDMA, .user = OCP_USER_SDMA,
}; };
...@@ -1548,7 +1548,7 @@ static struct omap_hwmod omap44xx_dss_hdmi_hwmod = { ...@@ -1548,7 +1548,7 @@ static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
.class = &omap44xx_hdmi_hwmod_class, .class = &omap44xx_hdmi_hwmod_class,
.mpu_irqs = omap44xx_dss_hdmi_irqs, .mpu_irqs = omap44xx_dss_hdmi_irqs,
.sdma_reqs = omap44xx_dss_hdmi_sdma_reqs, .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
.main_clk = "dss_fck", .main_clk = "dss_dss_clk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
...@@ -1601,7 +1601,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = { ...@@ -1601,7 +1601,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = { static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
.master = &omap44xx_l3_main_2_hwmod, .master = &omap44xx_l3_main_2_hwmod,
.slave = &omap44xx_dss_rfbi_hwmod, .slave = &omap44xx_dss_rfbi_hwmod,
.clk = "l3_div_ck", .clk = "dss_fck",
.addr = omap44xx_dss_rfbi_dma_addrs, .addr = omap44xx_dss_rfbi_dma_addrs,
.user = OCP_USER_SDMA, .user = OCP_USER_SDMA,
}; };
...@@ -1638,7 +1638,7 @@ static struct omap_hwmod omap44xx_dss_rfbi_hwmod = { ...@@ -1638,7 +1638,7 @@ static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
.name = "dss_rfbi", .name = "dss_rfbi",
.class = &omap44xx_rfbi_hwmod_class, .class = &omap44xx_rfbi_hwmod_class,
.sdma_reqs = omap44xx_dss_rfbi_sdma_reqs, .sdma_reqs = omap44xx_dss_rfbi_sdma_reqs,
.main_clk = "dss_fck", .main_clk = "dss_dss_clk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
...@@ -1675,7 +1675,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = { ...@@ -1675,7 +1675,7 @@ static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = { static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
.master = &omap44xx_l3_main_2_hwmod, .master = &omap44xx_l3_main_2_hwmod,
.slave = &omap44xx_dss_venc_hwmod, .slave = &omap44xx_dss_venc_hwmod,
.clk = "l3_div_ck", .clk = "dss_fck",
.addr = omap44xx_dss_venc_dma_addrs, .addr = omap44xx_dss_venc_dma_addrs,
.user = OCP_USER_SDMA, .user = OCP_USER_SDMA,
}; };
...@@ -1707,7 +1707,7 @@ static struct omap_hwmod_ocp_if *omap44xx_dss_venc_slaves[] = { ...@@ -1707,7 +1707,7 @@ static struct omap_hwmod_ocp_if *omap44xx_dss_venc_slaves[] = {
static struct omap_hwmod omap44xx_dss_venc_hwmod = { static struct omap_hwmod omap44xx_dss_venc_hwmod = {
.name = "dss_venc", .name = "dss_venc",
.class = &omap44xx_venc_hwmod_class, .class = &omap44xx_venc_hwmod_class,
.main_clk = "dss_fck", .main_clk = "dss_dss_clk",
.prcm = { .prcm = {
.omap4 = { .omap4 = {
.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册