aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2011-11-08 05:16:10 -0500
committerPaul Walmsley <paul@pwsan.com>2011-11-08 05:16:10 -0500
commit6c3d7e34d68ffae888d33bf364f447e0b415591f (patch)
tree1e47e0f62455f1e6cc69c87ee5f20fb04bfe6acb /arch/arm/mach-omap2
parent8c3105ca1a42783b13930fbd375484ec8c72e608 (diff)
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 9ede365aa6f74428a1f69c21ca1cf21213167576 ("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>
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_3xxx_data.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
index 45ccd4f07cff..4aaf0caaf3cc 100644
--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
@@ -1492,6 +1492,7 @@ static struct omap_hwmod_addr_space omap3xxx_dss_dsi1_addrs[] = {
1492static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = { 1492static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = {
1493 .master = &omap3xxx_l4_core_hwmod, 1493 .master = &omap3xxx_l4_core_hwmod,
1494 .slave = &omap3xxx_dss_dsi1_hwmod, 1494 .slave = &omap3xxx_dss_dsi1_hwmod,
1495 .clk = "dss_ick",
1495 .addr = omap3xxx_dss_dsi1_addrs, 1496 .addr = omap3xxx_dss_dsi1_addrs,
1496 .fw = { 1497 .fw = {
1497 .omap2 = { 1498 .omap2 = {
@@ -1508,6 +1509,10 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_dsi1_slaves[] = {
1508 &omap3xxx_l4_core__dss_dsi1, 1509 &omap3xxx_l4_core__dss_dsi1,
1509}; 1510};
1510 1511
1512static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
1513 { .role = "sys_clk", .clk = "dss2_alwon_fck" },
1514};
1515
1511static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = { 1516static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {
1512 .name = "dss_dsi1", 1517 .name = "dss_dsi1",
1513 .class = &omap3xxx_dsi_hwmod_class, 1518 .class = &omap3xxx_dsi_hwmod_class,
@@ -1520,6 +1525,8 @@ static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {
1520 .module_offs = OMAP3430_DSS_MOD, 1525 .module_offs = OMAP3430_DSS_MOD,
1521 }, 1526 },
1522 }, 1527 },
1528 .opt_clks = dss_dsi1_opt_clks,
1529 .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks),
1523 .slaves = omap3xxx_dss_dsi1_slaves, 1530 .slaves = omap3xxx_dss_dsi1_slaves,
1524 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dsi1_slaves), 1531 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dsi1_slaves),
1525 .flags = HWMOD_NO_IDLEST, 1532 .flags = HWMOD_NO_IDLEST,
@@ -1546,6 +1553,10 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_rfbi_slaves[] = {
1546 &omap3xxx_l4_core__dss_rfbi, 1553 &omap3xxx_l4_core__dss_rfbi,
1547}; 1554};
1548 1555
1556static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
1557 { .role = "ick", .clk = "dss_ick" },
1558};
1559
1549static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = { 1560static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
1550 .name = "dss_rfbi", 1561 .name = "dss_rfbi",
1551 .class = &omap2_rfbi_hwmod_class, 1562 .class = &omap2_rfbi_hwmod_class,
@@ -1557,6 +1568,8 @@ static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
1557 .module_offs = OMAP3430_DSS_MOD, 1568 .module_offs = OMAP3430_DSS_MOD,
1558 }, 1569 },
1559 }, 1570 },
1571 .opt_clks = dss_rfbi_opt_clks,
1572 .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
1560 .slaves = omap3xxx_dss_rfbi_slaves, 1573 .slaves = omap3xxx_dss_rfbi_slaves,
1561 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_rfbi_slaves), 1574 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_rfbi_slaves),
1562 .flags = HWMOD_NO_IDLEST, 1575 .flags = HWMOD_NO_IDLEST,
@@ -1566,7 +1579,7 @@ static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
1566static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = { 1579static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {
1567 .master = &omap3xxx_l4_core_hwmod, 1580 .master = &omap3xxx_l4_core_hwmod,
1568 .slave = &omap3xxx_dss_venc_hwmod, 1581 .slave = &omap3xxx_dss_venc_hwmod,
1569 .clk = "dss_tv_fck", 1582 .clk = "dss_ick",
1570 .addr = omap2_dss_venc_addrs, 1583 .addr = omap2_dss_venc_addrs,
1571 .fw = { 1584 .fw = {
1572 .omap2 = { 1585 .omap2 = {
@@ -1584,10 +1597,15 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_venc_slaves[] = {
1584 &omap3xxx_l4_core__dss_venc, 1597 &omap3xxx_l4_core__dss_venc,
1585}; 1598};
1586 1599
1600static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = {
1601 /* required only on OMAP3430 */
1602 { .role = "tv_dac_clk", .clk = "dss_96m_fck" },
1603};
1604
1587static struct omap_hwmod omap3xxx_dss_venc_hwmod = { 1605static struct omap_hwmod omap3xxx_dss_venc_hwmod = {
1588 .name = "dss_venc", 1606 .name = "dss_venc",
1589 .class = &omap2_venc_hwmod_class, 1607 .class = &omap2_venc_hwmod_class,
1590 .main_clk = "dss1_alwon_fck", 1608 .main_clk = "dss_tv_fck",
1591 .prcm = { 1609 .prcm = {
1592 .omap2 = { 1610 .omap2 = {
1593 .prcm_reg_id = 1, 1611 .prcm_reg_id = 1,
@@ -1595,6 +1613,8 @@ static struct omap_hwmod omap3xxx_dss_venc_hwmod = {
1595 .module_offs = OMAP3430_DSS_MOD, 1613 .module_offs = OMAP3430_DSS_MOD,
1596 }, 1614 },
1597 }, 1615 },
1616 .opt_clks = dss_venc_opt_clks,
1617 .opt_clks_cnt = ARRAY_SIZE(dss_venc_opt_clks),
1598 .slaves = omap3xxx_dss_venc_slaves, 1618 .slaves = omap3xxx_dss_venc_slaves,
1599 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_venc_slaves), 1619 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_venc_slaves),
1600 .flags = HWMOD_NO_IDLEST, 1620 .flags = HWMOD_NO_IDLEST,