aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoit Cousson <b-cousson@ti.com>2011-02-02 07:04:36 -0500
committerBenoit Cousson <b-cousson@ti.com>2011-02-17 04:57:58 -0500
commitd11c217f1a8f9ea2b2c89b8a533396482a36e8c0 (patch)
tree29d030d39b0f6bf87d889f4e25dfd9dc5b7cfedc
parent85e2efbb1db9a18d218006706d6e4fbeb0216213 (diff)
OMAP4: hwmod data: Add hwspinlock
Add hwspinlock hwmod data for OMAP4 chip Signed-off-by: Cousson, Benoit <b-cousson@ti.com> Signed-off-by: Hari Kanigeri <h-kanigeri2@ti.com> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com> Cc: Paul Walmsley <paul@pwsan.com> [b-cousson@ti.com: Move the data to keep the original order and add missing SIDLE_SMART_WKUP flag]
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_44xx_data.c65
1 files changed, 64 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index c2806bd11fbf..46da576ffaf8 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -555,7 +555,6 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = {
555 * sl2if 555 * sl2if
556 * slimbus1 556 * slimbus1
557 * slimbus2 557 * slimbus2
558 * spinlock
559 * timer1 558 * timer1
560 * timer10 559 * timer10
561 * timer11 560 * timer11
@@ -1639,6 +1638,67 @@ static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
1639}; 1638};
1640 1639
1641/* 1640/*
1641 * 'spinlock' class
1642 * spinlock provides hardware assistance for synchronizing the processes
1643 * running on multiple processors
1644 */
1645
1646static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = {
1647 .rev_offs = 0x0000,
1648 .sysc_offs = 0x0010,
1649 .syss_offs = 0x0014,
1650 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1651 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
1652 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1653 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1654 SIDLE_SMART_WKUP),
1655 .sysc_fields = &omap_hwmod_sysc_type1,
1656};
1657
1658static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
1659 .name = "spinlock",
1660 .sysc = &omap44xx_spinlock_sysc,
1661};
1662
1663/* spinlock */
1664static struct omap_hwmod omap44xx_spinlock_hwmod;
1665static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = {
1666 {
1667 .pa_start = 0x4a0f6000,
1668 .pa_end = 0x4a0f6fff,
1669 .flags = ADDR_TYPE_RT
1670 },
1671};
1672
1673/* l4_cfg -> spinlock */
1674static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
1675 .master = &omap44xx_l4_cfg_hwmod,
1676 .slave = &omap44xx_spinlock_hwmod,
1677 .clk = "l4_div_ck",
1678 .addr = omap44xx_spinlock_addrs,
1679 .addr_cnt = ARRAY_SIZE(omap44xx_spinlock_addrs),
1680 .user = OCP_USER_MPU | OCP_USER_SDMA,
1681};
1682
1683/* spinlock slave ports */
1684static struct omap_hwmod_ocp_if *omap44xx_spinlock_slaves[] = {
1685 &omap44xx_l4_cfg__spinlock,
1686};
1687
1688static struct omap_hwmod omap44xx_spinlock_hwmod = {
1689 .name = "spinlock",
1690 .class = &omap44xx_spinlock_hwmod_class,
1691 .prcm = {
1692 .omap4 = {
1693 .clkctrl_reg = OMAP4430_CM_L4CFG_HW_SEM_CLKCTRL,
1694 },
1695 },
1696 .slaves = omap44xx_spinlock_slaves,
1697 .slaves_cnt = ARRAY_SIZE(omap44xx_spinlock_slaves),
1698 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1699};
1700
1701/*
1642 * 'uart' class 1702 * 'uart' class
1643 * universal asynchronous receiver/transmitter (uart) 1703 * universal asynchronous receiver/transmitter (uart)
1644 */ 1704 */
@@ -2058,6 +2118,9 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
2058 &omap44xx_smartreflex_iva_hwmod, 2118 &omap44xx_smartreflex_iva_hwmod,
2059 &omap44xx_smartreflex_mpu_hwmod, 2119 &omap44xx_smartreflex_mpu_hwmod,
2060 2120
2121 /* spinlock class */
2122 &omap44xx_spinlock_hwmod,
2123
2061 /* uart class */ 2124 /* uart class */
2062 &omap44xx_uart1_hwmod, 2125 &omap44xx_uart1_hwmod,
2063 &omap44xx_uart2_hwmod, 2126 &omap44xx_uart2_hwmod,