diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-11-08 05:16:10 -0500 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2011-11-08 05:16:10 -0500 |
commit | 6c3d7e34d68ffae888d33bf364f447e0b415591f (patch) | |
tree | 1e47e0f62455f1e6cc69c87ee5f20fb04bfe6acb /arch/arm/mach-omap2 | |
parent | 8c3105ca1a42783b13930fbd375484ec8c72e608 (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.c | 24 |
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[] = { | |||
1492 | static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = { | 1492 | static 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 | ||
1512 | static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = { | ||
1513 | { .role = "sys_clk", .clk = "dss2_alwon_fck" }, | ||
1514 | }; | ||
1515 | |||
1511 | static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = { | 1516 | static 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 | ||
1556 | static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = { | ||
1557 | { .role = "ick", .clk = "dss_ick" }, | ||
1558 | }; | ||
1559 | |||
1549 | static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = { | 1560 | static 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 = { | |||
1566 | static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = { | 1579 | static 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 | ||
1600 | static 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 | |||
1587 | static struct omap_hwmod omap3xxx_dss_venc_hwmod = { | 1605 | static 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, |