ARM: OMAP3: HWMOD: fix DSS clock data
The OMAP3 HWMOD data currently contains these errors with DSS clocks:
- dss_rfbi is missing ick opt-clock, which is needed for RFBI to
calculate timings
- dss_dsi is missing ick and sys_clk
- dss_venc is missing dss_96m_fck opt-clock, which is required on
OMAP3430
- dss_venc's interface and main clocks are wrong, causing VENC to fail
to start
These problems were temporarily fixed with a DSS patch
9ede365aa6
("HACK: OMAP: DSS2: clk hack
for OMAP2/3"), which can be reverted after this patch (and the similar
patches for other OMAPs).
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
This commit is contained in:
parent
8c3105ca1a
commit
6c3d7e34d6
|
@ -1492,6 +1492,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 = {
|
||||||
|
@ -1508,6 +1509,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,
|
||||||
|
@ -1520,6 +1525,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,
|
||||||
|
@ -1546,6 +1553,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,
|
||||||
|
@ -1557,6 +1568,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,
|
||||||
|
@ -1566,7 +1579,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 = {
|
||||||
|
@ -1584,10 +1597,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,
|
||||||
|
@ -1595,6 +1613,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,
|
||||||
|
|
Loading…
Reference in New Issue