Statistics
| Branch: | Revision:

root / hw / omap.h @ 9a3a8895

History | View | Annotate | Download (31.7 kB)

1 c3d2689d balrog
/*
2 c3d2689d balrog
 * Texas Instruments OMAP processors.
3 c3d2689d balrog
 *
4 b4e3104b balrog
 * Copyright (C) 2006-2008 Andrzej Zaborowski  <balrog@zabor.org>
5 c3d2689d balrog
 *
6 c3d2689d balrog
 * This program is free software; you can redistribute it and/or
7 c3d2689d balrog
 * modify it under the terms of the GNU General Public License as
8 827df9f3 balrog
 * published by the Free Software Foundation; either version 2 or
9 827df9f3 balrog
 * (at your option) version 3 of the License.
10 c3d2689d balrog
 *
11 c3d2689d balrog
 * This program is distributed in the hope that it will be useful,
12 c3d2689d balrog
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 c3d2689d balrog
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 c3d2689d balrog
 * GNU General Public License for more details.
15 c3d2689d balrog
 *
16 fad6cb1a aurel32
 * You should have received a copy of the GNU General Public License along
17 8167ee88 Blue Swirl
 * with this program; if not, see <http://www.gnu.org/licenses/>.
18 c3d2689d balrog
 */
19 c3d2689d balrog
#ifndef hw_omap_h
20 64066a8f Avi Kivity
#include "memory.h"
21 c3d2689d balrog
# define hw_omap_h                "omap.h"
22 c3d2689d balrog
23 c3d2689d balrog
# define OMAP_EMIFS_BASE        0x00000000
24 827df9f3 balrog
# define OMAP2_Q0_BASE                0x00000000
25 c3d2689d balrog
# define OMAP_CS0_BASE                0x00000000
26 c3d2689d balrog
# define OMAP_CS1_BASE                0x04000000
27 c3d2689d balrog
# define OMAP_CS2_BASE                0x08000000
28 c3d2689d balrog
# define OMAP_CS3_BASE                0x0c000000
29 c3d2689d balrog
# define OMAP_EMIFF_BASE        0x10000000
30 c3d2689d balrog
# define OMAP_IMIF_BASE                0x20000000
31 c3d2689d balrog
# define OMAP_LOCALBUS_BASE        0x30000000
32 827df9f3 balrog
# define OMAP2_Q1_BASE                0x40000000
33 827df9f3 balrog
# define OMAP2_L4_BASE                0x48000000
34 827df9f3 balrog
# define OMAP2_SRAM_BASE        0x40200000
35 827df9f3 balrog
# define OMAP2_L3_BASE                0x68000000
36 827df9f3 balrog
# define OMAP2_Q2_BASE                0x80000000
37 827df9f3 balrog
# define OMAP2_Q3_BASE                0xc0000000
38 c3d2689d balrog
# define OMAP_MPUI_BASE                0xe1000000
39 c3d2689d balrog
40 c3d2689d balrog
# define OMAP730_SRAM_SIZE        0x00032000
41 c3d2689d balrog
# define OMAP15XX_SRAM_SIZE        0x00030000
42 c3d2689d balrog
# define OMAP16XX_SRAM_SIZE        0x00004000
43 c3d2689d balrog
# define OMAP1611_SRAM_SIZE        0x0003e800
44 827df9f3 balrog
# define OMAP242X_SRAM_SIZE        0x000a0000
45 827df9f3 balrog
# define OMAP243X_SRAM_SIZE        0x00010000
46 c3d2689d balrog
# define OMAP_CS0_SIZE                0x04000000
47 c3d2689d balrog
# define OMAP_CS1_SIZE                0x04000000
48 c3d2689d balrog
# define OMAP_CS2_SIZE                0x04000000
49 c3d2689d balrog
# define OMAP_CS3_SIZE                0x04000000
50 c3d2689d balrog
51 827df9f3 balrog
/* omap_clk.c */
52 c3d2689d balrog
struct omap_mpu_state_s;
53 c3d2689d balrog
typedef struct clk *omap_clk;
54 c3d2689d balrog
omap_clk omap_findclk(struct omap_mpu_state_s *mpu, const char *name);
55 c3d2689d balrog
void omap_clk_init(struct omap_mpu_state_s *mpu);
56 c3d2689d balrog
void omap_clk_adduser(struct clk *clk, qemu_irq user);
57 c3d2689d balrog
void omap_clk_get(omap_clk clk);
58 c3d2689d balrog
void omap_clk_put(omap_clk clk);
59 c3d2689d balrog
void omap_clk_onoff(omap_clk clk, int on);
60 c3d2689d balrog
void omap_clk_canidle(omap_clk clk, int can);
61 c3d2689d balrog
void omap_clk_setrate(omap_clk clk, int divide, int multiply);
62 c3d2689d balrog
int64_t omap_clk_getrate(omap_clk clk);
63 c3d2689d balrog
void omap_clk_reparent(omap_clk clk, omap_clk parent);
64 c3d2689d balrog
65 2c1d9ecb cmchao
/* OMAP2 l4 Interconnect */
66 827df9f3 balrog
struct omap_l4_s;
67 2c1d9ecb cmchao
struct omap_l4_region_s {
68 2c1d9ecb cmchao
    target_phys_addr_t offset;
69 2c1d9ecb cmchao
    size_t size;
70 2c1d9ecb cmchao
    int access;
71 2c1d9ecb cmchao
};
72 2c1d9ecb cmchao
struct omap_l4_agent_info_s {
73 2c1d9ecb cmchao
    int ta;
74 2c1d9ecb cmchao
    int region;
75 2c1d9ecb cmchao
    int regions;
76 2c1d9ecb cmchao
    int ta_region;
77 2c1d9ecb cmchao
};
78 2c1d9ecb cmchao
struct omap_target_agent_s {
79 3892f842 Benoît Canet
    MemoryRegion iomem;
80 2c1d9ecb cmchao
    struct omap_l4_s *bus;
81 2c1d9ecb cmchao
    int regions;
82 2c1d9ecb cmchao
    const struct omap_l4_region_s *start;
83 2c1d9ecb cmchao
    target_phys_addr_t base;
84 2c1d9ecb cmchao
    uint32_t component;
85 2c1d9ecb cmchao
    uint32_t control;
86 2c1d9ecb cmchao
    uint32_t status;
87 2c1d9ecb cmchao
};
88 f3226149 Avi Kivity
struct omap_l4_s *omap_l4_init(MemoryRegion *address_space,
89 f3226149 Avi Kivity
                               target_phys_addr_t base, int ta_num);
90 827df9f3 balrog
91 827df9f3 balrog
struct omap_target_agent_s;
92 2c1d9ecb cmchao
struct omap_target_agent_s *omap_l4ta_get(
93 2c1d9ecb cmchao
    struct omap_l4_s *bus,
94 2c1d9ecb cmchao
    const struct omap_l4_region_s *regions,
95 2c1d9ecb cmchao
    const struct omap_l4_agent_info_s *agents,
96 2c1d9ecb cmchao
    int cs);
97 f44336c5 Avi Kivity
target_phys_addr_t omap_l4_attach(struct omap_target_agent_s *ta,
98 f3226149 Avi Kivity
                                         int region, MemoryRegion *mr);
99 f9049203 Juha Riihimäki
target_phys_addr_t omap_l4_region_base(struct omap_target_agent_s *ta,
100 f9049203 Juha Riihimäki
                                       int region);
101 f3226149 Avi Kivity
target_phys_addr_t omap_l4_region_size(struct omap_target_agent_s *ta,
102 f3226149 Avi Kivity
                                       int region);
103 827df9f3 balrog
104 0bf43016 cmchao
/* OMAP2 SDRAM controller */
105 827df9f3 balrog
struct omap_sdrc_s;
106 6a0148e7 Avi Kivity
struct omap_sdrc_s *omap_sdrc_init(MemoryRegion *sysmem,
107 6a0148e7 Avi Kivity
                                   target_phys_addr_t base);
108 0bf43016 cmchao
void omap_sdrc_reset(struct omap_sdrc_s *s);
109 827df9f3 balrog
110 f3354b0e cmchao
/* OMAP2 general purpose memory controller */
111 827df9f3 balrog
struct omap_gpmc_s;
112 b5325c27 Juha Riihimäki
struct omap_gpmc_s *omap_gpmc_init(struct omap_mpu_state_s *mpu,
113 eee0a1c6 Peter Maydell
                                   target_phys_addr_t base,
114 eee0a1c6 Peter Maydell
                                   qemu_irq irq, qemu_irq drq);
115 f3354b0e cmchao
void omap_gpmc_reset(struct omap_gpmc_s *s);
116 07bc2f80 Peter Maydell
void omap_gpmc_attach(struct omap_gpmc_s *s, int cs, MemoryRegion *iomem);
117 2a952feb Peter Maydell
void omap_gpmc_attach_nand(struct omap_gpmc_s *s, int cs, DeviceState *nand);
118 29885477 balrog
119 c3d2689d balrog
/*
120 c3d2689d balrog
 * Common IRQ numbers for level 1 interrupt handler
121 c3d2689d balrog
 * See /usr/include/asm-arm/arch-omap/irqs.h in Linux.
122 c3d2689d balrog
 */
123 c3d2689d balrog
# define OMAP_INT_CAMERA                1
124 c3d2689d balrog
# define OMAP_INT_FIQ                        3
125 c3d2689d balrog
# define OMAP_INT_RTDX                        6
126 c3d2689d balrog
# define OMAP_INT_DSP_MMU_ABORT                7
127 c3d2689d balrog
# define OMAP_INT_HOST                        8
128 c3d2689d balrog
# define OMAP_INT_ABORT                        9
129 c3d2689d balrog
# define OMAP_INT_BRIDGE_PRIV                13
130 c3d2689d balrog
# define OMAP_INT_GPIO_BANK1                14
131 c3d2689d balrog
# define OMAP_INT_UART3                        15
132 c3d2689d balrog
# define OMAP_INT_TIMER3                16
133 c3d2689d balrog
# define OMAP_INT_DMA_CH0_6                19
134 c3d2689d balrog
# define OMAP_INT_DMA_CH1_7                20
135 c3d2689d balrog
# define OMAP_INT_DMA_CH2_8                21
136 c3d2689d balrog
# define OMAP_INT_DMA_CH3                22
137 c3d2689d balrog
# define OMAP_INT_DMA_CH4                23
138 c3d2689d balrog
# define OMAP_INT_DMA_CH5                24
139 c3d2689d balrog
# define OMAP_INT_DMA_LCD                25
140 c3d2689d balrog
# define OMAP_INT_TIMER1                26
141 c3d2689d balrog
# define OMAP_INT_WD_TIMER                27
142 c3d2689d balrog
# define OMAP_INT_BRIDGE_PUB                28
143 c3d2689d balrog
# define OMAP_INT_TIMER2                30
144 c3d2689d balrog
# define OMAP_INT_LCD_CTRL                31
145 c3d2689d balrog
146 c3d2689d balrog
/*
147 c3d2689d balrog
 * Common OMAP-15xx IRQ numbers for level 1 interrupt handler
148 c3d2689d balrog
 */
149 c3d2689d balrog
# define OMAP_INT_15XX_IH2_IRQ                0
150 c3d2689d balrog
# define OMAP_INT_15XX_LB_MMU                17
151 c3d2689d balrog
# define OMAP_INT_15XX_LOCAL_BUS        29
152 c3d2689d balrog
153 c3d2689d balrog
/*
154 c3d2689d balrog
 * OMAP-1510 specific IRQ numbers for level 1 interrupt handler
155 c3d2689d balrog
 */
156 c3d2689d balrog
# define OMAP_INT_1510_SPI_TX                4
157 c3d2689d balrog
# define OMAP_INT_1510_SPI_RX                5
158 c3d2689d balrog
# define OMAP_INT_1510_DSP_MAILBOX1        10
159 c3d2689d balrog
# define OMAP_INT_1510_DSP_MAILBOX2        11
160 c3d2689d balrog
161 c3d2689d balrog
/*
162 c3d2689d balrog
 * OMAP-310 specific IRQ numbers for level 1 interrupt handler
163 c3d2689d balrog
 */
164 c3d2689d balrog
# define OMAP_INT_310_McBSP2_TX                4
165 c3d2689d balrog
# define OMAP_INT_310_McBSP2_RX                5
166 c3d2689d balrog
# define OMAP_INT_310_HSB_MAILBOX1        12
167 c3d2689d balrog
# define OMAP_INT_310_HSAB_MMU                18
168 c3d2689d balrog
169 c3d2689d balrog
/*
170 c3d2689d balrog
 * OMAP-1610 specific IRQ numbers for level 1 interrupt handler
171 c3d2689d balrog
 */
172 c3d2689d balrog
# define OMAP_INT_1610_IH2_IRQ                0
173 c3d2689d balrog
# define OMAP_INT_1610_IH2_FIQ                2
174 c3d2689d balrog
# define OMAP_INT_1610_McBSP2_TX        4
175 c3d2689d balrog
# define OMAP_INT_1610_McBSP2_RX        5
176 c3d2689d balrog
# define OMAP_INT_1610_DSP_MAILBOX1        10
177 c3d2689d balrog
# define OMAP_INT_1610_DSP_MAILBOX2        11
178 c3d2689d balrog
# define OMAP_INT_1610_LCD_LINE                12
179 c3d2689d balrog
# define OMAP_INT_1610_GPTIMER1                17
180 c3d2689d balrog
# define OMAP_INT_1610_GPTIMER2                18
181 c3d2689d balrog
# define OMAP_INT_1610_SSR_FIFO_0        29
182 c3d2689d balrog
183 c3d2689d balrog
/*
184 c3d2689d balrog
 * OMAP-730 specific IRQ numbers for level 1 interrupt handler
185 c3d2689d balrog
 */
186 c3d2689d balrog
# define OMAP_INT_730_IH2_FIQ                0
187 c3d2689d balrog
# define OMAP_INT_730_IH2_IRQ                1
188 c3d2689d balrog
# define OMAP_INT_730_USB_NON_ISO        2
189 c3d2689d balrog
# define OMAP_INT_730_USB_ISO                3
190 c3d2689d balrog
# define OMAP_INT_730_ICR                4
191 c3d2689d balrog
# define OMAP_INT_730_EAC                5
192 c3d2689d balrog
# define OMAP_INT_730_GPIO_BANK1        6
193 c3d2689d balrog
# define OMAP_INT_730_GPIO_BANK2        7
194 c3d2689d balrog
# define OMAP_INT_730_GPIO_BANK3        8
195 c3d2689d balrog
# define OMAP_INT_730_McBSP2TX                10
196 c3d2689d balrog
# define OMAP_INT_730_McBSP2RX                11
197 c3d2689d balrog
# define OMAP_INT_730_McBSP2RX_OVF        12
198 c3d2689d balrog
# define OMAP_INT_730_LCD_LINE                14
199 c3d2689d balrog
# define OMAP_INT_730_GSM_PROTECT        15
200 c3d2689d balrog
# define OMAP_INT_730_TIMER3                16
201 c3d2689d balrog
# define OMAP_INT_730_GPIO_BANK5        17
202 c3d2689d balrog
# define OMAP_INT_730_GPIO_BANK6        18
203 c3d2689d balrog
# define OMAP_INT_730_SPGIO_WR                29
204 c3d2689d balrog
205 c3d2689d balrog
/*
206 c3d2689d balrog
 * Common IRQ numbers for level 2 interrupt handler
207 c3d2689d balrog
 */
208 c3d2689d balrog
# define OMAP_INT_KEYBOARD                1
209 c3d2689d balrog
# define OMAP_INT_uWireTX                2
210 c3d2689d balrog
# define OMAP_INT_uWireRX                3
211 c3d2689d balrog
# define OMAP_INT_I2C                        4
212 c3d2689d balrog
# define OMAP_INT_MPUIO                        5
213 c3d2689d balrog
# define OMAP_INT_USB_HHC_1                6
214 c3d2689d balrog
# define OMAP_INT_McBSP3TX                10
215 c3d2689d balrog
# define OMAP_INT_McBSP3RX                11
216 c3d2689d balrog
# define OMAP_INT_McBSP1TX                12
217 c3d2689d balrog
# define OMAP_INT_McBSP1RX                13
218 c3d2689d balrog
# define OMAP_INT_UART1                        14
219 c3d2689d balrog
# define OMAP_INT_UART2                        15
220 c3d2689d balrog
# define OMAP_INT_USB_W2FC                20
221 c3d2689d balrog
# define OMAP_INT_1WIRE                        21
222 c3d2689d balrog
# define OMAP_INT_OS_TIMER                22
223 b30bb3a2 balrog
# define OMAP_INT_OQN                        23
224 c3d2689d balrog
# define OMAP_INT_GAUGE_32K                24
225 c3d2689d balrog
# define OMAP_INT_RTC_TIMER                25
226 c3d2689d balrog
# define OMAP_INT_RTC_ALARM                26
227 c3d2689d balrog
# define OMAP_INT_DSP_MMU                28
228 c3d2689d balrog
229 c3d2689d balrog
/*
230 c3d2689d balrog
 * OMAP-1510 specific IRQ numbers for level 2 interrupt handler
231 c3d2689d balrog
 */
232 c3d2689d balrog
# define OMAP_INT_1510_BT_MCSI1TX        16
233 c3d2689d balrog
# define OMAP_INT_1510_BT_MCSI1RX        17
234 c3d2689d balrog
# define OMAP_INT_1510_SoSSI_MATCH        19
235 c3d2689d balrog
# define OMAP_INT_1510_MEM_STICK        27
236 c3d2689d balrog
# define OMAP_INT_1510_COM_SPI_RO        31
237 c3d2689d balrog
238 c3d2689d balrog
/*
239 c3d2689d balrog
 * OMAP-310 specific IRQ numbers for level 2 interrupt handler
240 c3d2689d balrog
 */
241 c3d2689d balrog
# define OMAP_INT_310_FAC                0
242 c3d2689d balrog
# define OMAP_INT_310_USB_HHC_2                7
243 c3d2689d balrog
# define OMAP_INT_310_MCSI1_FE                16
244 c3d2689d balrog
# define OMAP_INT_310_MCSI2_FE                17
245 c3d2689d balrog
# define OMAP_INT_310_USB_W2FC_ISO        29
246 c3d2689d balrog
# define OMAP_INT_310_USB_W2FC_NON_ISO        30
247 c3d2689d balrog
# define OMAP_INT_310_McBSP2RX_OF        31
248 c3d2689d balrog
249 c3d2689d balrog
/*
250 c3d2689d balrog
 * OMAP-1610 specific IRQ numbers for level 2 interrupt handler
251 c3d2689d balrog
 */
252 c3d2689d balrog
# define OMAP_INT_1610_FAC                0
253 c3d2689d balrog
# define OMAP_INT_1610_USB_HHC_2        7
254 c3d2689d balrog
# define OMAP_INT_1610_USB_OTG                8
255 c3d2689d balrog
# define OMAP_INT_1610_SoSSI                9
256 c3d2689d balrog
# define OMAP_INT_1610_BT_MCSI1TX        16
257 c3d2689d balrog
# define OMAP_INT_1610_BT_MCSI1RX        17
258 c3d2689d balrog
# define OMAP_INT_1610_SoSSI_MATCH        19
259 c3d2689d balrog
# define OMAP_INT_1610_MEM_STICK        27
260 c3d2689d balrog
# define OMAP_INT_1610_McBSP2RX_OF        31
261 c3d2689d balrog
# define OMAP_INT_1610_STI                32
262 c3d2689d balrog
# define OMAP_INT_1610_STI_WAKEUP        33
263 c3d2689d balrog
# define OMAP_INT_1610_GPTIMER3                34
264 c3d2689d balrog
# define OMAP_INT_1610_GPTIMER4                35
265 c3d2689d balrog
# define OMAP_INT_1610_GPTIMER5                36
266 c3d2689d balrog
# define OMAP_INT_1610_GPTIMER6                37
267 c3d2689d balrog
# define OMAP_INT_1610_GPTIMER7                38
268 c3d2689d balrog
# define OMAP_INT_1610_GPTIMER8                39
269 c3d2689d balrog
# define OMAP_INT_1610_GPIO_BANK2        40
270 c3d2689d balrog
# define OMAP_INT_1610_GPIO_BANK3        41
271 c3d2689d balrog
# define OMAP_INT_1610_MMC2                42
272 c3d2689d balrog
# define OMAP_INT_1610_CF                43
273 c3d2689d balrog
# define OMAP_INT_1610_WAKE_UP_REQ        46
274 c3d2689d balrog
# define OMAP_INT_1610_GPIO_BANK4        48
275 c3d2689d balrog
# define OMAP_INT_1610_SPI                49
276 c3d2689d balrog
# define OMAP_INT_1610_DMA_CH6                53
277 c3d2689d balrog
# define OMAP_INT_1610_DMA_CH7                54
278 c3d2689d balrog
# define OMAP_INT_1610_DMA_CH8                55
279 c3d2689d balrog
# define OMAP_INT_1610_DMA_CH9                56
280 c3d2689d balrog
# define OMAP_INT_1610_DMA_CH10                57
281 c3d2689d balrog
# define OMAP_INT_1610_DMA_CH11                58
282 c3d2689d balrog
# define OMAP_INT_1610_DMA_CH12                59
283 c3d2689d balrog
# define OMAP_INT_1610_DMA_CH13                60
284 c3d2689d balrog
# define OMAP_INT_1610_DMA_CH14                61
285 c3d2689d balrog
# define OMAP_INT_1610_DMA_CH15                62
286 c3d2689d balrog
# define OMAP_INT_1610_NAND                63
287 c3d2689d balrog
288 c3d2689d balrog
/*
289 c3d2689d balrog
 * OMAP-730 specific IRQ numbers for level 2 interrupt handler
290 c3d2689d balrog
 */
291 c3d2689d balrog
# define OMAP_INT_730_HW_ERRORS                0
292 c3d2689d balrog
# define OMAP_INT_730_NFIQ_PWR_FAIL        1
293 c3d2689d balrog
# define OMAP_INT_730_CFCD                2
294 c3d2689d balrog
# define OMAP_INT_730_CFIREQ                3
295 c3d2689d balrog
# define OMAP_INT_730_I2C                4
296 c3d2689d balrog
# define OMAP_INT_730_PCC                5
297 c3d2689d balrog
# define OMAP_INT_730_MPU_EXT_NIRQ        6
298 c3d2689d balrog
# define OMAP_INT_730_SPI_100K_1        7
299 c3d2689d balrog
# define OMAP_INT_730_SYREN_SPI                8
300 c3d2689d balrog
# define OMAP_INT_730_VLYNQ                9
301 c3d2689d balrog
# define OMAP_INT_730_GPIO_BANK4        10
302 c3d2689d balrog
# define OMAP_INT_730_McBSP1TX                11
303 c3d2689d balrog
# define OMAP_INT_730_McBSP1RX                12
304 c3d2689d balrog
# define OMAP_INT_730_McBSP1RX_OF        13
305 c3d2689d balrog
# define OMAP_INT_730_UART_MODEM_IRDA_2        14
306 c3d2689d balrog
# define OMAP_INT_730_UART_MODEM_1        15
307 c3d2689d balrog
# define OMAP_INT_730_MCSI                16
308 c3d2689d balrog
# define OMAP_INT_730_uWireTX                17
309 c3d2689d balrog
# define OMAP_INT_730_uWireRX                18
310 c3d2689d balrog
# define OMAP_INT_730_SMC_CD                19
311 c3d2689d balrog
# define OMAP_INT_730_SMC_IREQ                20
312 c3d2689d balrog
# define OMAP_INT_730_HDQ_1WIRE                21
313 c3d2689d balrog
# define OMAP_INT_730_TIMER32K                22
314 c3d2689d balrog
# define OMAP_INT_730_MMC_SDIO                23
315 c3d2689d balrog
# define OMAP_INT_730_UPLD                24
316 c3d2689d balrog
# define OMAP_INT_730_USB_HHC_1                27
317 c3d2689d balrog
# define OMAP_INT_730_USB_HHC_2                28
318 c3d2689d balrog
# define OMAP_INT_730_USB_GENI                29
319 c3d2689d balrog
# define OMAP_INT_730_USB_OTG                30
320 c3d2689d balrog
# define OMAP_INT_730_CAMERA_IF                31
321 c3d2689d balrog
# define OMAP_INT_730_RNG                32
322 c3d2689d balrog
# define OMAP_INT_730_DUAL_MODE_TIMER        33
323 c3d2689d balrog
# define OMAP_INT_730_DBB_RF_EN                34
324 c3d2689d balrog
# define OMAP_INT_730_MPUIO_KEYPAD        35
325 c3d2689d balrog
# define OMAP_INT_730_SHA1_MD5                36
326 c3d2689d balrog
# define OMAP_INT_730_SPI_100K_2        37
327 c3d2689d balrog
# define OMAP_INT_730_RNG_IDLE                38
328 c3d2689d balrog
# define OMAP_INT_730_MPUIO                39
329 c3d2689d balrog
# define OMAP_INT_730_LLPC_LCD_CTRL_OFF        40
330 c3d2689d balrog
# define OMAP_INT_730_LLPC_OE_FALLING        41
331 c3d2689d balrog
# define OMAP_INT_730_LLPC_OE_RISING        42
332 c3d2689d balrog
# define OMAP_INT_730_LLPC_VSYNC        43
333 c3d2689d balrog
# define OMAP_INT_730_WAKE_UP_REQ        46
334 c3d2689d balrog
# define OMAP_INT_730_DMA_CH6                53
335 c3d2689d balrog
# define OMAP_INT_730_DMA_CH7                54
336 c3d2689d balrog
# define OMAP_INT_730_DMA_CH8                55
337 c3d2689d balrog
# define OMAP_INT_730_DMA_CH9                56
338 c3d2689d balrog
# define OMAP_INT_730_DMA_CH10                57
339 c3d2689d balrog
# define OMAP_INT_730_DMA_CH11                58
340 c3d2689d balrog
# define OMAP_INT_730_DMA_CH12                59
341 c3d2689d balrog
# define OMAP_INT_730_DMA_CH13                60
342 c3d2689d balrog
# define OMAP_INT_730_DMA_CH14                61
343 c3d2689d balrog
# define OMAP_INT_730_DMA_CH15                62
344 c3d2689d balrog
# define OMAP_INT_730_NAND                63
345 c3d2689d balrog
346 c3d2689d balrog
/*
347 c3d2689d balrog
 * OMAP-24xx common IRQ numbers
348 c3d2689d balrog
 */
349 54585ffe balrog
# define OMAP_INT_24XX_STI                4
350 c3d2689d balrog
# define OMAP_INT_24XX_SYS_NIRQ                7
351 827df9f3 balrog
# define OMAP_INT_24XX_L3_IRQ                10
352 827df9f3 balrog
# define OMAP_INT_24XX_PRCM_MPU_IRQ        11
353 c3d2689d balrog
# define OMAP_INT_24XX_SDMA_IRQ0        12
354 c3d2689d balrog
# define OMAP_INT_24XX_SDMA_IRQ1        13
355 c3d2689d balrog
# define OMAP_INT_24XX_SDMA_IRQ2        14
356 c3d2689d balrog
# define OMAP_INT_24XX_SDMA_IRQ3        15
357 827df9f3 balrog
# define OMAP_INT_243X_MCBSP2_IRQ        16
358 827df9f3 balrog
# define OMAP_INT_243X_MCBSP3_IRQ        17
359 827df9f3 balrog
# define OMAP_INT_243X_MCBSP4_IRQ        18
360 827df9f3 balrog
# define OMAP_INT_243X_MCBSP5_IRQ        19
361 827df9f3 balrog
# define OMAP_INT_24XX_GPMC_IRQ                20
362 827df9f3 balrog
# define OMAP_INT_24XX_GUFFAW_IRQ        21
363 827df9f3 balrog
# define OMAP_INT_24XX_IVA_IRQ                22
364 827df9f3 balrog
# define OMAP_INT_24XX_EAC_IRQ                23
365 c3d2689d balrog
# define OMAP_INT_24XX_CAM_IRQ                24
366 c3d2689d balrog
# define OMAP_INT_24XX_DSS_IRQ                25
367 c3d2689d balrog
# define OMAP_INT_24XX_MAIL_U0_MPU        26
368 c3d2689d balrog
# define OMAP_INT_24XX_DSP_UMA                27
369 c3d2689d balrog
# define OMAP_INT_24XX_DSP_MMU                28
370 c3d2689d balrog
# define OMAP_INT_24XX_GPIO_BANK1        29
371 c3d2689d balrog
# define OMAP_INT_24XX_GPIO_BANK2        30
372 c3d2689d balrog
# define OMAP_INT_24XX_GPIO_BANK3        31
373 c3d2689d balrog
# define OMAP_INT_24XX_GPIO_BANK4        32
374 827df9f3 balrog
# define OMAP_INT_243X_GPIO_BANK5        33
375 c3d2689d balrog
# define OMAP_INT_24XX_MAIL_U3_MPU        34
376 827df9f3 balrog
# define OMAP_INT_24XX_WDT3                35
377 827df9f3 balrog
# define OMAP_INT_24XX_WDT4                36
378 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER1                37
379 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER2                38
380 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER3                39
381 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER4                40
382 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER5                41
383 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER6                42
384 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER7                43
385 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER8                44
386 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER9                45
387 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER10        46
388 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER11        47
389 c3d2689d balrog
# define OMAP_INT_24XX_GPTIMER12        48
390 827df9f3 balrog
# define OMAP_INT_24XX_PKA_IRQ                50
391 827df9f3 balrog
# define OMAP_INT_24XX_SHA1MD5_IRQ        51
392 827df9f3 balrog
# define OMAP_INT_24XX_RNG_IRQ                52
393 827df9f3 balrog
# define OMAP_INT_24XX_MG_IRQ                53
394 827df9f3 balrog
# define OMAP_INT_24XX_I2C1_IRQ                56
395 827df9f3 balrog
# define OMAP_INT_24XX_I2C2_IRQ                57
396 c3d2689d balrog
# define OMAP_INT_24XX_MCBSP1_IRQ_TX        59
397 c3d2689d balrog
# define OMAP_INT_24XX_MCBSP1_IRQ_RX        60
398 c3d2689d balrog
# define OMAP_INT_24XX_MCBSP2_IRQ_TX        62
399 c3d2689d balrog
# define OMAP_INT_24XX_MCBSP2_IRQ_RX        63
400 827df9f3 balrog
# define OMAP_INT_243X_MCBSP1_IRQ        64
401 827df9f3 balrog
# define OMAP_INT_24XX_MCSPI1_IRQ        65
402 827df9f3 balrog
# define OMAP_INT_24XX_MCSPI2_IRQ        66
403 827df9f3 balrog
# define OMAP_INT_24XX_SSI1_IRQ0        67
404 827df9f3 balrog
# define OMAP_INT_24XX_SSI1_IRQ1        68
405 827df9f3 balrog
# define OMAP_INT_24XX_SSI2_IRQ0        69
406 827df9f3 balrog
# define OMAP_INT_24XX_SSI2_IRQ1        70
407 827df9f3 balrog
# define OMAP_INT_24XX_SSI_GDD_IRQ        71
408 c3d2689d balrog
# define OMAP_INT_24XX_UART1_IRQ        72
409 c3d2689d balrog
# define OMAP_INT_24XX_UART2_IRQ        73
410 c3d2689d balrog
# define OMAP_INT_24XX_UART3_IRQ        74
411 c3d2689d balrog
# define OMAP_INT_24XX_USB_IRQ_GEN        75
412 c3d2689d balrog
# define OMAP_INT_24XX_USB_IRQ_NISO        76
413 c3d2689d balrog
# define OMAP_INT_24XX_USB_IRQ_ISO        77
414 c3d2689d balrog
# define OMAP_INT_24XX_USB_IRQ_HGEN        78
415 c3d2689d balrog
# define OMAP_INT_24XX_USB_IRQ_HSOF        79
416 c3d2689d balrog
# define OMAP_INT_24XX_USB_IRQ_OTG        80
417 827df9f3 balrog
# define OMAP_INT_24XX_VLYNQ_IRQ        81
418 c3d2689d balrog
# define OMAP_INT_24XX_MMC_IRQ                83
419 827df9f3 balrog
# define OMAP_INT_24XX_MS_IRQ                84
420 827df9f3 balrog
# define OMAP_INT_24XX_FAC_IRQ                85
421 827df9f3 balrog
# define OMAP_INT_24XX_MCSPI3_IRQ        91
422 c3d2689d balrog
# define OMAP_INT_243X_HS_USB_MC        92
423 c3d2689d balrog
# define OMAP_INT_243X_HS_USB_DMA        93
424 c3d2689d balrog
# define OMAP_INT_243X_CARKIT                94
425 827df9f3 balrog
# define OMAP_INT_34XX_GPTIMER12        95
426 c3d2689d balrog
427 b4e3104b balrog
/* omap_dma.c */
428 089b7c0a balrog
enum omap_dma_model {
429 b4e3104b balrog
    omap_dma_3_0,
430 b4e3104b balrog
    omap_dma_3_1,
431 b4e3104b balrog
    omap_dma_3_2,
432 b4e3104b balrog
    omap_dma_4,
433 089b7c0a balrog
};
434 089b7c0a balrog
435 afbb5194 balrog
struct soc_dma_s;
436 c227f099 Anthony Liguori
struct soc_dma_s *omap_dma_init(target_phys_addr_t base, qemu_irq *irqs,
437 7405165e Avi Kivity
                MemoryRegion *sysmem,
438 089b7c0a balrog
                qemu_irq lcd_irq, struct omap_mpu_state_s *mpu, omap_clk clk,
439 089b7c0a balrog
                enum omap_dma_model model);
440 c227f099 Anthony Liguori
struct soc_dma_s *omap_dma4_init(target_phys_addr_t base, qemu_irq *irqs,
441 7405165e Avi Kivity
                MemoryRegion *sysmem,
442 827df9f3 balrog
                struct omap_mpu_state_s *mpu, int fifo,
443 827df9f3 balrog
                int chans, omap_clk iclk, omap_clk fclk);
444 afbb5194 balrog
void omap_dma_reset(struct soc_dma_s *s);
445 c3d2689d balrog
446 b4e3104b balrog
struct dma_irq_map {
447 b4e3104b balrog
    int ih;
448 b4e3104b balrog
    int intr;
449 b4e3104b balrog
};
450 b4e3104b balrog
451 b4e3104b balrog
/* Only used in OMAP DMA 3.x gigacells */
452 c3d2689d balrog
enum omap_dma_port {
453 c3d2689d balrog
    emiff = 0,
454 c3d2689d balrog
    emifs,
455 089b7c0a balrog
    imif,        /* omap16xx: ocp_t1 */
456 c3d2689d balrog
    tipb,
457 089b7c0a balrog
    local,        /* omap16xx: ocp_t2 */
458 c3d2689d balrog
    tipb_mpui,
459 827df9f3 balrog
    __omap_dma_port_last,
460 c3d2689d balrog
};
461 c3d2689d balrog
462 089b7c0a balrog
typedef enum {
463 089b7c0a balrog
    constant = 0,
464 089b7c0a balrog
    post_incremented,
465 089b7c0a balrog
    single_index,
466 089b7c0a balrog
    double_index,
467 c227f099 Anthony Liguori
} omap_dma_addressing_t;
468 089b7c0a balrog
469 b4e3104b balrog
/* Only used in OMAP DMA 3.x gigacells */
470 c3d2689d balrog
struct omap_dma_lcd_channel_s {
471 c3d2689d balrog
    enum omap_dma_port src;
472 c227f099 Anthony Liguori
    target_phys_addr_t src_f1_top;
473 c227f099 Anthony Liguori
    target_phys_addr_t src_f1_bottom;
474 c227f099 Anthony Liguori
    target_phys_addr_t src_f2_top;
475 c227f099 Anthony Liguori
    target_phys_addr_t src_f2_bottom;
476 089b7c0a balrog
477 089b7c0a balrog
    /* Used in OMAP DMA 3.2 gigacell */
478 089b7c0a balrog
    unsigned char brust_f1;
479 089b7c0a balrog
    unsigned char pack_f1;
480 089b7c0a balrog
    unsigned char data_type_f1;
481 089b7c0a balrog
    unsigned char brust_f2;
482 089b7c0a balrog
    unsigned char pack_f2;
483 089b7c0a balrog
    unsigned char data_type_f2;
484 089b7c0a balrog
    unsigned char end_prog;
485 089b7c0a balrog
    unsigned char repeat;
486 089b7c0a balrog
    unsigned char auto_init;
487 089b7c0a balrog
    unsigned char priority;
488 089b7c0a balrog
    unsigned char fs;
489 089b7c0a balrog
    unsigned char running;
490 089b7c0a balrog
    unsigned char bs;
491 089b7c0a balrog
    unsigned char omap_3_1_compatible_disable;
492 089b7c0a balrog
    unsigned char dst;
493 089b7c0a balrog
    unsigned char lch_type;
494 089b7c0a balrog
    int16_t element_index_f1;
495 089b7c0a balrog
    int16_t element_index_f2;
496 089b7c0a balrog
    int32_t frame_index_f1;
497 089b7c0a balrog
    int32_t frame_index_f2;
498 089b7c0a balrog
    uint16_t elements_f1;
499 089b7c0a balrog
    uint16_t frames_f1;
500 089b7c0a balrog
    uint16_t elements_f2;
501 089b7c0a balrog
    uint16_t frames_f2;
502 c227f099 Anthony Liguori
    omap_dma_addressing_t mode_f1;
503 c227f099 Anthony Liguori
    omap_dma_addressing_t mode_f2;
504 089b7c0a balrog
505 c3d2689d balrog
    /* Destination port is fixed.  */
506 c3d2689d balrog
    int interrupts;
507 c3d2689d balrog
    int condition;
508 c3d2689d balrog
    int dual;
509 c3d2689d balrog
510 c3d2689d balrog
    int current_frame;
511 c227f099 Anthony Liguori
    target_phys_addr_t phys_framebuffer[2];
512 c3d2689d balrog
    qemu_irq irq;
513 c3d2689d balrog
    struct omap_mpu_state_s *mpu;
514 afbb5194 balrog
} *omap_dma_get_lcdch(struct soc_dma_s *s);
515 c3d2689d balrog
516 c3d2689d balrog
/*
517 c3d2689d balrog
 * DMA request numbers for OMAP1
518 c3d2689d balrog
 * See /usr/include/asm-arm/arch-omap/dma.h in Linux.
519 c3d2689d balrog
 */
520 c3d2689d balrog
# define OMAP_DMA_NO_DEVICE                0
521 c3d2689d balrog
# define OMAP_DMA_MCSI1_TX                1
522 c3d2689d balrog
# define OMAP_DMA_MCSI1_RX                2
523 c3d2689d balrog
# define OMAP_DMA_I2C_RX                3
524 c3d2689d balrog
# define OMAP_DMA_I2C_TX                4
525 c3d2689d balrog
# define OMAP_DMA_EXT_NDMA_REQ0                5
526 c3d2689d balrog
# define OMAP_DMA_EXT_NDMA_REQ1                6
527 c3d2689d balrog
# define OMAP_DMA_UWIRE_TX                7
528 c3d2689d balrog
# define OMAP_DMA_MCBSP1_TX                8
529 c3d2689d balrog
# define OMAP_DMA_MCBSP1_RX                9
530 c3d2689d balrog
# define OMAP_DMA_MCBSP3_TX                10
531 c3d2689d balrog
# define OMAP_DMA_MCBSP3_RX                11
532 c3d2689d balrog
# define OMAP_DMA_UART1_TX                12
533 c3d2689d balrog
# define OMAP_DMA_UART1_RX                13
534 c3d2689d balrog
# define OMAP_DMA_UART2_TX                14
535 c3d2689d balrog
# define OMAP_DMA_UART2_RX                15
536 c3d2689d balrog
# define OMAP_DMA_MCBSP2_TX                16
537 c3d2689d balrog
# define OMAP_DMA_MCBSP2_RX                17
538 c3d2689d balrog
# define OMAP_DMA_UART3_TX                18
539 c3d2689d balrog
# define OMAP_DMA_UART3_RX                19
540 c3d2689d balrog
# define OMAP_DMA_CAMERA_IF_RX                20
541 c3d2689d balrog
# define OMAP_DMA_MMC_TX                21
542 c3d2689d balrog
# define OMAP_DMA_MMC_RX                22
543 c3d2689d balrog
# define OMAP_DMA_NAND                        23        /* Not in OMAP310 */
544 c3d2689d balrog
# define OMAP_DMA_IRQ_LCD_LINE                24        /* Not in OMAP310 */
545 c3d2689d balrog
# define OMAP_DMA_MEMORY_STICK                25        /* Not in OMAP310 */
546 c3d2689d balrog
# define OMAP_DMA_USB_W2FC_RX0                26
547 c3d2689d balrog
# define OMAP_DMA_USB_W2FC_RX1                27
548 c3d2689d balrog
# define OMAP_DMA_USB_W2FC_RX2                28
549 c3d2689d balrog
# define OMAP_DMA_USB_W2FC_TX0                29
550 c3d2689d balrog
# define OMAP_DMA_USB_W2FC_TX1                30
551 c3d2689d balrog
# define OMAP_DMA_USB_W2FC_TX2                31
552 c3d2689d balrog
553 c3d2689d balrog
/* These are only for 1610 */
554 c3d2689d balrog
# define OMAP_DMA_CRYPTO_DES_IN                32
555 c3d2689d balrog
# define OMAP_DMA_SPI_TX                33
556 c3d2689d balrog
# define OMAP_DMA_SPI_RX                34
557 c3d2689d balrog
# define OMAP_DMA_CRYPTO_HASH                35
558 c3d2689d balrog
# define OMAP_DMA_CCP_ATTN                36
559 c3d2689d balrog
# define OMAP_DMA_CCP_FIFO_NOT_EMPTY        37
560 c3d2689d balrog
# define OMAP_DMA_CMT_APE_TX_CHAN_0        38
561 c3d2689d balrog
# define OMAP_DMA_CMT_APE_RV_CHAN_0        39
562 c3d2689d balrog
# define OMAP_DMA_CMT_APE_TX_CHAN_1        40
563 c3d2689d balrog
# define OMAP_DMA_CMT_APE_RV_CHAN_1        41
564 c3d2689d balrog
# define OMAP_DMA_CMT_APE_TX_CHAN_2        42
565 c3d2689d balrog
# define OMAP_DMA_CMT_APE_RV_CHAN_2        43
566 c3d2689d balrog
# define OMAP_DMA_CMT_APE_TX_CHAN_3        44
567 c3d2689d balrog
# define OMAP_DMA_CMT_APE_RV_CHAN_3        45
568 c3d2689d balrog
# define OMAP_DMA_CMT_APE_TX_CHAN_4        46
569 c3d2689d balrog
# define OMAP_DMA_CMT_APE_RV_CHAN_4        47
570 c3d2689d balrog
# define OMAP_DMA_CMT_APE_TX_CHAN_5        48
571 c3d2689d balrog
# define OMAP_DMA_CMT_APE_RV_CHAN_5        49
572 c3d2689d balrog
# define OMAP_DMA_CMT_APE_TX_CHAN_6        50
573 c3d2689d balrog
# define OMAP_DMA_CMT_APE_RV_CHAN_6        51
574 c3d2689d balrog
# define OMAP_DMA_CMT_APE_TX_CHAN_7        52
575 c3d2689d balrog
# define OMAP_DMA_CMT_APE_RV_CHAN_7        53
576 c3d2689d balrog
# define OMAP_DMA_MMC2_TX                54
577 c3d2689d balrog
# define OMAP_DMA_MMC2_RX                55
578 c3d2689d balrog
# define OMAP_DMA_CRYPTO_DES_OUT        56
579 c3d2689d balrog
580 827df9f3 balrog
/*
581 827df9f3 balrog
 * DMA request numbers for the OMAP2
582 827df9f3 balrog
 */
583 827df9f3 balrog
# define OMAP24XX_DMA_NO_DEVICE                0
584 827df9f3 balrog
# define OMAP24XX_DMA_XTI_DMA                1        /* Not in OMAP2420 */
585 827df9f3 balrog
# define OMAP24XX_DMA_EXT_DMAREQ0        2
586 827df9f3 balrog
# define OMAP24XX_DMA_EXT_DMAREQ1        3
587 827df9f3 balrog
# define OMAP24XX_DMA_GPMC                4
588 827df9f3 balrog
# define OMAP24XX_DMA_GFX                5        /* Not in OMAP2420 */
589 827df9f3 balrog
# define OMAP24XX_DMA_DSS                6
590 827df9f3 balrog
# define OMAP24XX_DMA_VLYNQ_TX                7        /* Not in OMAP2420 */
591 827df9f3 balrog
# define OMAP24XX_DMA_CWT                8        /* Not in OMAP2420 */
592 827df9f3 balrog
# define OMAP24XX_DMA_AES_TX                9        /* Not in OMAP2420 */
593 827df9f3 balrog
# define OMAP24XX_DMA_AES_RX                10        /* Not in OMAP2420 */
594 827df9f3 balrog
# define OMAP24XX_DMA_DES_TX                11        /* Not in OMAP2420 */
595 827df9f3 balrog
# define OMAP24XX_DMA_DES_RX                12        /* Not in OMAP2420 */
596 827df9f3 balrog
# define OMAP24XX_DMA_SHA1MD5_RX        13        /* Not in OMAP2420 */
597 827df9f3 balrog
# define OMAP24XX_DMA_EXT_DMAREQ2        14
598 827df9f3 balrog
# define OMAP24XX_DMA_EXT_DMAREQ3        15
599 827df9f3 balrog
# define OMAP24XX_DMA_EXT_DMAREQ4        16
600 827df9f3 balrog
# define OMAP24XX_DMA_EAC_AC_RD                17
601 827df9f3 balrog
# define OMAP24XX_DMA_EAC_AC_WR                18
602 827df9f3 balrog
# define OMAP24XX_DMA_EAC_MD_UL_RD        19
603 827df9f3 balrog
# define OMAP24XX_DMA_EAC_MD_UL_WR        20
604 827df9f3 balrog
# define OMAP24XX_DMA_EAC_MD_DL_RD        21
605 827df9f3 balrog
# define OMAP24XX_DMA_EAC_MD_DL_WR        22
606 827df9f3 balrog
# define OMAP24XX_DMA_EAC_BT_UL_RD        23
607 827df9f3 balrog
# define OMAP24XX_DMA_EAC_BT_UL_WR        24
608 827df9f3 balrog
# define OMAP24XX_DMA_EAC_BT_DL_RD        25
609 827df9f3 balrog
# define OMAP24XX_DMA_EAC_BT_DL_WR        26
610 827df9f3 balrog
# define OMAP24XX_DMA_I2C1_TX                27
611 827df9f3 balrog
# define OMAP24XX_DMA_I2C1_RX                28
612 827df9f3 balrog
# define OMAP24XX_DMA_I2C2_TX                29
613 827df9f3 balrog
# define OMAP24XX_DMA_I2C2_RX                30
614 827df9f3 balrog
# define OMAP24XX_DMA_MCBSP1_TX                31
615 827df9f3 balrog
# define OMAP24XX_DMA_MCBSP1_RX                32
616 827df9f3 balrog
# define OMAP24XX_DMA_MCBSP2_TX                33
617 827df9f3 balrog
# define OMAP24XX_DMA_MCBSP2_RX                34
618 827df9f3 balrog
# define OMAP24XX_DMA_SPI1_TX0                35
619 827df9f3 balrog
# define OMAP24XX_DMA_SPI1_RX0                36
620 827df9f3 balrog
# define OMAP24XX_DMA_SPI1_TX1                37
621 827df9f3 balrog
# define OMAP24XX_DMA_SPI1_RX1                38
622 827df9f3 balrog
# define OMAP24XX_DMA_SPI1_TX2                39
623 827df9f3 balrog
# define OMAP24XX_DMA_SPI1_RX2                40
624 827df9f3 balrog
# define OMAP24XX_DMA_SPI1_TX3                41
625 827df9f3 balrog
# define OMAP24XX_DMA_SPI1_RX3                42
626 827df9f3 balrog
# define OMAP24XX_DMA_SPI2_TX0                43
627 827df9f3 balrog
# define OMAP24XX_DMA_SPI2_RX0                44
628 827df9f3 balrog
# define OMAP24XX_DMA_SPI2_TX1                45
629 827df9f3 balrog
# define OMAP24XX_DMA_SPI2_RX1                46
630 827df9f3 balrog
631 827df9f3 balrog
# define OMAP24XX_DMA_UART1_TX                49
632 827df9f3 balrog
# define OMAP24XX_DMA_UART1_RX                50
633 827df9f3 balrog
# define OMAP24XX_DMA_UART2_TX                51
634 827df9f3 balrog
# define OMAP24XX_DMA_UART2_RX                52
635 827df9f3 balrog
# define OMAP24XX_DMA_UART3_TX                53
636 827df9f3 balrog
# define OMAP24XX_DMA_UART3_RX                54
637 827df9f3 balrog
# define OMAP24XX_DMA_USB_W2FC_TX0        55
638 827df9f3 balrog
# define OMAP24XX_DMA_USB_W2FC_RX0        56
639 827df9f3 balrog
# define OMAP24XX_DMA_USB_W2FC_TX1        57
640 827df9f3 balrog
# define OMAP24XX_DMA_USB_W2FC_RX1        58
641 827df9f3 balrog
# define OMAP24XX_DMA_USB_W2FC_TX2        59
642 827df9f3 balrog
# define OMAP24XX_DMA_USB_W2FC_RX2        60
643 827df9f3 balrog
# define OMAP24XX_DMA_MMC1_TX                61
644 827df9f3 balrog
# define OMAP24XX_DMA_MMC1_RX                62
645 827df9f3 balrog
# define OMAP24XX_DMA_MS                63        /* Not in OMAP2420 */
646 827df9f3 balrog
# define OMAP24XX_DMA_EXT_DMAREQ5        64
647 827df9f3 balrog
648 b4e3104b balrog
/* omap[123].c */
649 c58d37cf cmchao
/* OMAP2 gp timer */
650 827df9f3 balrog
struct omap_gp_timer_s;
651 827df9f3 balrog
struct omap_gp_timer_s *omap_gp_timer_init(struct omap_target_agent_s *ta,
652 827df9f3 balrog
                qemu_irq irq, omap_clk fclk, omap_clk iclk);
653 c58d37cf cmchao
void omap_gp_timer_reset(struct omap_gp_timer_s *s);
654 827df9f3 balrog
655 011d87d0 cmchao
/* OMAP2 sysctimer */
656 011d87d0 cmchao
struct omap_synctimer_s;
657 011d87d0 cmchao
struct omap_synctimer_s *omap_synctimer_init(struct omap_target_agent_s *ta,
658 827df9f3 balrog
                struct omap_mpu_state_s *mpu, omap_clk fclk, omap_clk iclk);
659 011d87d0 cmchao
void omap_synctimer_reset(struct omap_synctimer_s *s);
660 827df9f3 balrog
661 c3d2689d balrog
struct omap_uart_s;
662 c227f099 Anthony Liguori
struct omap_uart_s *omap_uart_init(target_phys_addr_t base,
663 827df9f3 balrog
                qemu_irq irq, omap_clk fclk, omap_clk iclk,
664 6a8aabd3 Stefan Weil
                qemu_irq txdma, qemu_irq rxdma,
665 6a8aabd3 Stefan Weil
                const char *label, CharDriverState *chr);
666 aee39503 Avi Kivity
struct omap_uart_s *omap2_uart_init(MemoryRegion *sysmem,
667 aee39503 Avi Kivity
                struct omap_target_agent_s *ta,
668 827df9f3 balrog
                qemu_irq irq, omap_clk fclk, omap_clk iclk,
669 6a8aabd3 Stefan Weil
                qemu_irq txdma, qemu_irq rxdma,
670 6a8aabd3 Stefan Weil
                const char *label, CharDriverState *chr);
671 827df9f3 balrog
void omap_uart_reset(struct omap_uart_s *s);
672 75554a3c balrog
void omap_uart_attach(struct omap_uart_s *s, CharDriverState *chr);
673 c3d2689d balrog
674 fe71e81a balrog
struct omap_mpuio_s;
675 fe71e81a balrog
qemu_irq *omap_mpuio_in_get(struct omap_mpuio_s *s);
676 fe71e81a balrog
void omap_mpuio_out_set(struct omap_mpuio_s *s, int line, qemu_irq handler);
677 fe71e81a balrog
void omap_mpuio_key(struct omap_mpuio_s *s, int row, int col, int down);
678 fe71e81a balrog
679 bc24a225 Paul Brook
struct uWireSlave {
680 d951f6ff balrog
    uint16_t (*receive)(void *opaque);
681 d951f6ff balrog
    void (*send)(void *opaque, uint16_t data);
682 d951f6ff balrog
    void *opaque;
683 d951f6ff balrog
};
684 d951f6ff balrog
struct omap_uwire_s;
685 d951f6ff balrog
void omap_uwire_attach(struct omap_uwire_s *s,
686 bc24a225 Paul Brook
                uWireSlave *slave, int chipselect);
687 d951f6ff balrog
688 2d08cc7c cmchao
/* OMAP2 spi */
689 827df9f3 balrog
struct omap_mcspi_s;
690 827df9f3 balrog
struct omap_mcspi_s *omap_mcspi_init(struct omap_target_agent_s *ta, int chnum,
691 827df9f3 balrog
                qemu_irq irq, qemu_irq *drq, omap_clk fclk, omap_clk iclk);
692 827df9f3 balrog
void omap_mcspi_attach(struct omap_mcspi_s *s,
693 e927bb00 balrog
                uint32_t (*txrx)(void *opaque, uint32_t, int), void *opaque,
694 827df9f3 balrog
                int chipselect);
695 2d08cc7c cmchao
void omap_mcspi_reset(struct omap_mcspi_s *s);
696 827df9f3 balrog
697 bc24a225 Paul Brook
struct I2SCodec {
698 d8f699cb balrog
    void *opaque;
699 d8f699cb balrog
700 d8f699cb balrog
    /* The CPU can call this if it is generating the clock signal on the
701 d8f699cb balrog
     * i2s port.  The CODEC can ignore it if it is set up as a clock
702 d8f699cb balrog
     * master and generates its own clock.  */
703 d8f699cb balrog
    void (*set_rate)(void *opaque, int in, int out);
704 d8f699cb balrog
705 d8f699cb balrog
    void (*tx_swallow)(void *opaque);
706 d8f699cb balrog
    qemu_irq rx_swallow;
707 d8f699cb balrog
    qemu_irq tx_start;
708 d8f699cb balrog
709 73560bc8 balrog
    int tx_rate;
710 73560bc8 balrog
    int cts;
711 73560bc8 balrog
    int rx_rate;
712 73560bc8 balrog
    int rts;
713 73560bc8 balrog
714 d8f699cb balrog
    struct i2s_fifo_s {
715 d8f699cb balrog
        uint8_t *fifo;
716 d8f699cb balrog
        int len;
717 d8f699cb balrog
        int start;
718 d8f699cb balrog
        int size;
719 d8f699cb balrog
    } in, out;
720 d8f699cb balrog
};
721 d8f699cb balrog
struct omap_mcbsp_s;
722 bc24a225 Paul Brook
void omap_mcbsp_i2s_attach(struct omap_mcbsp_s *s, I2SCodec *slave);
723 d8f699cb balrog
724 827df9f3 balrog
void omap_tap_init(struct omap_target_agent_s *ta,
725 827df9f3 balrog
                struct omap_mpu_state_s *mpu);
726 827df9f3 balrog
727 c3d2689d balrog
/* omap_lcdc.c */
728 c3d2689d balrog
struct omap_lcd_panel_s;
729 c3d2689d balrog
void omap_lcdc_reset(struct omap_lcd_panel_s *s);
730 30af1ec7 Benoît Canet
struct omap_lcd_panel_s *omap_lcdc_init(MemoryRegion *sysmem,
731 30af1ec7 Benoît Canet
                                        target_phys_addr_t base,
732 30af1ec7 Benoît Canet
                                        qemu_irq irq,
733 30af1ec7 Benoît Canet
                                        struct omap_dma_lcd_channel_s *dma,
734 30af1ec7 Benoît Canet
                                        omap_clk clk);
735 c3d2689d balrog
736 827df9f3 balrog
/* omap_dss.c */
737 827df9f3 balrog
struct rfbi_chip_s {
738 827df9f3 balrog
    void *opaque;
739 827df9f3 balrog
    void (*write)(void *opaque, int dc, uint16_t value);
740 827df9f3 balrog
    void (*block)(void *opaque, int dc, void *buf, size_t len, int pitch);
741 827df9f3 balrog
    uint16_t (*read)(void *opaque, int dc);
742 827df9f3 balrog
};
743 827df9f3 balrog
struct omap_dss_s;
744 827df9f3 balrog
void omap_dss_reset(struct omap_dss_s *s);
745 827df9f3 balrog
struct omap_dss_s *omap_dss_init(struct omap_target_agent_s *ta,
746 4852e5d8 Avi Kivity
                MemoryRegion *sysmem,
747 c227f099 Anthony Liguori
                target_phys_addr_t l3_base,
748 827df9f3 balrog
                qemu_irq irq, qemu_irq drq,
749 827df9f3 balrog
                omap_clk fck1, omap_clk fck2, omap_clk ck54m,
750 827df9f3 balrog
                omap_clk ick1, omap_clk ick2);
751 827df9f3 balrog
void omap_rfbi_attach(struct omap_dss_s *s, int cs, struct rfbi_chip_s *chip);
752 827df9f3 balrog
753 b30bb3a2 balrog
/* omap_mmc.c */
754 b30bb3a2 balrog
struct omap_mmc_s;
755 c227f099 Anthony Liguori
struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base,
756 c304fed7 Avi Kivity
                MemoryRegion *sysmem,
757 87ecb68b pbrook
                BlockDriverState *bd,
758 b30bb3a2 balrog
                qemu_irq irq, qemu_irq dma[], omap_clk clk);
759 827df9f3 balrog
struct omap_mmc_s *omap2_mmc_init(struct omap_target_agent_s *ta,
760 827df9f3 balrog
                BlockDriverState *bd, qemu_irq irq, qemu_irq dma[],
761 827df9f3 balrog
                omap_clk fclk, omap_clk iclk);
762 b30bb3a2 balrog
void omap_mmc_reset(struct omap_mmc_s *s);
763 8e129e07 balrog
void omap_mmc_handlers(struct omap_mmc_s *s, qemu_irq ro, qemu_irq cover);
764 827df9f3 balrog
void omap_mmc_enable(struct omap_mmc_s *s, int enable);
765 b30bb3a2 balrog
766 02645926 balrog
/* omap_i2c.c */
767 54e17933 Juha Riihimäki
i2c_bus *omap_i2c_bus(DeviceState *omap_i2c);
768 02645926 balrog
769 c3d2689d balrog
# define cpu_is_omap310(cpu)                (cpu->mpu_model == omap310)
770 c3d2689d balrog
# define cpu_is_omap1510(cpu)                (cpu->mpu_model == omap1510)
771 827df9f3 balrog
# define cpu_is_omap1610(cpu)                (cpu->mpu_model == omap1610)
772 827df9f3 balrog
# define cpu_is_omap1710(cpu)                (cpu->mpu_model == omap1710)
773 827df9f3 balrog
# define cpu_is_omap2410(cpu)                (cpu->mpu_model == omap2410)
774 827df9f3 balrog
# define cpu_is_omap2420(cpu)                (cpu->mpu_model == omap2420)
775 827df9f3 balrog
# define cpu_is_omap2430(cpu)                (cpu->mpu_model == omap2430)
776 827df9f3 balrog
# define cpu_is_omap3430(cpu)                (cpu->mpu_model == omap3430)
777 f13e656e Peter Maydell
# define cpu_is_omap3630(cpu)           (cpu->mpu_model == omap3630)
778 827df9f3 balrog
779 c3d2689d balrog
# define cpu_is_omap15xx(cpu)                \
780 c3d2689d balrog
        (cpu_is_omap310(cpu) || cpu_is_omap1510(cpu))
781 827df9f3 balrog
# define cpu_is_omap16xx(cpu)                \
782 827df9f3 balrog
        (cpu_is_omap1610(cpu) || cpu_is_omap1710(cpu))
783 827df9f3 balrog
# define cpu_is_omap24xx(cpu)                \
784 827df9f3 balrog
        (cpu_is_omap2410(cpu) || cpu_is_omap2420(cpu) || cpu_is_omap2430(cpu))
785 827df9f3 balrog
786 827df9f3 balrog
# define cpu_class_omap1(cpu)                \
787 827df9f3 balrog
        (cpu_is_omap15xx(cpu) || cpu_is_omap16xx(cpu))
788 827df9f3 balrog
# define cpu_class_omap2(cpu)                cpu_is_omap24xx(cpu)
789 f13e656e Peter Maydell
# define cpu_class_omap3(cpu) \
790 f13e656e Peter Maydell
        (cpu_is_omap3430(cpu) || cpu_is_omap3630(cpu))
791 c3d2689d balrog
792 c3d2689d balrog
struct omap_mpu_state_s {
793 827df9f3 balrog
    enum omap_mpu_model {
794 c3d2689d balrog
        omap310,
795 c3d2689d balrog
        omap1510,
796 827df9f3 balrog
        omap1610,
797 827df9f3 balrog
        omap1710,
798 827df9f3 balrog
        omap2410,
799 827df9f3 balrog
        omap2420,
800 827df9f3 balrog
        omap2422,
801 827df9f3 balrog
        omap2423,
802 827df9f3 balrog
        omap2430,
803 827df9f3 balrog
        omap3430,
804 f13e656e Peter Maydell
        omap3630,
805 c3d2689d balrog
    } mpu_model;
806 c3d2689d balrog
807 5f4ef08b Andreas Färber
    ARMCPU *cpu;
808 c3d2689d balrog
809 c3d2689d balrog
    qemu_irq *drq;
810 c3d2689d balrog
811 c3d2689d balrog
    qemu_irq wakeup;
812 c3d2689d balrog
813 4b3fedf3 Avi Kivity
    MemoryRegion ulpd_pm_iomem;
814 4b3fedf3 Avi Kivity
    MemoryRegion pin_cfg_iomem;
815 4b3fedf3 Avi Kivity
    MemoryRegion id_iomem;
816 4b3fedf3 Avi Kivity
    MemoryRegion id_iomem_e18;
817 4b3fedf3 Avi Kivity
    MemoryRegion id_iomem_ed4;
818 4b3fedf3 Avi Kivity
    MemoryRegion id_iomem_e20;
819 4b3fedf3 Avi Kivity
    MemoryRegion mpui_iomem;
820 e7aa0ae0 Avi Kivity
    MemoryRegion tcmi_iomem;
821 e7aa0ae0 Avi Kivity
    MemoryRegion clkm_iomem;
822 e7aa0ae0 Avi Kivity
    MemoryRegion clkdsp_iomem;
823 60fe76e3 Avi Kivity
    MemoryRegion mpui_io_iomem;
824 0a9ee1a7 Avi Kivity
    MemoryRegion tap_iomem;
825 2654c962 Avi Kivity
    MemoryRegion imif_ram;
826 2654c962 Avi Kivity
    MemoryRegion emiff_ram;
827 011a98a1 Avi Kivity
    MemoryRegion sdram;
828 011a98a1 Avi Kivity
    MemoryRegion sram;
829 4b3fedf3 Avi Kivity
830 c3d2689d balrog
    struct omap_dma_port_if_s {
831 5fafdf24 ths
        uint32_t (*read[3])(struct omap_mpu_state_s *s,
832 c227f099 Anthony Liguori
                        target_phys_addr_t offset);
833 c3d2689d balrog
        void (*write[3])(struct omap_mpu_state_s *s,
834 c227f099 Anthony Liguori
                        target_phys_addr_t offset, uint32_t value);
835 c3d2689d balrog
        int (*addr_valid)(struct omap_mpu_state_s *s,
836 c227f099 Anthony Liguori
                        target_phys_addr_t addr);
837 827df9f3 balrog
    } port[__omap_dma_port_last];
838 c3d2689d balrog
839 c3d2689d balrog
    unsigned long sdram_size;
840 c3d2689d balrog
    unsigned long sram_size;
841 c3d2689d balrog
842 c3d2689d balrog
    /* MPUI-TIPB peripherals */
843 d951f6ff balrog
    struct omap_uart_s *uart[3];
844 d951f6ff balrog
845 77831c20 Juha Riihimäki
    DeviceState *gpio;
846 c3d2689d balrog
847 d8f699cb balrog
    struct omap_mcbsp_s *mcbsp1;
848 d8f699cb balrog
    struct omap_mcbsp_s *mcbsp3;
849 d8f699cb balrog
850 c3d2689d balrog
    /* MPU public TIPB peripherals */
851 c3d2689d balrog
    struct omap_32khz_timer_s *os_timer;
852 c3d2689d balrog
853 b30bb3a2 balrog
    struct omap_mmc_s *mmc;
854 b30bb3a2 balrog
855 d951f6ff balrog
    struct omap_mpuio_s *mpuio;
856 d951f6ff balrog
857 d951f6ff balrog
    struct omap_uwire_s *microwire;
858 d951f6ff balrog
859 8717d88a Juha Riihimäki
    struct omap_pwl_s *pwl;
860 03759534 Juha Riihimäki
    struct omap_pwt_s *pwt;
861 54e17933 Juha Riihimäki
    DeviceState *i2c[2];
862 4a2c8ac2 balrog
863 02645926 balrog
    struct omap_rtc_s *rtc;
864 02645926 balrog
865 d8f699cb balrog
    struct omap_mcbsp_s *mcbsp2;
866 d8f699cb balrog
867 f9d43072 balrog
    struct omap_lpg_s *led[2];
868 f9d43072 balrog
869 c3d2689d balrog
    /* MPU private TIPB peripherals */
870 0919ac78 Peter Maydell
    DeviceState *ih[2];
871 c3d2689d balrog
872 afbb5194 balrog
    struct soc_dma_s *dma;
873 c3d2689d balrog
874 c3d2689d balrog
    struct omap_mpu_timer_s *timer[3];
875 c3d2689d balrog
    struct omap_watchdog_timer_s *wdt;
876 c3d2689d balrog
877 c3d2689d balrog
    struct omap_lcd_panel_s *lcd;
878 c3d2689d balrog
879 c3d2689d balrog
    uint32_t ulpd_pm_regs[21];
880 c3d2689d balrog
    int64_t ulpd_gauge_start;
881 c3d2689d balrog
882 c3d2689d balrog
    uint32_t func_mux_ctrl[14];
883 c3d2689d balrog
    uint32_t comp_mode_ctrl[1];
884 c3d2689d balrog
    uint32_t pull_dwn_ctrl[4];
885 c3d2689d balrog
    uint32_t gate_inh_ctrl[1];
886 c3d2689d balrog
    uint32_t voltage_ctrl[1];
887 c3d2689d balrog
    uint32_t test_dbg_ctrl[1];
888 c3d2689d balrog
    uint32_t mod_conf_ctrl[1];
889 c3d2689d balrog
    int compat1509;
890 c3d2689d balrog
891 c3d2689d balrog
    uint32_t mpui_ctrl;
892 c3d2689d balrog
893 c3d2689d balrog
    struct omap_tipb_bridge_s *private_tipb;
894 c3d2689d balrog
    struct omap_tipb_bridge_s *public_tipb;
895 c3d2689d balrog
896 c3d2689d balrog
    uint32_t tcmi_regs[17];
897 c3d2689d balrog
898 b9f7bc40 Juha Riihimäki
    struct dpll_ctl_s *dpll[3];
899 c3d2689d balrog
900 c3d2689d balrog
    omap_clk clks;
901 c3d2689d balrog
    struct {
902 c3d2689d balrog
        int cold_start;
903 c3d2689d balrog
        int clocking_scheme;
904 c3d2689d balrog
        uint16_t arm_ckctl;
905 c3d2689d balrog
        uint16_t arm_idlect1;
906 c3d2689d balrog
        uint16_t arm_idlect2;
907 c3d2689d balrog
        uint16_t arm_ewupct;
908 c3d2689d balrog
        uint16_t arm_rstct1;
909 c3d2689d balrog
        uint16_t arm_rstct2;
910 c3d2689d balrog
        uint16_t arm_ckout1;
911 c3d2689d balrog
        int dpll1_mode;
912 c3d2689d balrog
        uint16_t dsp_idlect1;
913 c3d2689d balrog
        uint16_t dsp_idlect2;
914 c3d2689d balrog
        uint16_t dsp_rstct2;
915 c3d2689d balrog
    } clkm;
916 827df9f3 balrog
917 827df9f3 balrog
    /* OMAP2-only peripherals */
918 827df9f3 balrog
    struct omap_l4_s *l4;
919 827df9f3 balrog
920 827df9f3 balrog
    struct omap_gp_timer_s *gptimer[12];
921 011d87d0 cmchao
    struct omap_synctimer_s *synctimer;
922 827df9f3 balrog
923 827df9f3 balrog
    struct omap_prcm_s *prcm;
924 827df9f3 balrog
    struct omap_sdrc_s *sdrc;
925 827df9f3 balrog
    struct omap_gpmc_s *gpmc;
926 827df9f3 balrog
    struct omap_sysctl_s *sysc;
927 827df9f3 balrog
928 827df9f3 balrog
    struct omap_mcspi_s *mcspi[2];
929 827df9f3 balrog
930 827df9f3 balrog
    struct omap_dss_s *dss;
931 99570a40 balrog
932 99570a40 balrog
    struct omap_eac_s *eac;
933 827df9f3 balrog
};
934 827df9f3 balrog
935 827df9f3 balrog
/* omap1.c */
936 4b3fedf3 Avi Kivity
struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion *system_memory,
937 4b3fedf3 Avi Kivity
                unsigned long sdram_size,
938 3023f332 aliguori
                const char *core);
939 827df9f3 balrog
940 827df9f3 balrog
/* omap2.c */
941 aee39503 Avi Kivity
struct omap_mpu_state_s *omap2420_mpu_init(MemoryRegion *sysmem,
942 aee39503 Avi Kivity
                unsigned long sdram_size,
943 3023f332 aliguori
                const char *core);
944 c3d2689d balrog
945 cdb30d44 Peter Maydell
#define OMAP_FMT_plx "%#08" TARGET_PRIxPHYS
946 c3d2689d balrog
947 c227f099 Anthony Liguori
uint32_t omap_badwidth_read8(void *opaque, target_phys_addr_t addr);
948 c227f099 Anthony Liguori
void omap_badwidth_write8(void *opaque, target_phys_addr_t addr,
949 9596ebb7 pbrook
                uint32_t value);
950 c227f099 Anthony Liguori
uint32_t omap_badwidth_read16(void *opaque, target_phys_addr_t addr);
951 c227f099 Anthony Liguori
void omap_badwidth_write16(void *opaque, target_phys_addr_t addr,
952 b30bb3a2 balrog
                uint32_t value);
953 c227f099 Anthony Liguori
uint32_t omap_badwidth_read32(void *opaque, target_phys_addr_t addr);
954 c227f099 Anthony Liguori
void omap_badwidth_write32(void *opaque, target_phys_addr_t addr,
955 b30bb3a2 balrog
                uint32_t value);
956 b30bb3a2 balrog
957 827df9f3 balrog
void omap_mpu_wakeup(void *opaque, int irq, int req);
958 827df9f3 balrog
959 c3d2689d balrog
# define OMAP_BAD_REG(paddr)                \
960 827df9f3 balrog
        fprintf(stderr, "%s: Bad register " OMAP_FMT_plx "\n",        \
961 827df9f3 balrog
                        __FUNCTION__, paddr)
962 c3d2689d balrog
# define OMAP_RO_REG(paddr)                \
963 827df9f3 balrog
        fprintf(stderr, "%s: Read-only register " OMAP_FMT_plx "\n",        \
964 c3d2689d balrog
                        __FUNCTION__, paddr)
965 b854bc19 balrog
966 827df9f3 balrog
/* OMAP-specific Linux bootloader tags for the ATAG_BOARD area
967 827df9f3 balrog
   (Board-specifc tags are not here)  */
968 827df9f3 balrog
#define OMAP_TAG_CLOCK                0x4f01
969 827df9f3 balrog
#define OMAP_TAG_MMC                0x4f02
970 827df9f3 balrog
#define OMAP_TAG_SERIAL_CONSOLE        0x4f03
971 827df9f3 balrog
#define OMAP_TAG_USB                0x4f04
972 827df9f3 balrog
#define OMAP_TAG_LCD                0x4f05
973 827df9f3 balrog
#define OMAP_TAG_GPIO_SWITCH        0x4f06
974 827df9f3 balrog
#define OMAP_TAG_UART                0x4f07
975 827df9f3 balrog
#define OMAP_TAG_FBMEM                0x4f08
976 827df9f3 balrog
#define OMAP_TAG_STI_CONSOLE        0x4f09
977 827df9f3 balrog
#define OMAP_TAG_CAMERA_SENSOR        0x4f0a
978 827df9f3 balrog
#define OMAP_TAG_PARTITION        0x4f0b
979 827df9f3 balrog
#define OMAP_TAG_TEA5761        0x4f10
980 827df9f3 balrog
#define OMAP_TAG_TMP105                0x4f11
981 827df9f3 balrog
#define OMAP_TAG_BOOT_REASON        0x4f80
982 827df9f3 balrog
#define OMAP_TAG_FLASH_PART_STR        0x4f81
983 827df9f3 balrog
#define OMAP_TAG_VERSION_STR        0x4f82
984 827df9f3 balrog
985 e927bb00 balrog
enum {
986 e927bb00 balrog
    OMAP_GPIOSW_TYPE_COVER        = 0 << 4,
987 e927bb00 balrog
    OMAP_GPIOSW_TYPE_CONNECTION        = 1 << 4,
988 e927bb00 balrog
    OMAP_GPIOSW_TYPE_ACTIVITY        = 2 << 4,
989 e927bb00 balrog
};
990 e927bb00 balrog
991 e927bb00 balrog
#define OMAP_GPIOSW_INVERTED        0x0001
992 e927bb00 balrog
#define OMAP_GPIOSW_OUTPUT        0x0002
993 e927bb00 balrog
994 b854bc19 balrog
# define TCMI_VERBOSE                        1
995 b854bc19 balrog
996 b854bc19 balrog
# ifdef TCMI_VERBOSE
997 b854bc19 balrog
#  define OMAP_8B_REG(paddr)                \
998 827df9f3 balrog
        fprintf(stderr, "%s: 8-bit register " OMAP_FMT_plx "\n",        \
999 66450b15 balrog
                        __FUNCTION__, paddr)
1000 b854bc19 balrog
#  define OMAP_16B_REG(paddr)                \
1001 827df9f3 balrog
        fprintf(stderr, "%s: 16-bit register " OMAP_FMT_plx "\n",        \
1002 c3d2689d balrog
                        __FUNCTION__, paddr)
1003 b854bc19 balrog
#  define OMAP_32B_REG(paddr)                \
1004 827df9f3 balrog
        fprintf(stderr, "%s: 32-bit register " OMAP_FMT_plx "\n",        \
1005 c3d2689d balrog
                        __FUNCTION__, paddr)
1006 b854bc19 balrog
# else
1007 b854bc19 balrog
#  define OMAP_8B_REG(paddr)
1008 b854bc19 balrog
#  define OMAP_16B_REG(paddr)
1009 b854bc19 balrog
#  define OMAP_32B_REG(paddr)
1010 b854bc19 balrog
# endif
1011 c3d2689d balrog
1012 cf965d24 balrog
# define OMAP_MPUI_REG_MASK                0x000007ff
1013 cf965d24 balrog
1014 c3d2689d balrog
#endif /* hw_omap_h */