|
@@ -1369,9 +1369,14 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_slaves[] = {
|
|
};
|
|
};
|
|
|
|
|
|
static struct omap_hwmod_opt_clk dss_opt_clks[] = {
|
|
static struct omap_hwmod_opt_clk dss_opt_clks[] = {
|
|
- { .role = "tv_clk", .clk = "dss_tv_fck" },
|
|
|
|
- { .role = "video_clk", .clk = "dss_96m_fck" },
|
|
|
|
|
|
+ /*
|
|
|
|
+ * The DSS HW needs all DSS clocks enabled during reset. The dss_core
|
|
|
|
+ * driver does not use these clocks.
|
|
|
|
+ */
|
|
{ .role = "sys_clk", .clk = "dss2_alwon_fck" },
|
|
{ .role = "sys_clk", .clk = "dss2_alwon_fck" },
|
|
|
|
+ { .role = "tv_clk", .clk = "dss_tv_fck" },
|
|
|
|
+ /* required only on OMAP3430 */
|
|
|
|
+ { .role = "tv_dac_clk", .clk = "dss_96m_fck" },
|
|
};
|
|
};
|
|
|
|
|
|
static struct omap_hwmod omap3430es1_dss_core_hwmod = {
|
|
static struct omap_hwmod omap3430es1_dss_core_hwmod = {
|
|
@@ -1394,11 +1399,12 @@ static struct omap_hwmod omap3430es1_dss_core_hwmod = {
|
|
.slaves_cnt = ARRAY_SIZE(omap3430es1_dss_slaves),
|
|
.slaves_cnt = ARRAY_SIZE(omap3430es1_dss_slaves),
|
|
.masters = omap3xxx_dss_masters,
|
|
.masters = omap3xxx_dss_masters,
|
|
.masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters),
|
|
.masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters),
|
|
- .flags = HWMOD_NO_IDLEST,
|
|
|
|
|
|
+ .flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
|
|
};
|
|
};
|
|
|
|
|
|
static struct omap_hwmod omap3xxx_dss_core_hwmod = {
|
|
static struct omap_hwmod omap3xxx_dss_core_hwmod = {
|
|
.name = "dss_core",
|
|
.name = "dss_core",
|
|
|
|
+ .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
|
|
.class = &omap2_dss_hwmod_class,
|
|
.class = &omap2_dss_hwmod_class,
|
|
.main_clk = "dss1_alwon_fck", /* instead of dss_fck */
|
|
.main_clk = "dss1_alwon_fck", /* instead of dss_fck */
|
|
.sdma_reqs = omap3xxx_dss_sdma_chs,
|
|
.sdma_reqs = omap3xxx_dss_sdma_chs,
|
|
@@ -1456,6 +1462,7 @@ static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
|
|
.slaves = omap3xxx_dss_dispc_slaves,
|
|
.slaves = omap3xxx_dss_dispc_slaves,
|
|
.slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dispc_slaves),
|
|
.slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dispc_slaves),
|
|
.flags = HWMOD_NO_IDLEST,
|
|
.flags = HWMOD_NO_IDLEST,
|
|
|
|
+ .dev_attr = &omap2_3_dss_dispc_dev_attr
|
|
};
|
|
};
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -1486,6 +1493,7 @@ static struct omap_hwmod_addr_space omap3xxx_dss_dsi1_addrs[] = {
|
|
static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = {
|
|
static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = {
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.slave = &omap3xxx_dss_dsi1_hwmod,
|
|
.slave = &omap3xxx_dss_dsi1_hwmod,
|
|
|
|
+ .clk = "dss_ick",
|
|
.addr = omap3xxx_dss_dsi1_addrs,
|
|
.addr = omap3xxx_dss_dsi1_addrs,
|
|
.fw = {
|
|
.fw = {
|
|
.omap2 = {
|
|
.omap2 = {
|
|
@@ -1502,6 +1510,10 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_dsi1_slaves[] = {
|
|
&omap3xxx_l4_core__dss_dsi1,
|
|
&omap3xxx_l4_core__dss_dsi1,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
|
|
|
|
+ { .role = "sys_clk", .clk = "dss2_alwon_fck" },
|
|
|
|
+};
|
|
|
|
+
|
|
static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {
|
|
static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {
|
|
.name = "dss_dsi1",
|
|
.name = "dss_dsi1",
|
|
.class = &omap3xxx_dsi_hwmod_class,
|
|
.class = &omap3xxx_dsi_hwmod_class,
|
|
@@ -1514,6 +1526,8 @@ static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {
|
|
.module_offs = OMAP3430_DSS_MOD,
|
|
.module_offs = OMAP3430_DSS_MOD,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
+ .opt_clks = dss_dsi1_opt_clks,
|
|
|
|
+ .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks),
|
|
.slaves = omap3xxx_dss_dsi1_slaves,
|
|
.slaves = omap3xxx_dss_dsi1_slaves,
|
|
.slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dsi1_slaves),
|
|
.slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dsi1_slaves),
|
|
.flags = HWMOD_NO_IDLEST,
|
|
.flags = HWMOD_NO_IDLEST,
|
|
@@ -1540,6 +1554,10 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_rfbi_slaves[] = {
|
|
&omap3xxx_l4_core__dss_rfbi,
|
|
&omap3xxx_l4_core__dss_rfbi,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
|
|
|
|
+ { .role = "ick", .clk = "dss_ick" },
|
|
|
|
+};
|
|
|
|
+
|
|
static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
|
|
static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
|
|
.name = "dss_rfbi",
|
|
.name = "dss_rfbi",
|
|
.class = &omap2_rfbi_hwmod_class,
|
|
.class = &omap2_rfbi_hwmod_class,
|
|
@@ -1551,6 +1569,8 @@ static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
|
|
.module_offs = OMAP3430_DSS_MOD,
|
|
.module_offs = OMAP3430_DSS_MOD,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
+ .opt_clks = dss_rfbi_opt_clks,
|
|
|
|
+ .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
|
|
.slaves = omap3xxx_dss_rfbi_slaves,
|
|
.slaves = omap3xxx_dss_rfbi_slaves,
|
|
.slaves_cnt = ARRAY_SIZE(omap3xxx_dss_rfbi_slaves),
|
|
.slaves_cnt = ARRAY_SIZE(omap3xxx_dss_rfbi_slaves),
|
|
.flags = HWMOD_NO_IDLEST,
|
|
.flags = HWMOD_NO_IDLEST,
|
|
@@ -1560,7 +1580,7 @@ static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
|
|
static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {
|
|
static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.master = &omap3xxx_l4_core_hwmod,
|
|
.slave = &omap3xxx_dss_venc_hwmod,
|
|
.slave = &omap3xxx_dss_venc_hwmod,
|
|
- .clk = "dss_tv_fck",
|
|
|
|
|
|
+ .clk = "dss_ick",
|
|
.addr = omap2_dss_venc_addrs,
|
|
.addr = omap2_dss_venc_addrs,
|
|
.fw = {
|
|
.fw = {
|
|
.omap2 = {
|
|
.omap2 = {
|
|
@@ -1578,10 +1598,15 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_venc_slaves[] = {
|
|
&omap3xxx_l4_core__dss_venc,
|
|
&omap3xxx_l4_core__dss_venc,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = {
|
|
|
|
+ /* required only on OMAP3430 */
|
|
|
|
+ { .role = "tv_dac_clk", .clk = "dss_96m_fck" },
|
|
|
|
+};
|
|
|
|
+
|
|
static struct omap_hwmod omap3xxx_dss_venc_hwmod = {
|
|
static struct omap_hwmod omap3xxx_dss_venc_hwmod = {
|
|
.name = "dss_venc",
|
|
.name = "dss_venc",
|
|
.class = &omap2_venc_hwmod_class,
|
|
.class = &omap2_venc_hwmod_class,
|
|
- .main_clk = "dss1_alwon_fck",
|
|
|
|
|
|
+ .main_clk = "dss_tv_fck",
|
|
.prcm = {
|
|
.prcm = {
|
|
.omap2 = {
|
|
.omap2 = {
|
|
.prcm_reg_id = 1,
|
|
.prcm_reg_id = 1,
|
|
@@ -1589,6 +1614,8 @@ static struct omap_hwmod omap3xxx_dss_venc_hwmod = {
|
|
.module_offs = OMAP3430_DSS_MOD,
|
|
.module_offs = OMAP3430_DSS_MOD,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
+ .opt_clks = dss_venc_opt_clks,
|
|
|
|
+ .opt_clks_cnt = ARRAY_SIZE(dss_venc_opt_clks),
|
|
.slaves = omap3xxx_dss_venc_slaves,
|
|
.slaves = omap3xxx_dss_venc_slaves,
|
|
.slaves_cnt = ARRAY_SIZE(omap3xxx_dss_venc_slaves),
|
|
.slaves_cnt = ARRAY_SIZE(omap3xxx_dss_venc_slaves),
|
|
.flags = HWMOD_NO_IDLEST,
|
|
.flags = HWMOD_NO_IDLEST,
|