aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2012-10-02 20:41:35 -0400
committerTony Lindgren <tony@atomide.com>2012-10-18 19:05:55 -0400
commit2a296c8f89bc6aaf91b255c7d631fcbbfaf840ec (patch)
tree7c895c5e5579ed9e7f2c64392a463c48d088b6dd /arch/arm/mach-omap2
parent2ba30f0f23d277dec2a53ad6ccaa2f2c6e994fc8 (diff)
ARM: OMAP: Make plat/omap_hwmod.h local to mach-omap2
Let's make omap_hwmod local to mach-omap2 for ARM common zImage support. Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r--arch/arm/mach-omap2/clockdomain.h2
-rw-r--r--arch/arm/mach-omap2/devices.c5
-rw-r--r--arch/arm/mach-omap2/display.c2
-rw-r--r--arch/arm/mach-omap2/dma.c2
-rw-r--r--arch/arm/mach-omap2/drm.c2
-rw-r--r--arch/arm/mach-omap2/gpio.c2
-rw-r--r--arch/arm/mach-omap2/hdq1w.c2
-rw-r--r--arch/arm/mach-omap2/hdq1w.h2
-rw-r--r--arch/arm/mach-omap2/hwspinlock.c2
-rw-r--r--arch/arm/mach-omap2/i2c.c2
-rw-r--r--arch/arm/mach-omap2/io.c2
-rw-r--r--arch/arm/mach-omap2/msdi.c2
-rw-r--r--arch/arm/mach-omap2/mux.c2
-rw-r--r--arch/arm/mach-omap2/omap_device.c2
-rw-r--r--arch/arm/mach-omap2/omap_device.h2
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c2
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.h676
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2420_data.c3
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2430_data.c3
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_interconnect_data.c3
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c5
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c3
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c3
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_33xx_data.c2
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_3xxx_data.c3
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_44xx_data.c3
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_common_data.c2
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_common_data.h2
-rw-r--r--arch/arm/mach-omap2/omap_opp_data.h2
-rw-r--r--arch/arm/mach-omap2/pmu.c2
-rw-r--r--arch/arm/mach-omap2/serial.c6
-rw-r--r--arch/arm/mach-omap2/timer.c2
-rw-r--r--arch/arm/mach-omap2/wd_timer.c2
-rw-r--r--arch/arm/mach-omap2/wd_timer.h2
34 files changed, 723 insertions, 36 deletions
diff --git a/arch/arm/mach-omap2/clockdomain.h b/arch/arm/mach-omap2/clockdomain.h
index 629576be7444..a868c0296265 100644
--- a/arch/arm/mach-omap2/clockdomain.h
+++ b/arch/arm/mach-omap2/clockdomain.h
@@ -19,7 +19,7 @@
19 19
20#include "powerdomain.h" 20#include "powerdomain.h"
21#include <plat/clock.h> 21#include <plat/clock.h>
22#include <plat/omap_hwmod.h> 22#include "omap_hwmod.h"
23#include <plat/cpu.h> 23#include <plat/cpu.h>
24 24
25/* 25/*
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 48c0def2dbc2..86a5e13c9f59 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -23,9 +23,10 @@
23#include <asm/mach-types.h> 23#include <asm/mach-types.h>
24#include <asm/mach/map.h> 24#include <asm/mach/map.h>
25 25
26#include "iomap.h"
27#include <plat-omap/dma-omap.h> 26#include <plat-omap/dma-omap.h>
28#include <plat/omap_hwmod.h> 27
28#include "iomap.h"
29#include "omap_hwmod.h"
29#include "omap_device.h" 30#include "omap_device.h"
30#include "omap4-keypad.h" 31#include "omap4-keypad.h"
31 32
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index 55661d00423c..815af41c4375 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -25,7 +25,7 @@
25#include <linux/delay.h> 25#include <linux/delay.h>
26 26
27#include <video/omapdss.h> 27#include <video/omapdss.h>
28#include <plat/omap_hwmod.h> 28#include "omap_hwmod.h"
29#include "omap_device.h" 29#include "omap_device.h"
30#include <plat/omap-pm.h> 30#include <plat/omap-pm.h>
31#include "common.h" 31#include "common.h"
diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c
index 7ddc6c90ed71..bc9a4e941e59 100644
--- a/arch/arm/mach-omap2/dma.c
+++ b/arch/arm/mach-omap2/dma.c
@@ -28,9 +28,9 @@
28#include <linux/init.h> 28#include <linux/init.h>
29#include <linux/device.h> 29#include <linux/device.h>
30 30
31#include <plat/omap_hwmod.h>
32#include <plat-omap/dma-omap.h> 31#include <plat-omap/dma-omap.h>
33 32
33#include "omap_hwmod.h"
34#include "omap_device.h" 34#include "omap_device.h"
35 35
36#define OMAP2_DMA_STRIDE 0x60 36#define OMAP2_DMA_STRIDE 0x60
diff --git a/arch/arm/mach-omap2/drm.c b/arch/arm/mach-omap2/drm.c
index 67991ea53ce7..6282cc826613 100644
--- a/arch/arm/mach-omap2/drm.c
+++ b/arch/arm/mach-omap2/drm.c
@@ -25,7 +25,7 @@
25#include <linux/dma-mapping.h> 25#include <linux/dma-mapping.h>
26 26
27#include "omap_device.h" 27#include "omap_device.h"
28#include <plat/omap_hwmod.h> 28#include "omap_hwmod.h"
29 29
30#if defined(CONFIG_DRM_OMAP) || (CONFIG_DRM_OMAP_MODULE) 30#if defined(CONFIG_DRM_OMAP) || (CONFIG_DRM_OMAP_MODULE)
31 31
diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c
index 2bd24671bcf6..80b1e1a05ce2 100644
--- a/arch/arm/mach-omap2/gpio.c
+++ b/arch/arm/mach-omap2/gpio.c
@@ -23,7 +23,7 @@
23#include <linux/of.h> 23#include <linux/of.h>
24#include <linux/platform_data/gpio-omap.h> 24#include <linux/platform_data/gpio-omap.h>
25 25
26#include <plat/omap_hwmod.h> 26#include "omap_hwmod.h"
27#include "omap_device.h" 27#include "omap_device.h"
28#include <plat/omap-pm.h> 28#include <plat/omap-pm.h>
29 29
diff --git a/arch/arm/mach-omap2/hdq1w.c b/arch/arm/mach-omap2/hdq1w.c
index a533ce33d112..3da8900598c8 100644
--- a/arch/arm/mach-omap2/hdq1w.c
+++ b/arch/arm/mach-omap2/hdq1w.c
@@ -27,7 +27,7 @@
27#include <linux/err.h> 27#include <linux/err.h>
28#include <linux/platform_device.h> 28#include <linux/platform_device.h>
29 29
30#include <plat/omap_hwmod.h> 30#include "omap_hwmod.h"
31#include "omap_device.h" 31#include "omap_device.h"
32#include "hdq1w.h" 32#include "hdq1w.h"
33 33
diff --git a/arch/arm/mach-omap2/hdq1w.h b/arch/arm/mach-omap2/hdq1w.h
index 0c1efc846d8d..c7e08d2a7a46 100644
--- a/arch/arm/mach-omap2/hdq1w.h
+++ b/arch/arm/mach-omap2/hdq1w.h
@@ -21,7 +21,7 @@
21#ifndef ARCH_ARM_MACH_OMAP2_HDQ1W_H 21#ifndef ARCH_ARM_MACH_OMAP2_HDQ1W_H
22#define ARCH_ARM_MACH_OMAP2_HDQ1W_H 22#define ARCH_ARM_MACH_OMAP2_HDQ1W_H
23 23
24#include <plat/omap_hwmod.h> 24#include "omap_hwmod.h"
25 25
26/* 26/*
27 * XXX A future cleanup patch should modify 27 * XXX A future cleanup patch should modify
diff --git a/arch/arm/mach-omap2/hwspinlock.c b/arch/arm/mach-omap2/hwspinlock.c
index 58565214b428..1df9b5feda16 100644
--- a/arch/arm/mach-omap2/hwspinlock.c
+++ b/arch/arm/mach-omap2/hwspinlock.c
@@ -21,7 +21,7 @@
21#include <linux/err.h> 21#include <linux/err.h>
22#include <linux/hwspinlock.h> 22#include <linux/hwspinlock.h>
23 23
24#include <plat/omap_hwmod.h> 24#include "omap_hwmod.h"
25#include "omap_device.h" 25#include "omap_device.h"
26 26
27static struct hwspinlock_pdata omap_hwspinlock_pdata __initdata = { 27static struct hwspinlock_pdata omap_hwspinlock_pdata __initdata = {
diff --git a/arch/arm/mach-omap2/i2c.c b/arch/arm/mach-omap2/i2c.c
index 84b0d9f25a7b..8b3993724a1b 100644
--- a/arch/arm/mach-omap2/i2c.c
+++ b/arch/arm/mach-omap2/i2c.c
@@ -20,7 +20,7 @@
20 */ 20 */
21 21
22#include "common.h" 22#include "common.h"
23#include <plat/omap_hwmod.h> 23#include "omap_hwmod.h"
24#include "omap_device.h" 24#include "omap_device.h"
25 25
26#include "mux.h" 26#include "mux.h"
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 0bc8f66c4b72..60dede839a35 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -27,7 +27,7 @@
27 27
28#include <plat/serial.h> 28#include <plat/serial.h>
29#include <plat/omap-pm.h> 29#include <plat/omap-pm.h>
30#include <plat/omap_hwmod.h> 30#include "omap_hwmod.h"
31#include <plat/multi.h> 31#include <plat/multi.h>
32#include <plat-omap/dma-omap.h> 32#include <plat-omap/dma-omap.h>
33 33
diff --git a/arch/arm/mach-omap2/msdi.c b/arch/arm/mach-omap2/msdi.c
index 46bf98a99180..627e97e30743 100644
--- a/arch/arm/mach-omap2/msdi.c
+++ b/arch/arm/mach-omap2/msdi.c
@@ -25,9 +25,9 @@
25#include <linux/err.h> 25#include <linux/err.h>
26#include <linux/platform_data/gpio-omap.h> 26#include <linux/platform_data/gpio-omap.h>
27 27
28#include <plat/omap_hwmod.h>
29#include "common.h" 28#include "common.h"
30#include "control.h" 29#include "control.h"
30#include "omap_hwmod.h"
31#include "omap_device.h" 31#include "omap_device.h"
32#include "mux.h" 32#include "mux.h"
33#include "mmc.h" 33#include "mmc.h"
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
index 701e17cba468..635d5ef9551c 100644
--- a/arch/arm/mach-omap2/mux.c
+++ b/arch/arm/mach-omap2/mux.c
@@ -36,7 +36,7 @@
36#include <linux/interrupt.h> 36#include <linux/interrupt.h>
37 37
38 38
39#include <plat/omap_hwmod.h> 39#include "omap_hwmod.h"
40 40
41#include "control.h" 41#include "control.h"
42#include "mux.h" 42#include "mux.h"
diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c
index e5fbcb53c7cc..2e6d33730b25 100644
--- a/arch/arm/mach-omap2/omap_device.c
+++ b/arch/arm/mach-omap2/omap_device.c
@@ -90,7 +90,7 @@
90#include <linux/notifier.h> 90#include <linux/notifier.h>
91 91
92#include "omap_device.h" 92#include "omap_device.h"
93#include <plat/omap_hwmod.h> 93#include "omap_hwmod.h"
94#include <plat/clock.h> 94#include <plat/clock.h>
95 95
96/* These parameters are passed to _omap_device_{de,}activate() */ 96/* These parameters are passed to _omap_device_{de,}activate() */
diff --git a/arch/arm/mach-omap2/omap_device.h b/arch/arm/mach-omap2/omap_device.h
index 106f50665804..0933c599bf89 100644
--- a/arch/arm/mach-omap2/omap_device.h
+++ b/arch/arm/mach-omap2/omap_device.h
@@ -34,7 +34,7 @@
34#include <linux/kernel.h> 34#include <linux/kernel.h>
35#include <linux/platform_device.h> 35#include <linux/platform_device.h>
36 36
37#include <plat/omap_hwmod.h> 37#include "omap_hwmod.h"
38 38
39extern struct dev_pm_domain omap_device_pm_domain; 39extern struct dev_pm_domain omap_device_pm_domain;
40 40
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index b969ab1d258b..3dc482a1a75f 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -140,7 +140,7 @@
140#include <linux/bootmem.h> 140#include <linux/bootmem.h>
141 141
142#include <plat/clock.h> 142#include <plat/clock.h>
143#include <plat/omap_hwmod.h> 143#include "omap_hwmod.h"
144#include <plat/prcm.h> 144#include <plat/prcm.h>
145 145
146#include "soc.h" 146#include "soc.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h
new file mode 100644
index 000000000000..b3349f7b1a2c
--- /dev/null
+++ b/arch/arm/mach-omap2/omap_hwmod.h
@@ -0,0 +1,676 @@
1/*
2 * omap_hwmod macros, structures
3 *
4 * Copyright (C) 2009-2011 Nokia Corporation
5 * Copyright (C) 2012 Texas Instruments, Inc.
6 * Paul Walmsley
7 *
8 * Created in collaboration with (alphabetical order): Benoît Cousson,
9 * Kevin Hilman, Tony Lindgren, Rajendra Nayak, Vikram Pandita, Sakari
10 * Poussa, Anand Sawant, Santosh Shilimkar, Richard Woodruff
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2 as
14 * published by the Free Software Foundation.
15 *
16 * These headers and macros are used to define OMAP on-chip module
17 * data and their integration with other OMAP modules and Linux.
18 * Copious documentation and references can also be found in the
19 * omap_hwmod code, in arch/arm/mach-omap2/omap_hwmod.c (as of this
20 * writing).
21 *
22 * To do:
23 * - add interconnect error log structures
24 * - add pinmuxing
25 * - init_conn_id_bit (CONNID_BIT_VECTOR)
26 * - implement default hwmod SMS/SDRC flags?
27 * - move Linux-specific data ("non-ROM data") out
28 *
29 */
30#ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD_H
31#define __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD_H
32
33#include <linux/kernel.h>
34#include <linux/init.h>
35#include <linux/list.h>
36#include <linux/ioport.h>
37#include <linux/spinlock.h>
38#include <plat/cpu.h>
39
40struct omap_device;
41
42extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type1;
43extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type2;
44extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type3;
45
46/*
47 * OCP SYSCONFIG bit shifts/masks TYPE1. These are for IPs compliant
48 * with the original PRCM protocol defined for OMAP2420
49 */
50#define SYSC_TYPE1_MIDLEMODE_SHIFT 12
51#define SYSC_TYPE1_MIDLEMODE_MASK (0x3 << SYSC_TYPE1_MIDLEMODE_SHIFT)
52#define SYSC_TYPE1_CLOCKACTIVITY_SHIFT 8
53#define SYSC_TYPE1_CLOCKACTIVITY_MASK (0x3 << SYSC_TYPE1_CLOCKACTIVITY_SHIFT)
54#define SYSC_TYPE1_SIDLEMODE_SHIFT 3
55#define SYSC_TYPE1_SIDLEMODE_MASK (0x3 << SYSC_TYPE1_SIDLEMODE_SHIFT)
56#define SYSC_TYPE1_ENAWAKEUP_SHIFT 2
57#define SYSC_TYPE1_ENAWAKEUP_MASK (1 << SYSC_TYPE1_ENAWAKEUP_SHIFT)
58#define SYSC_TYPE1_SOFTRESET_SHIFT 1
59#define SYSC_TYPE1_SOFTRESET_MASK (1 << SYSC_TYPE1_SOFTRESET_SHIFT)
60#define SYSC_TYPE1_AUTOIDLE_SHIFT 0
61#define SYSC_TYPE1_AUTOIDLE_MASK (1 << SYSC_TYPE1_AUTOIDLE_SHIFT)
62
63/*
64 * OCP SYSCONFIG bit shifts/masks TYPE2. These are for IPs compliant
65 * with the new PRCM protocol defined for new OMAP4 IPs.
66 */
67#define SYSC_TYPE2_SOFTRESET_SHIFT 0
68#define SYSC_TYPE2_SOFTRESET_MASK (1 << SYSC_TYPE2_SOFTRESET_SHIFT)
69#define SYSC_TYPE2_SIDLEMODE_SHIFT 2
70#define SYSC_TYPE2_SIDLEMODE_MASK (0x3 << SYSC_TYPE2_SIDLEMODE_SHIFT)
71#define SYSC_TYPE2_MIDLEMODE_SHIFT 4
72#define SYSC_TYPE2_MIDLEMODE_MASK (0x3 << SYSC_TYPE2_MIDLEMODE_SHIFT)
73#define SYSC_TYPE2_DMADISABLE_SHIFT 16
74#define SYSC_TYPE2_DMADISABLE_MASK (0x1 << SYSC_TYPE2_DMADISABLE_SHIFT)
75
76/*
77 * OCP SYSCONFIG bit shifts/masks TYPE3.
78 * This is applicable for some IPs present in AM33XX
79 */
80#define SYSC_TYPE3_SIDLEMODE_SHIFT 0
81#define SYSC_TYPE3_SIDLEMODE_MASK (0x3 << SYSC_TYPE3_SIDLEMODE_SHIFT)
82#define SYSC_TYPE3_MIDLEMODE_SHIFT 2
83#define SYSC_TYPE3_MIDLEMODE_MASK (0x3 << SYSC_TYPE3_MIDLEMODE_SHIFT)
84
85/* OCP SYSSTATUS bit shifts/masks */
86#define SYSS_RESETDONE_SHIFT 0
87#define SYSS_RESETDONE_MASK (1 << SYSS_RESETDONE_SHIFT)
88
89/* Master standby/slave idle mode flags */
90#define HWMOD_IDLEMODE_FORCE (1 << 0)
91#define HWMOD_IDLEMODE_NO (1 << 1)
92#define HWMOD_IDLEMODE_SMART (1 << 2)
93#define HWMOD_IDLEMODE_SMART_WKUP (1 << 3)
94
95/* modulemode control type (SW or HW) */
96#define MODULEMODE_HWCTRL 1
97#define MODULEMODE_SWCTRL 2
98
99
100/**
101 * struct omap_hwmod_mux_info - hwmod specific mux configuration
102 * @pads: array of omap_device_pad entries
103 * @nr_pads: number of omap_device_pad entries
104 *
105 * Note that this is currently built during init as needed.
106 */
107struct omap_hwmod_mux_info {
108 int nr_pads;
109 struct omap_device_pad *pads;
110 int nr_pads_dynamic;
111 struct omap_device_pad **pads_dynamic;
112 int *irqs;
113 bool enabled;
114};
115
116/**
117 * struct omap_hwmod_irq_info - MPU IRQs used by the hwmod
118 * @name: name of the IRQ channel (module local name)
119 * @irq: IRQ channel ID (should be non-negative except -1 = terminator)
120 *
121 * @name should be something short, e.g., "tx" or "rx". It is for use
122 * by platform_get_resource_byname(). It is defined locally to the
123 * hwmod.
124 */
125struct omap_hwmod_irq_info {
126 const char *name;
127 s16 irq;
128};
129
130/**
131 * struct omap_hwmod_dma_info - DMA channels used by the hwmod
132 * @name: name of the DMA channel (module local name)
133 * @dma_req: DMA request ID (should be non-negative except -1 = terminator)
134 *
135 * @name should be something short, e.g., "tx" or "rx". It is for use
136 * by platform_get_resource_byname(). It is defined locally to the
137 * hwmod.
138 */
139struct omap_hwmod_dma_info {
140 const char *name;
141 s16 dma_req;
142};
143
144/**
145 * struct omap_hwmod_rst_info - IPs reset lines use by hwmod
146 * @name: name of the reset line (module local name)
147 * @rst_shift: Offset of the reset bit
148 * @st_shift: Offset of the reset status bit (OMAP2/3 only)
149 *
150 * @name should be something short, e.g., "cpu0" or "rst". It is defined
151 * locally to the hwmod.
152 */
153struct omap_hwmod_rst_info {
154 const char *name;
155 u8 rst_shift;
156 u8 st_shift;
157};
158
159/**
160 * struct omap_hwmod_opt_clk - optional clocks used by this hwmod
161 * @role: "sys", "32k", "tv", etc -- for use in clk_get()
162 * @clk: opt clock: OMAP clock name
163 * @_clk: pointer to the struct clk (filled in at runtime)
164 *
165 * The module's interface clock and main functional clock should not
166 * be added as optional clocks.
167 */
168struct omap_hwmod_opt_clk {
169 const char *role;
170 const char *clk;
171 struct clk *_clk;
172};
173
174
175/* omap_hwmod_omap2_firewall.flags bits */
176#define OMAP_FIREWALL_L3 (1 << 0)
177#define OMAP_FIREWALL_L4 (1 << 1)
178
179/**
180 * struct omap_hwmod_omap2_firewall - OMAP2/3 device firewall data
181 * @l3_perm_bit: bit shift for L3_PM_*_PERMISSION_*
182 * @l4_fw_region: L4 firewall region ID
183 * @l4_prot_group: L4 protection group ID
184 * @flags: (see omap_hwmod_omap2_firewall.flags macros above)
185 */
186struct omap_hwmod_omap2_firewall {
187 u8 l3_perm_bit;
188 u8 l4_fw_region;
189 u8 l4_prot_group;
190 u8 flags;
191};
192
193
194/*
195 * omap_hwmod_addr_space.flags bits
196 *
197 * ADDR_MAP_ON_INIT: Map this address space during omap_hwmod init.
198 * ADDR_TYPE_RT: Address space contains module register target data.
199 */
200#define ADDR_MAP_ON_INIT (1 << 0) /* XXX does not belong */
201#define ADDR_TYPE_RT (1 << 1)
202
203/**
204 * struct omap_hwmod_addr_space - address space handled by the hwmod
205 * @name: name of the address space
206 * @pa_start: starting physical address
207 * @pa_end: ending physical address
208 * @flags: (see omap_hwmod_addr_space.flags macros above)
209 *
210 * Address space doesn't necessarily follow physical interconnect
211 * structure. GPMC is one example.
212 */
213struct omap_hwmod_addr_space {
214 const char *name;
215 u32 pa_start;
216 u32 pa_end;
217 u8 flags;
218};
219
220
221/*
222 * omap_hwmod_ocp_if.user bits: these indicate the initiators that use this
223 * interface to interact with the hwmod. Used to add sleep dependencies
224 * when the module is enabled or disabled.
225 */
226#define OCP_USER_MPU (1 << 0)
227#define OCP_USER_SDMA (1 << 1)
228#define OCP_USER_DSP (1 << 2)
229#define OCP_USER_IVA (1 << 3)
230
231/* omap_hwmod_ocp_if.flags bits */
232#define OCPIF_SWSUP_IDLE (1 << 0)
233#define OCPIF_CAN_BURST (1 << 1)
234
235/* omap_hwmod_ocp_if._int_flags possibilities */
236#define _OCPIF_INT_FLAGS_REGISTERED (1 << 0)
237
238
239/**
240 * struct omap_hwmod_ocp_if - OCP interface data
241 * @master: struct omap_hwmod that initiates OCP transactions on this link
242 * @slave: struct omap_hwmod that responds to OCP transactions on this link
243 * @addr: address space associated with this link
244 * @clk: interface clock: OMAP clock name
245 * @_clk: pointer to the interface struct clk (filled in at runtime)
246 * @fw: interface firewall data
247 * @width: OCP data width
248 * @user: initiators using this interface (see OCP_USER_* macros above)
249 * @flags: OCP interface flags (see OCPIF_* macros above)
250 * @_int_flags: internal flags (see _OCPIF_INT_FLAGS* macros above)
251 *
252 * It may also be useful to add a tag_cnt field for OCP2.x devices.
253 *
254 * Parameter names beginning with an underscore are managed internally by
255 * the omap_hwmod code and should not be set during initialization.
256 */
257struct omap_hwmod_ocp_if {
258 struct omap_hwmod *master;
259 struct omap_hwmod *slave;
260 struct omap_hwmod_addr_space *addr;
261 const char *clk;
262 struct clk *_clk;
263 union {
264 struct omap_hwmod_omap2_firewall omap2;
265 } fw;
266 u8 width;
267 u8 user;
268 u8 flags;
269 u8 _int_flags;
270};
271
272
273/* Macros for use in struct omap_hwmod_sysconfig */
274
275/* Flags for use in omap_hwmod_sysconfig.idlemodes */
276#define MASTER_STANDBY_SHIFT 4
277#define SLAVE_IDLE_SHIFT 0
278#define SIDLE_FORCE (HWMOD_IDLEMODE_FORCE << SLAVE_IDLE_SHIFT)
279#define SIDLE_NO (HWMOD_IDLEMODE_NO << SLAVE_IDLE_SHIFT)
280#define SIDLE_SMART (HWMOD_IDLEMODE_SMART << SLAVE_IDLE_SHIFT)
281#define SIDLE_SMART_WKUP (HWMOD_IDLEMODE_SMART_WKUP << SLAVE_IDLE_SHIFT)
282#define MSTANDBY_FORCE (HWMOD_IDLEMODE_FORCE << MASTER_STANDBY_SHIFT)
283#define MSTANDBY_NO (HWMOD_IDLEMODE_NO << MASTER_STANDBY_SHIFT)
284#define MSTANDBY_SMART (HWMOD_IDLEMODE_SMART << MASTER_STANDBY_SHIFT)
285#define MSTANDBY_SMART_WKUP (HWMOD_IDLEMODE_SMART_WKUP << MASTER_STANDBY_SHIFT)
286
287/* omap_hwmod_sysconfig.sysc_flags capability flags */
288#define SYSC_HAS_AUTOIDLE (1 << 0)
289#define SYSC_HAS_SOFTRESET (1 << 1)
290#define SYSC_HAS_ENAWAKEUP (1 << 2)
291#define SYSC_HAS_EMUFREE (1 << 3)
292#define SYSC_HAS_CLOCKACTIVITY (1 << 4)
293#define SYSC_HAS_SIDLEMODE (1 << 5)
294#define SYSC_HAS_MIDLEMODE (1 << 6)
295#define SYSS_HAS_RESET_STATUS (1 << 7)
296#define SYSC_NO_CACHE (1 << 8) /* XXX SW flag, belongs elsewhere */
297#define SYSC_HAS_RESET_STATUS (1 << 9)
298#define SYSC_HAS_DMADISABLE (1 << 10)
299
300/* omap_hwmod_sysconfig.clockact flags */
301#define CLOCKACT_TEST_BOTH 0x0
302#define CLOCKACT_TEST_MAIN 0x1
303#define CLOCKACT_TEST_ICLK 0x2
304#define CLOCKACT_TEST_NONE 0x3
305
306/**
307 * struct omap_hwmod_sysc_fields - hwmod OCP_SYSCONFIG register field offsets.
308 * @midle_shift: Offset of the midle bit
309 * @clkact_shift: Offset of the clockactivity bit
310 * @sidle_shift: Offset of the sidle bit
311 * @enwkup_shift: Offset of the enawakeup bit
312 * @srst_shift: Offset of the softreset bit
313 * @autoidle_shift: Offset of the autoidle bit
314 * @dmadisable_shift: Offset of the dmadisable bit
315 */
316struct omap_hwmod_sysc_fields {
317 u8 midle_shift;
318 u8 clkact_shift;
319 u8 sidle_shift;
320 u8 enwkup_shift;
321 u8 srst_shift;
322 u8 autoidle_shift;
323 u8 dmadisable_shift;
324};
325
326/**
327 * struct omap_hwmod_class_sysconfig - hwmod class OCP_SYS* data
328 * @rev_offs: IP block revision register offset (from module base addr)
329 * @sysc_offs: OCP_SYSCONFIG register offset (from module base addr)
330 * @syss_offs: OCP_SYSSTATUS register offset (from module base addr)
331 * @srst_udelay: Delay needed after doing a softreset in usecs
332 * @idlemodes: One or more of {SIDLE,MSTANDBY}_{OFF,FORCE,SMART}
333 * @sysc_flags: SYS{C,S}_HAS* flags indicating SYSCONFIG bits supported
334 * @clockact: the default value of the module CLOCKACTIVITY bits
335 *
336 * @clockact describes to the module which clocks are likely to be
337 * disabled when the PRCM issues its idle request to the module. Some
338 * modules have separate clockdomains for the interface clock and main
339 * functional clock, and can check whether they should acknowledge the
340 * idle request based on the internal module functionality that has
341 * been associated with the clocks marked in @clockact. This field is
342 * only used if HWMOD_SET_DEFAULT_CLOCKACT is set (see below)
343 *
344 * @sysc_fields: structure containing the offset positions of various bits in
345 * SYSCONFIG register. This can be populated using omap_hwmod_sysc_type1 or
346 * omap_hwmod_sysc_type2 defined in omap_hwmod_common_data.c depending on
347 * whether the device ip is compliant with the original PRCM protocol
348 * defined for OMAP2420 or the new PRCM protocol for new OMAP4 IPs.
349 * If the device follows a different scheme for the sysconfig register ,
350 * then this field has to be populated with the correct offset structure.
351 */
352struct omap_hwmod_class_sysconfig {
353 u32 rev_offs;
354 u32 sysc_offs;
355 u32 syss_offs;
356 u16 sysc_flags;
357 struct omap_hwmod_sysc_fields *sysc_fields;
358 u8 srst_udelay;
359 u8 idlemodes;
360 u8 clockact;
361};
362
363/**
364 * struct omap_hwmod_omap2_prcm - OMAP2/3-specific PRCM data
365 * @module_offs: PRCM submodule offset from the start of the PRM/CM
366 * @prcm_reg_id: PRCM register ID (e.g., 3 for CM_AUTOIDLE3)
367 * @module_bit: register bit shift for AUTOIDLE, WKST, WKEN, GRPSEL regs
368 * @idlest_reg_id: IDLEST register ID (e.g., 3 for CM_IDLEST3)
369 * @idlest_idle_bit: register bit shift for CM_IDLEST slave idle bit
370 * @idlest_stdby_bit: register bit shift for CM_IDLEST master standby bit
371 *
372 * @prcm_reg_id and @module_bit are specific to the AUTOIDLE, WKST,
373 * WKEN, GRPSEL registers. In an ideal world, no extra information
374 * would be needed for IDLEST information, but alas, there are some
375 * exceptions, so @idlest_reg_id, @idlest_idle_bit, @idlest_stdby_bit
376 * are needed for the IDLEST registers (c.f. 2430 I2CHS, 3430 USBHOST)
377 */
378struct omap_hwmod_omap2_prcm {
379 s16 module_offs;
380 u8 prcm_reg_id;
381 u8 module_bit;
382 u8 idlest_reg_id;
383 u8 idlest_idle_bit;
384 u8 idlest_stdby_bit;
385};
386
387/*
388 * Possible values for struct omap_hwmod_omap4_prcm.flags
389 *
390 * HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT: Some IP blocks don't have a PRCM
391 * module-level context loss register associated with them; this
392 * flag bit should be set in those cases
393 */
394#define HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT (1 << 0)
395
396/**
397 * struct omap_hwmod_omap4_prcm - OMAP4-specific PRCM data
398 * @clkctrl_reg: PRCM address of the clock control register
399 * @rstctrl_reg: address of the XXX_RSTCTRL register located in the PRM
400 * @lostcontext_mask: bitmask for selecting bits from RM_*_CONTEXT register
401 * @rstst_reg: (AM33XX only) address of the XXX_RSTST register in the PRM
402 * @submodule_wkdep_bit: bit shift of the WKDEP range
403 * @flags: PRCM register capabilities for this IP block
404 *
405 * If @lostcontext_mask is not defined, context loss check code uses
406 * whole register without masking. @lostcontext_mask should only be
407 * defined in cases where @context_offs register is shared by two or
408 * more hwmods.
409 */
410struct omap_hwmod_omap4_prcm {
411 u16 clkctrl_offs;
412 u16 rstctrl_offs;
413 u16 rstst_offs;
414 u16 context_offs;
415 u32 lostcontext_mask;
416 u8 submodule_wkdep_bit;
417 u8 modulemode;
418 u8 flags;
419};
420
421
422/*
423 * omap_hwmod.flags definitions
424 *
425 * HWMOD_SWSUP_SIDLE: omap_hwmod code should manually bring module in and out
426 * of idle, rather than relying on module smart-idle
427 * HWMOD_SWSUP_MSTDBY: omap_hwmod code should manually bring module in and out
428 * of standby, rather than relying on module smart-standby
429 * HWMOD_INIT_NO_RESET: don't reset this module at boot - important for
430 * SDRAM controller, etc. XXX probably belongs outside the main hwmod file
431 * XXX Should be HWMOD_SETUP_NO_RESET
432 * HWMOD_INIT_NO_IDLE: don't idle this module at boot - important for SDRAM
433 * controller, etc. XXX probably belongs outside the main hwmod file
434 * XXX Should be HWMOD_SETUP_NO_IDLE
435 * HWMOD_NO_OCP_AUTOIDLE: disable module autoidle (OCP_SYSCONFIG.AUTOIDLE)
436 * when module is enabled, rather than the default, which is to
437 * enable autoidle
438 * HWMOD_SET_DEFAULT_CLOCKACT: program CLOCKACTIVITY bits at startup
439 * HWMOD_NO_IDLEST: this module does not have idle status - this is the case
440 * only for few initiator modules on OMAP2 & 3.
441 * HWMOD_CONTROL_OPT_CLKS_IN_RESET: Enable all optional clocks during reset.
442 * This is needed for devices like DSS that require optional clocks enabled
443 * in order to complete the reset. Optional clocks will be disabled
444 * again after the reset.
445 * HWMOD_16BIT_REG: Module has 16bit registers
446 */
447#define HWMOD_SWSUP_SIDLE (1 << 0)
448#define HWMOD_SWSUP_MSTANDBY (1 << 1)
449#define HWMOD_INIT_NO_RESET (1 << 2)
450#define HWMOD_INIT_NO_IDLE (1 << 3)
451#define HWMOD_NO_OCP_AUTOIDLE (1 << 4)
452#define HWMOD_SET_DEFAULT_CLOCKACT (1 << 5)
453#define HWMOD_NO_IDLEST (1 << 6)
454#define HWMOD_CONTROL_OPT_CLKS_IN_RESET (1 << 7)
455#define HWMOD_16BIT_REG (1 << 8)
456
457/*
458 * omap_hwmod._int_flags definitions
459 * These are for internal use only and are managed by the omap_hwmod code.
460 *
461 * _HWMOD_NO_MPU_PORT: no path exists for the MPU to write to this module
462 * _HWMOD_WAKEUP_ENABLED: set when the omap_hwmod code has enabled ENAWAKEUP
463 * _HWMOD_SYSCONFIG_LOADED: set when the OCP_SYSCONFIG value has been cached
464 * _HWMOD_SKIP_ENABLE: set if hwmod enabled during init (HWMOD_INIT_NO_IDLE) -
465 * causes the first call to _enable() to only update the pinmux
466 */
467#define _HWMOD_NO_MPU_PORT (1 << 0)
468#define _HWMOD_WAKEUP_ENABLED (1 << 1)
469#define _HWMOD_SYSCONFIG_LOADED (1 << 2)
470#define _HWMOD_SKIP_ENABLE (1 << 3)
471
472/*
473 * omap_hwmod._state definitions
474 *
475 * INITIALIZED: reset (optionally), initialized, enabled, disabled
476 * (optionally)
477 *
478 *
479 */
480#define _HWMOD_STATE_UNKNOWN 0
481#define _HWMOD_STATE_REGISTERED 1
482#define _HWMOD_STATE_CLKS_INITED 2
483#define _HWMOD_STATE_INITIALIZED 3
484#define _HWMOD_STATE_ENABLED 4
485#define _HWMOD_STATE_IDLE 5
486#define _HWMOD_STATE_DISABLED 6
487
488/**
489 * struct omap_hwmod_class - the type of an IP block
490 * @name: name of the hwmod_class
491 * @sysc: device SYSCONFIG/SYSSTATUS register data
492 * @rev: revision of the IP class
493 * @pre_shutdown: ptr to fn to be executed immediately prior to device shutdown
494 * @reset: ptr to fn to be executed in place of the standard hwmod reset fn
495 *
496 * Represent the class of a OMAP hardware "modules" (e.g. timer,
497 * smartreflex, gpio, uart...)
498 *
499 * @pre_shutdown is a function that will be run immediately before
500 * hwmod clocks are disabled, etc. It is intended for use for hwmods
501 * like the MPU watchdog, which cannot be disabled with the standard
502 * omap_hwmod_shutdown(). The function should return 0 upon success,
503 * or some negative error upon failure. Returning an error will cause
504 * omap_hwmod_shutdown() to abort the device shutdown and return an
505 * error.
506 *
507 * If @reset is defined, then the function it points to will be
508 * executed in place of the standard hwmod _reset() code in
509 * mach-omap2/omap_hwmod.c. This is needed for IP blocks which have
510 * unusual reset sequences - usually processor IP blocks like the IVA.
511 */
512struct omap_hwmod_class {
513 const char *name;
514 struct omap_hwmod_class_sysconfig *sysc;
515 u32 rev;
516 int (*pre_shutdown)(struct omap_hwmod *oh);
517 int (*reset)(struct omap_hwmod *oh);
518};
519
520/**
521 * struct omap_hwmod_link - internal structure linking hwmods with ocp_ifs
522 * @ocp_if: OCP interface structure record pointer
523 * @node: list_head pointing to next struct omap_hwmod_link in a list
524 */
525struct omap_hwmod_link {
526 struct omap_hwmod_ocp_if *ocp_if;
527 struct list_head node;
528};
529
530/**
531 * struct omap_hwmod - integration data for OMAP hardware "modules" (IP blocks)
532 * @name: name of the hwmod
533 * @class: struct omap_hwmod_class * to the class of this hwmod
534 * @od: struct omap_device currently associated with this hwmod (internal use)
535 * @mpu_irqs: ptr to an array of MPU IRQs
536 * @sdma_reqs: ptr to an array of System DMA request IDs
537 * @prcm: PRCM data pertaining to this hwmod
538 * @main_clk: main clock: OMAP clock name
539 * @_clk: pointer to the main struct clk (filled in at runtime)
540 * @opt_clks: other device clocks that drivers can request (0..*)
541 * @voltdm: pointer to voltage domain (filled in at runtime)
542 * @dev_attr: arbitrary device attributes that can be passed to the driver
543 * @_sysc_cache: internal-use hwmod flags
544 * @_mpu_rt_va: cached register target start address (internal use)
545 * @_mpu_port: cached MPU register target slave (internal use)
546 * @opt_clks_cnt: number of @opt_clks
547 * @master_cnt: number of @master entries
548 * @slaves_cnt: number of @slave entries
549 * @response_lat: device OCP response latency (in interface clock cycles)
550 * @_int_flags: internal-use hwmod flags
551 * @_state: internal-use hwmod state
552 * @_postsetup_state: internal-use state to leave the hwmod in after _setup()
553 * @flags: hwmod flags (documented below)
554 * @_lock: spinlock serializing operations on this hwmod
555 * @node: list node for hwmod list (internal use)
556 *
557 * @main_clk refers to this module's "main clock," which for our
558 * purposes is defined as "the functional clock needed for register
559 * accesses to complete." Modules may not have a main clock if the
560 * interface clock also serves as a main clock.
561 *
562 * Parameter names beginning with an underscore are managed internally by
563 * the omap_hwmod code and should not be set during initialization.
564 *
565 * @masters and @slaves are now deprecated.
566 */
567struct omap_hwmod {
568 const char *name;
569 struct omap_hwmod_class *class;
570 struct omap_device *od;
571 struct omap_hwmod_mux_info *mux;
572 struct omap_hwmod_irq_info *mpu_irqs;
573 struct omap_hwmod_dma_info *sdma_reqs;
574 struct omap_hwmod_rst_info *rst_lines;
575 union {
576 struct omap_hwmod_omap2_prcm omap2;
577 struct omap_hwmod_omap4_prcm omap4;
578 } prcm;
579 const char *main_clk;
580 struct clk *_clk;
581 struct omap_hwmod_opt_clk *opt_clks;
582 char *clkdm_name;
583 struct clockdomain *clkdm;
584 struct list_head master_ports; /* connect to *_IA */
585 struct list_head slave_ports; /* connect to *_TA */
586 void *dev_attr;
587 u32 _sysc_cache;
588 void __iomem *_mpu_rt_va;
589 spinlock_t _lock;
590 struct list_head node;
591 struct omap_hwmod_ocp_if *_mpu_port;
592 u16 flags;
593 u8 response_lat;
594 u8 rst_lines_cnt;
595 u8 opt_clks_cnt;
596 u8 masters_cnt;
597 u8 slaves_cnt;
598 u8 hwmods_cnt;
599 u8 _int_flags;
600 u8 _state;
601 u8 _postsetup_state;
602};
603
604struct omap_hwmod *omap_hwmod_lookup(const char *name);
605int omap_hwmod_for_each(int (*fn)(struct omap_hwmod *oh, void *data),
606 void *data);
607
608int __init omap_hwmod_setup_one(const char *name);
609
610int omap_hwmod_enable(struct omap_hwmod *oh);
611int omap_hwmod_idle(struct omap_hwmod *oh);
612int omap_hwmod_shutdown(struct omap_hwmod *oh);
613
614int omap_hwmod_assert_hardreset(struct omap_hwmod *oh, const char *name);
615int omap_hwmod_deassert_hardreset(struct omap_hwmod *oh, const char *name);
616int omap_hwmod_read_hardreset(struct omap_hwmod *oh, const char *name);
617
618int omap_hwmod_enable_clocks(struct omap_hwmod *oh);
619int omap_hwmod_disable_clocks(struct omap_hwmod *oh);
620
621int omap_hwmod_set_slave_idlemode(struct omap_hwmod *oh, u8 idlemode);
622int omap_hwmod_set_ocp_autoidle(struct omap_hwmod *oh, u8 autoidle);
623
624int omap_hwmod_reset(struct omap_hwmod *oh);
625void omap_hwmod_ocp_barrier(struct omap_hwmod *oh);
626
627void omap_hwmod_write(u32 v, struct omap_hwmod *oh, u16 reg_offs);
628u32 omap_hwmod_read(struct omap_hwmod *oh, u16 reg_offs);
629int omap_hwmod_softreset(struct omap_hwmod *oh);
630
631int omap_hwmod_count_resources(struct omap_hwmod *oh);
632int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res);
633int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource *res);
634int omap_hwmod_get_resource_byname(struct omap_hwmod *oh, unsigned int type,
635 const char *name, struct resource *res);
636
637struct powerdomain *omap_hwmod_get_pwrdm(struct omap_hwmod *oh);
638void __iomem *omap_hwmod_get_mpu_rt_va(struct omap_hwmod *oh);
639
640int omap_hwmod_add_initiator_dep(struct omap_hwmod *oh,
641 struct omap_hwmod *init_oh);
642int omap_hwmod_del_initiator_dep(struct omap_hwmod *oh,
643 struct omap_hwmod *init_oh);
644
645int omap_hwmod_enable_wakeup(struct omap_hwmod *oh);
646int omap_hwmod_disable_wakeup(struct omap_hwmod *oh);
647
648int omap_hwmod_for_each_by_class(const char *classname,
649 int (*fn)(struct omap_hwmod *oh,
650 void *user),
651 void *user);
652
653int omap_hwmod_set_postsetup_state(struct omap_hwmod *oh, u8 state);
654int omap_hwmod_get_context_loss_count(struct omap_hwmod *oh);
655
656int omap_hwmod_no_setup_reset(struct omap_hwmod *oh);
657
658int omap_hwmod_pad_route_irq(struct omap_hwmod *oh, int pad_idx, int irq_idx);
659
660extern void __init omap_hwmod_init(void);
661
662const char *omap_hwmod_get_main_clk(struct omap_hwmod *oh);
663
664/*
665 * Chip variant-specific hwmod init routines - XXX should be converted
666 * to use initcalls once the initial boot ordering is straightened out
667 */
668extern int omap2420_hwmod_init(void);
669extern int omap2430_hwmod_init(void);
670extern int omap3xxx_hwmod_init(void);
671extern int omap44xx_hwmod_init(void);
672extern int am33xx_hwmod_init(void);
673
674extern int __init omap_hwmod_register_links(struct omap_hwmod_ocp_if **ois);
675
676#endif
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
index 95a0053b6ae1..3efed3d633d1 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
@@ -16,9 +16,10 @@
16#include <linux/i2c-omap.h> 16#include <linux/i2c-omap.h>
17#include <linux/platform_data/spi-omap2-mcspi.h> 17#include <linux/platform_data/spi-omap2-mcspi.h>
18 18
19#include <plat/omap_hwmod.h>
20#include <plat-omap/dma-omap.h> 19#include <plat-omap/dma-omap.h>
21#include <plat/dmtimer.h> 20#include <plat/dmtimer.h>
21
22#include "omap_hwmod.h"
22#include "l3_2xxx.h" 23#include "l3_2xxx.h"
23#include "l4_2xxx.h" 24#include "l4_2xxx.h"
24 25
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
index a6c24aea28b6..dc768c50e523 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
@@ -17,9 +17,10 @@
17#include <linux/platform_data/asoc-ti-mcbsp.h> 17#include <linux/platform_data/asoc-ti-mcbsp.h>
18#include <linux/platform_data/spi-omap2-mcspi.h> 18#include <linux/platform_data/spi-omap2-mcspi.h>
19 19
20#include <plat/omap_hwmod.h>
21#include <plat-omap/dma-omap.h> 20#include <plat-omap/dma-omap.h>
22#include <plat/dmtimer.h> 21#include <plat/dmtimer.h>
22
23#include "omap_hwmod.h"
23#include "mmc.h" 24#include "mmc.h"
24#include "l3_2xxx.h" 25#include "l3_2xxx.h"
25 26
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_interconnect_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_interconnect_data.c
index cbb4ef6544ad..74ae76767510 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_interconnect_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_interconnect_data.c
@@ -13,9 +13,10 @@
13 */ 13 */
14#include <asm/sizes.h> 14#include <asm/sizes.h>
15 15
16#include <plat/omap_hwmod.h>
17#include <plat/serial.h> 16#include <plat/serial.h>
18 17
18#include "omap_hwmod.h"
19
19#include "omap_hwmod_common_data.h" 20#include "omap_hwmod_common_data.h"
20 21
21struct omap_hwmod_addr_space omap2430_mmc1_addr_space[] = { 22struct omap_hwmod_addr_space omap2430_mmc1_addr_space[] = {
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c
index bfe64ee20606..57fc2f95584d 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c
@@ -9,10 +9,13 @@
9 * it under the terms of the GNU General Public License version 2 as 9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation. 10 * published by the Free Software Foundation.
11 */ 11 */
12#include <plat/omap_hwmod.h> 12
13#include <plat/serial.h> 13#include <plat/serial.h>
14#include <plat-omap/dma-omap.h> 14#include <plat-omap/dma-omap.h>
15
15#include "../plat-omap/common.h" 16#include "../plat-omap/common.h"
17
18#include "omap_hwmod.h"
16#include "hdq1w.h" 19#include "hdq1w.h"
17 20
18#include "omap_hwmod_common_data.h" 21#include "omap_hwmod_common_data.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
index 1a1287d62648..dd3809c8f409 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
@@ -13,8 +13,9 @@
13 */ 13 */
14#include <asm/sizes.h> 14#include <asm/sizes.h>
15 15
16#include <plat/omap_hwmod.h>
17#include <plat/serial.h> 16#include <plat/serial.h>
17
18#include "omap_hwmod.h"
18#include "l3_2xxx.h" 19#include "l3_2xxx.h"
19#include "l4_2xxx.h" 20#include "l4_2xxx.h"
20 21
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
index b9024868774c..27bdff46fda0 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
@@ -8,13 +8,14 @@
8 * it under the terms of the GNU General Public License version 2 as 8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation. 9 * published by the Free Software Foundation.
10 */ 10 */
11#include <plat/omap_hwmod.h> 11
12#include <plat/serial.h> 12#include <plat/serial.h>
13#include <linux/platform_data/gpio-omap.h> 13#include <linux/platform_data/gpio-omap.h>
14#include <plat-omap/dma-omap.h> 14#include <plat-omap/dma-omap.h>
15#include <plat/dmtimer.h> 15#include <plat/dmtimer.h>
16#include <linux/platform_data/spi-omap2-mcspi.h> 16#include <linux/platform_data/spi-omap2-mcspi.h>
17 17
18#include "omap_hwmod.h"
18#include "omap_hwmod_common_data.h" 19#include "omap_hwmod_common_data.h"
19#include "cm-regbits-24xx.h" 20#include "cm-regbits-24xx.h"
20#include "prm-regbits-24xx.h" 21#include "prm-regbits-24xx.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
index cb7c393c08de..60ed43531079 100644
--- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
@@ -16,7 +16,7 @@
16 16
17#include <linux/i2c-omap.h> 17#include <linux/i2c-omap.h>
18 18
19#include <plat/omap_hwmod.h> 19#include "omap_hwmod.h"
20#include <plat/cpu.h> 20#include <plat/cpu.h>
21#include <linux/platform_data/gpio-omap.h> 21#include <linux/platform_data/gpio-omap.h>
22#include <linux/platform_data/spi-omap2-mcspi.h> 22#include <linux/platform_data/spi-omap2-mcspi.h>
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
index 14451217dac2..d5d52a776278 100644
--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
@@ -19,9 +19,9 @@
19#include <linux/power/smartreflex.h> 19#include <linux/power/smartreflex.h>
20#include <linux/platform_data/gpio-omap.h> 20#include <linux/platform_data/gpio-omap.h>
21 21
22#include <plat/omap_hwmod.h>
23#include <plat-omap/dma-omap.h> 22#include <plat-omap/dma-omap.h>
24#include <plat/serial.h> 23#include <plat/serial.h>
24
25#include "l3_3xxx.h" 25#include "l3_3xxx.h"
26#include "l4_3xxx.h" 26#include "l4_3xxx.h"
27#include <linux/platform_data/asoc-ti-mcbsp.h> 27#include <linux/platform_data/asoc-ti-mcbsp.h>
@@ -32,6 +32,7 @@
32#include "am35xx.h" 32#include "am35xx.h"
33 33
34#include "soc.h" 34#include "soc.h"
35#include "omap_hwmod.h"
35#include "omap_hwmod_common_data.h" 36#include "omap_hwmod_common_data.h"
36#include "prm-regbits-34xx.h" 37#include "prm-regbits-34xx.h"
37#include "cm-regbits-34xx.h" 38#include "cm-regbits-34xx.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index 0cee55135e29..5b9be734709c 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -23,8 +23,8 @@
23#include <linux/power/smartreflex.h> 23#include <linux/power/smartreflex.h>
24#include <linux/i2c-omap.h> 24#include <linux/i2c-omap.h>
25 25
26#include <plat/omap_hwmod.h>
27#include <plat-omap/dma-omap.h> 26#include <plat-omap/dma-omap.h>
27
28#include <linux/platform_data/spi-omap2-mcspi.h> 28#include <linux/platform_data/spi-omap2-mcspi.h>
29#include <linux/platform_data/asoc-ti-mcbsp.h> 29#include <linux/platform_data/asoc-ti-mcbsp.h>
30#include <plat/dmtimer.h> 30#include <plat/dmtimer.h>
@@ -32,6 +32,7 @@
32 32
33#include "../plat-omap/common.h" 33#include "../plat-omap/common.h"
34 34
35#include "omap_hwmod.h"
35#include "omap_hwmod_common_data.h" 36#include "omap_hwmod_common_data.h"
36#include "cm1_44xx.h" 37#include "cm1_44xx.h"
37#include "cm2_44xx.h" 38#include "cm2_44xx.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_common_data.c b/arch/arm/mach-omap2/omap_hwmod_common_data.c
index 9f1ccdc8cc8c..79d623b83e49 100644
--- a/arch/arm/mach-omap2/omap_hwmod_common_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_common_data.c
@@ -16,7 +16,7 @@
16 * data and their integration with other OMAP modules and Linux. 16 * data and their integration with other OMAP modules and Linux.
17 */ 17 */
18 18
19#include <plat/omap_hwmod.h> 19#include "omap_hwmod.h"
20 20
21#include "omap_hwmod_common_data.h" 21#include "omap_hwmod_common_data.h"
22 22
diff --git a/arch/arm/mach-omap2/omap_hwmod_common_data.h b/arch/arm/mach-omap2/omap_hwmod_common_data.h
index 2bc8f1705d4a..cfcce299177c 100644
--- a/arch/arm/mach-omap2/omap_hwmod_common_data.h
+++ b/arch/arm/mach-omap2/omap_hwmod_common_data.h
@@ -13,7 +13,7 @@
13#ifndef __ARCH_ARM_MACH_OMAP2_OMAP_HWMOD_COMMON_DATA_H 13#ifndef __ARCH_ARM_MACH_OMAP2_OMAP_HWMOD_COMMON_DATA_H
14#define __ARCH_ARM_MACH_OMAP2_OMAP_HWMOD_COMMON_DATA_H 14#define __ARCH_ARM_MACH_OMAP2_OMAP_HWMOD_COMMON_DATA_H
15 15
16#include <plat/omap_hwmod.h> 16#include "omap_hwmod.h"
17 17
18#include "common.h" 18#include "common.h"
19#include "display.h" 19#include "display.h"
diff --git a/arch/arm/mach-omap2/omap_opp_data.h b/arch/arm/mach-omap2/omap_opp_data.h
index c784c12f98a1..7e437bf6024c 100644
--- a/arch/arm/mach-omap2/omap_opp_data.h
+++ b/arch/arm/mach-omap2/omap_opp_data.h
@@ -19,7 +19,7 @@
19#ifndef __ARCH_ARM_MACH_OMAP2_OMAP_OPP_DATA_H 19#ifndef __ARCH_ARM_MACH_OMAP2_OMAP_OPP_DATA_H
20#define __ARCH_ARM_MACH_OMAP2_OMAP_OPP_DATA_H 20#define __ARCH_ARM_MACH_OMAP2_OMAP_OPP_DATA_H
21 21
22#include <plat/omap_hwmod.h> 22#include "omap_hwmod.h"
23 23
24#include "voltage.h" 24#include "voltage.h"
25 25
diff --git a/arch/arm/mach-omap2/pmu.c b/arch/arm/mach-omap2/pmu.c
index 4b3230fe228a..98c5969acf6d 100644
--- a/arch/arm/mach-omap2/pmu.c
+++ b/arch/arm/mach-omap2/pmu.c
@@ -15,7 +15,7 @@
15 15
16#include <asm/pmu.h> 16#include <asm/pmu.h>
17 17
18#include <plat/omap_hwmod.h> 18#include "omap_hwmod.h"
19#include "omap_device.h" 19#include "omap_device.h"
20 20
21static char *omap2_pmu_oh_names[] = {"mpu"}; 21static char *omap2_pmu_oh_names[] = {"mpu"};
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index 5df6dd96fd5c..a4fb791be2da 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -28,13 +28,13 @@
28#include <linux/console.h> 28#include <linux/console.h>
29 29
30#include <plat/omap-serial.h> 30#include <plat/omap-serial.h>
31#include "common.h"
32#include <plat-omap/dma-omap.h> 31#include <plat-omap/dma-omap.h>
33#include <plat/omap_hwmod.h>
34#include "omap_device.h"
35#include <plat/omap-pm.h> 32#include <plat/omap-pm.h>
36#include <plat/serial.h> 33#include <plat/serial.h>
37 34
35#include "common.h"
36#include "omap_hwmod.h"
37#include "omap_device.h"
38#include "prm2xxx_3xxx.h" 38#include "prm2xxx_3xxx.h"
39#include "pm.h" 39#include "pm.h"
40#include "cm2xxx_3xxx.h" 40#include "cm2xxx_3xxx.h"
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index a2ea2f30f7c9..b11df8230145 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -43,7 +43,7 @@
43#include <asm/sched_clock.h> 43#include <asm/sched_clock.h>
44 44
45#include <asm/arch_timer.h> 45#include <asm/arch_timer.h>
46#include <plat/omap_hwmod.h> 46#include "omap_hwmod.h"
47#include "omap_device.h" 47#include "omap_device.h"
48#include <plat/dmtimer.h> 48#include <plat/dmtimer.h>
49#include <plat/omap-pm.h> 49#include <plat/omap-pm.h>
diff --git a/arch/arm/mach-omap2/wd_timer.c b/arch/arm/mach-omap2/wd_timer.c
index b2f1c67043a2..f6b6c37ac3f4 100644
--- a/arch/arm/mach-omap2/wd_timer.c
+++ b/arch/arm/mach-omap2/wd_timer.c
@@ -11,7 +11,7 @@
11#include <linux/io.h> 11#include <linux/io.h>
12#include <linux/err.h> 12#include <linux/err.h>
13 13
14#include <plat/omap_hwmod.h> 14#include "omap_hwmod.h"
15 15
16#include "wd_timer.h" 16#include "wd_timer.h"
17#include "common.h" 17#include "common.h"
diff --git a/arch/arm/mach-omap2/wd_timer.h b/arch/arm/mach-omap2/wd_timer.h
index f6bbba73b535..a78f81034a9f 100644
--- a/arch/arm/mach-omap2/wd_timer.h
+++ b/arch/arm/mach-omap2/wd_timer.h
@@ -10,7 +10,7 @@
10#ifndef __ARCH_ARM_MACH_OMAP2_WD_TIMER_H 10#ifndef __ARCH_ARM_MACH_OMAP2_WD_TIMER_H
11#define __ARCH_ARM_MACH_OMAP2_WD_TIMER_H 11#define __ARCH_ARM_MACH_OMAP2_WD_TIMER_H
12 12
13#include <plat/omap_hwmod.h> 13#include "omap_hwmod.h"
14 14
15extern int omap2_wd_timer_disable(struct omap_hwmod *oh); 15extern int omap2_wd_timer_disable(struct omap_hwmod *oh);
16extern int omap2_wd_timer_reset(struct omap_hwmod *oh); 16extern int omap2_wd_timer_reset(struct omap_hwmod *oh);