Blame view

arch/arm/mach-omap2/common.h 8.2 KB
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  /*
   * Header for code common to all OMAP2+ machines.
   *
   * This program is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License as published by the
   * Free Software Foundation; either version 2 of the License, or (at your
   * option) any later version.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
   * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   *
   * You should have received a copy of the  GNU General Public License along
   * with this program; if not, write  to the Free Software Foundation, Inc.,
   * 675 Mass Ave, Cambridge, MA 02139, USA.
   */
  
  #ifndef __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H
  #define __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H
b2b9762f7   Santosh Shilimkar   ARM: OMAP4: PM: A...
27
  #ifndef __ASSEMBLER__
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
28

ec2c0825c   Tony Lindgren   ARM: OMAP2+: Remo...
29
  #include <linux/irq.h>
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
30
  #include <linux/delay.h>
3a8761c02   Tony Lindgren   ARM: OMAP: Split ...
31
  #include <linux/i2c.h>
1ee47b0ae   Balaji T K   ARM: OMAP4: hsmmc...
32
  #include <linux/i2c/twl.h>
3a8761c02   Tony Lindgren   ARM: OMAP: Split ...
33
  #include <linux/i2c-omap.h>
7b6d864b4   Robin Holt   reboot: arm: chan...
34
  #include <linux/reboot.h>
eaacabc0d   Felipe Balbi   irqchip: add irq-...
35
  #include <linux/irqchip/irq-omap-intc.h>
dbc041610   Tony Lindgren   ARM: OMAP: Split ...
36

b2b9762f7   Santosh Shilimkar   ARM: OMAP4: PM: A...
37
  #include <asm/proc-fns.h>
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
38

3a8761c02   Tony Lindgren   ARM: OMAP: Split ...
39
  #include "i2c.h"
3d82cbbb3   Tony Lindgren   ARM: OMAP: Split ...
40
  #include "serial.h"
3a8761c02   Tony Lindgren   ARM: OMAP: Split ...
41

54db6eee0   Tony Lindgren   ARM: OMAP2+: Intr...
42
  #include "usb.h"
dbc041610   Tony Lindgren   ARM: OMAP: Split ...
43

ec2c0825c   Tony Lindgren   ARM: OMAP2+: Remo...
44
  #define OMAP_INTC_START		NR_IRQS
7d7e1eba7   Tony Lindgren   ARM: OMAP2+: Prep...
45

bbd707ace   Shawn Guo   ARM: omap2: use m...
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP2)
  int omap2_pm_init(void);
  #else
  static inline int omap2_pm_init(void)
  {
  	return 0;
  }
  #endif
  
  #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP3)
  int omap3_pm_init(void);
  #else
  static inline int omap3_pm_init(void)
  {
  	return 0;
  }
  #endif
6af16a1da   Rajendra Nayak   ARM: DRA7: Add ho...
63
  #if defined(CONFIG_PM) && (defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX))
bbd707ace   Shawn Guo   ARM: omap2: use m...
64
  int omap4_pm_init(void);
de70af494   Nishanth Menon   ARM: OMAP4+: move...
65
  int omap4_pm_init_early(void);
bbd707ace   Shawn Guo   ARM: omap2: use m...
66
67
68
69
70
  #else
  static inline int omap4_pm_init(void)
  {
  	return 0;
  }
de70af494   Nishanth Menon   ARM: OMAP4+: move...
71
72
73
74
75
  
  static inline int omap4_pm_init_early(void)
  {
  	return 0;
  }
bbd707ace   Shawn Guo   ARM: omap2: use m...
76
77
78
79
80
81
82
83
84
85
  #endif
  
  #ifdef CONFIG_OMAP_MUX
  int omap_mux_late_init(void);
  #else
  static inline int omap_mux_late_init(void)
  {
  	return 0;
  }
  #endif
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
86
  extern void omap2_init_common_infrastructure(void);
6bb27d734   Stephen Warren   ARM: delete struc...
87
88
89
  extern void omap2_sync32k_timer_init(void);
  extern void omap3_sync32k_timer_init(void);
  extern void omap3_secure_sync32k_timer_init(void);
00ea4d561   Jon Hunter   ARM: OMAP2+: Simp...
90
  extern void omap3_gptimer_timer_init(void);
6bb27d734   Stephen Warren   ARM: delete struc...
91
  extern void omap4_local_timer_init(void);
2ad501cc1   Arnd Bergmann   ARM: omap2: fix a...
92
  #ifdef CONFIG_CACHE_L2X0
b39b14e62   Sekhar Nori   ARM: l2c: omap2+:...
93
  int omap_l2_cache_init(void);
2ad501cc1   Arnd Bergmann   ARM: omap2: fix a...
94
95
96
97
98
99
  #else
  static inline int omap_l2_cache_init(void)
  {
  	return 0;
  }
  #endif
6bb27d734   Stephen Warren   ARM: delete struc...
100
  extern void omap5_realtime_timer_init(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
101
102
103
104
105
106
107
  
  void omap2420_init_early(void);
  void omap2430_init_early(void);
  void omap3430_init_early(void);
  void omap35xx_init_early(void);
  void omap3630_init_early(void);
  void omap3_init_early(void);	/* Do not use this one */
ce3fc89a4   Vaibhav Hiremath   ARM: OMAP AM33xx:...
108
  void am33xx_init_early(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
109
  void am35xx_init_early(void);
a920360f0   Hemant Pedanekar   ARM: OMAP: TI81XX...
110
  void ti81xx_init_early(void);
08f309892   Afzal Mohammed   ARM: OMAP2+: am33...
111
  void am33xx_init_early(void);
c5107027b   Afzal Mohammed   ARM: OMAP2+: AM43...
112
  void am43xx_init_early(void);
765e7a067   Nishanth Menon   ARM: OMAP2+: add ...
113
  void am43xx_init_late(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
114
  void omap4430_init_early(void);
05e152c76   R Sricharan   ARM: OMAP5: Add m...
115
  void omap5_init_early(void);
bbd707ace   Shawn Guo   ARM: omap2: use m...
116
117
118
119
120
121
122
123
124
  void omap3_init_late(void);	/* Do not use this one */
  void omap4430_init_late(void);
  void omap2420_init_late(void);
  void omap2430_init_late(void);
  void omap3430_init_late(void);
  void omap35xx_init_late(void);
  void omap3630_init_late(void);
  void am35xx_init_late(void);
  void ti81xx_init_late(void);
765e7a067   Nishanth Menon   ARM: OMAP2+: add ...
125
126
  void am33xx_init_late(void);
  void omap5_init_late(void);
bbd707ace   Shawn Guo   ARM: omap2: use m...
127
  int omap2_common_pm_late_init(void);
a3a9384a1   R Sricharan   ARM: DRA7: Reuse ...
128
  void dra7xx_init_early(void);
765e7a067   Nishanth Menon   ARM: OMAP2+: add ...
129
  void dra7xx_init_late(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
130

6770b2114   Ruslan Bilovol   ARM: OMAP2+: Expo...
131
132
133
134
135
136
137
  #ifdef CONFIG_SOC_BUS
  void omap_soc_device_init(void);
  #else
  static inline void omap_soc_device_init(void)
  {
  }
  #endif
2f334a389   Paul Walmsley   ARM: OMAP2+: PRCM...
138
  #if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430)
7b6d864b4   Robin Holt   reboot: arm: chan...
139
  void omap2xxx_restart(enum reboot_mode mode, const char *cmd);
ecc46cfda   Vaibhav Hiremath   ARM: OMAP2+: Remo...
140
  #else
7b6d864b4   Robin Holt   reboot: arm: chan...
141
  static inline void omap2xxx_restart(enum reboot_mode mode, const char *cmd)
2f334a389   Paul Walmsley   ARM: OMAP2+: PRCM...
142
143
  {
  }
ecc46cfda   Vaibhav Hiremath   ARM: OMAP2+: Remo...
144
  #endif
2f334a389   Paul Walmsley   ARM: OMAP2+: PRCM...
145

14e067c1a   Jean-Sebastien A. Beaudry   ARM: OMAP2+: AM33...
146
  #ifdef CONFIG_SOC_AM33XX
7b6d864b4   Robin Holt   reboot: arm: chan...
147
  void am33xx_restart(enum reboot_mode mode, const char *cmd);
14e067c1a   Jean-Sebastien A. Beaudry   ARM: OMAP2+: AM33...
148
  #else
7b6d864b4   Robin Holt   reboot: arm: chan...
149
  static inline void am33xx_restart(enum reboot_mode mode, const char *cmd)
14e067c1a   Jean-Sebastien A. Beaudry   ARM: OMAP2+: AM33...
150
151
152
  {
  }
  #endif
2f334a389   Paul Walmsley   ARM: OMAP2+: PRCM...
153
  #ifdef CONFIG_ARCH_OMAP3
7b6d864b4   Robin Holt   reboot: arm: chan...
154
  void omap3xxx_restart(enum reboot_mode mode, const char *cmd);
2f334a389   Paul Walmsley   ARM: OMAP2+: PRCM...
155
  #else
7b6d864b4   Robin Holt   reboot: arm: chan...
156
  static inline void omap3xxx_restart(enum reboot_mode mode, const char *cmd)
2f334a389   Paul Walmsley   ARM: OMAP2+: PRCM...
157
158
159
  {
  }
  #endif
7abb1a530   Nishanth Menon   ARM: DRA7/AM43XX:...
160
161
  #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \
  	defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM43XX)
7b6d864b4   Robin Holt   reboot: arm: chan...
162
  void omap44xx_restart(enum reboot_mode mode, const char *cmd);
2f334a389   Paul Walmsley   ARM: OMAP2+: PRCM...
163
  #else
7b6d864b4   Robin Holt   reboot: arm: chan...
164
  static inline void omap44xx_restart(enum reboot_mode mode, const char *cmd)
2f334a389   Paul Walmsley   ARM: OMAP2+: PRCM...
165
166
167
  {
  }
  #endif
b6a4226c1   Paul Walmsley   ARM: OMAP2+: comm...
168
169
170
171
172
173
174
175
176
177
178
179
  /* This gets called from mach-omap2/io.c, do not call this */
  void __init omap2_set_globals_tap(u32 class, void __iomem *tap);
  
  void __init omap242x_map_io(void);
  void __init omap243x_map_io(void);
  void __init omap3_map_io(void);
  void __init am33xx_map_io(void);
  void __init omap4_map_io(void);
  void __init omap5_map_io(void);
  void __init ti81xx_map_io(void);
  
  /* omap_barriers_init() is OMAP4 only */
2ec1fc4e1   Santosh Shilimkar   ARM: OMAP4: Move ...
180
  void omap_barriers_init(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
  
  /**
   * omap_test_timeout - busy-loop, testing a condition
   * @cond: condition to test until it evaluates to true
   * @timeout: maximum number of microseconds in the timeout
   * @index: loop index (integer)
   *
   * Loop waiting for @cond to become true or until at least @timeout
   * microseconds have passed.  To use, define some integer @index in the
   * calling code.  After running, if @index == @timeout, then the loop has
   * timed out.
   */
  #define omap_test_timeout(cond, timeout, index)			\
  ({								\
  	for (index = 0; index < timeout; index++) {		\
  		if (cond)					\
  			break;					\
  		udelay(1);					\
  	}							\
  })
  
  extern struct device *omap2_get_mpuss_device(void);
  extern struct device *omap2_get_iva_device(void);
  extern struct device *omap2_get_l3_device(void);
  extern struct device *omap4_get_dsp_device(void);
c4082d499   R Sricharan   ARM: omap2+: boar...
206
  void omap_gic_of_init(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
207

4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
208
  #ifdef CONFIG_CACHE_L2X0
02afe8a7f   Santosh Shilimkar   ARM: OMAP4: Expor...
209
  extern void __iomem *omap4_get_l2cache_base(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
210
  #endif
52fa21208   Benoit Cousson   ARM: OMAP2/3: int...
211
  struct device_node;
52fa21208   Benoit Cousson   ARM: OMAP2/3: int...
212

02afe8a7f   Santosh Shilimkar   ARM: OMAP4: Expor...
213
214
215
216
217
218
219
  #ifdef CONFIG_SMP
  extern void __iomem *omap4_get_scu_base(void);
  #else
  static inline void __iomem *omap4_get_scu_base(void)
  {
  	return NULL;
  }
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
220
  #endif
ff999b8a0   Santosh Shilimkar   ARM: OMAP4460: Wo...
221
  extern void gic_dist_disable(void);
74ed7bdcb   Strashko, Grygorii   ARM: OMAP4460: cp...
222
  extern void gic_dist_enable(void);
cd8ce1590   Colin Cross   ARM: OMAP4: retri...
223
224
  extern bool gic_dist_disabled(void);
  extern void gic_timer_retrigger(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
225
  extern void omap_smc1(u32 fn, u32 arg);
501f0c751   Santosh Shilimkar   ARM: OMAP4: PM: A...
226
  extern void __iomem *omap4_get_sar_ram_base(void);
b2b9762f7   Santosh Shilimkar   ARM: OMAP4: PM: A...
227
  extern void omap_do_wfi(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
228
229
230
  
  #ifdef CONFIG_SMP
  /* Needed for secondary core boot */
baf4b7d34   Santosh Shilimkar   ARM: OMAP4+: Make...
231
232
  extern void omap4_secondary_startup(void);
  extern void omap4460_secondary_startup(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
233
234
235
  extern u32 omap_modify_auxcoreboot0(u32 set_mask, u32 clear_mask);
  extern void omap_auxcoreboot_addr(u32 cpu_addr);
  extern u32 omap_read_auxcoreboot0(void);
06915321e   Marc Zyngier   ARM: SoC: convert...
236
237
238
239
  
  extern void omap4_cpu_die(unsigned int cpu);
  
  extern struct smp_operations omap4_smp_ops;
283f708ca   Santosh Shilimkar   ARM: OMAP5: Add S...
240
  extern void omap5_secondary_startup(void);
999f934de   Lennart Sorensen   ARM: omap5/dra7xx...
241
  extern void omap5_secondary_hyp_startup(void);
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
242
  #endif
b2b9762f7   Santosh Shilimkar   ARM: OMAP4: PM: A...
243
244
245
246
247
  #if defined(CONFIG_SMP) && defined(CONFIG_PM)
  extern int omap4_mpuss_init(void);
  extern int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state);
  extern int omap4_finish_suspend(unsigned long cpu_state);
  extern void omap4_cpu_resume(void);
b5b4f2881   Santosh Shilimkar   ARM: OMAP4: PM: P...
248
  extern int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state);
b2b9762f7   Santosh Shilimkar   ARM: OMAP4: PM: A...
249
250
251
252
253
254
255
  #else
  static inline int omap4_enter_lowpower(unsigned int cpu,
  					unsigned int power_state)
  {
  	cpu_do_idle();
  	return 0;
  }
b5b4f2881   Santosh Shilimkar   ARM: OMAP4: PM: P...
256
257
258
259
260
  static inline int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state)
  {
  	cpu_do_idle();
  	return 0;
  }
b2b9762f7   Santosh Shilimkar   ARM: OMAP4: PM: A...
261
262
263
264
265
266
267
268
269
270
271
272
  static inline int omap4_mpuss_init(void)
  {
  	return 0;
  }
  
  static inline int omap4_finish_suspend(unsigned long cpu_state)
  {
  	return 0;
  }
  
  static inline void omap4_cpu_resume(void)
  {}
3ba2a7393   Santosh Shilimkar   ARM: OMAP4: PM: A...
273

b2b9762f7   Santosh Shilimkar   ARM: OMAP4: PM: A...
274
  #endif
258ee922d   Tony Lindgren   ARM: OMAP2+: Move...
275

31957609d   Uwe Kleine-König   ARM: OMAP2+: make...
276
  void pdata_quirks_init(const struct of_device_id *);
dad12d113   Tony Lindgren   ARM: OMAP2+: Add ...
277
  void omap_auxdata_legacy_init(struct device *dev);
8651bd8ce   Tony Lindgren   ARM: OMAP2+: Add ...
278
  void omap_pcs_legacy_init(int irq, void (*rearm)(void));
6a08e1e6f   Tony Lindgren   ARM: OMAP2+: Add ...
279

258ee922d   Tony Lindgren   ARM: OMAP2+: Move...
280
281
282
  struct omap_sdrc_params;
  extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
  				      struct omap_sdrc_params *sdrc_cs1);
1ee47b0ae   Balaji T K   ARM: OMAP4: hsmmc...
283
  struct omap2_hsmmc_info;
f583f0f2c   Lokesh Vutla   ARM: OMAP2+: Move...
284
  extern void omap_reserve(void);
258ee922d   Tony Lindgren   ARM: OMAP2+: Move...
285

5c2e88525   Tony Lindgren   ARM: OMAP: Remove...
286
287
  struct omap_hwmod;
  extern int omap_dss_reset(struct omap_hwmod *);
258ee922d   Tony Lindgren   ARM: OMAP2+: Move...
288

ff931c821   Rajendra Nayak   ARM: OMAP: clocks...
289
  /* SoC specific clock initializer */
cfa9667d4   Tero Kristo   ARM: OMAP2+: io: ...
290
  int omap_clk_init(void);
ff931c821   Rajendra Nayak   ARM: OMAP: clocks...
291

dcdf407b9   Tomi Valkeinen   ARM: OMAP2+: add ...
292
  int __init omapdss_init_of(void);
6a0e6b387   Tomi Valkeinen   ARM: OMAP2+: DT '...
293
  void __init omapdss_early_init_of(void);
dcdf407b9   Tomi Valkeinen   ARM: OMAP2+: add ...
294

b2b9762f7   Santosh Shilimkar   ARM: OMAP4: PM: A...
295
  #endif /* __ASSEMBLER__ */
4e65331c6   Tony Lindgren   ARM: 7159/1: OMAP...
296
  #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */