mvreg.h (e11b6fa307b49a2a9ba2d0af0d80ddc103c84c10) mvreg.h (16694521fe80f54bf8f37334fe9a54bc5c953a6a)
1/*-
1/*-
2 * Copyright (C) 2007-2008 MARVELL INTERNATIONAL LTD.
2 * Copyright (C) 2007-2011 MARVELL INTERNATIONAL LTD.
3 * All rights reserved.
4 *
5 * Developed by Semihalf.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright

--- 18 unchanged lines hidden (view full) ---

29 * SUCH DAMAGE.
30 *
31 * $FreeBSD$
32 */
33
34#ifndef _MVREG_H_
35#define _MVREG_H_
36
3 * All rights reserved.
4 *
5 * Developed by Semihalf.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright

--- 18 unchanged lines hidden (view full) ---

29 * SUCH DAMAGE.
30 *
31 * $FreeBSD$
32 */
33
34#ifndef _MVREG_H_
35#define _MVREG_H_
36
37#define BRIDGE_IRQ_CAUSE 0x10
38#define BRIGDE_IRQ_MASK 0x14
39
40#if defined(SOC_MV_DISCOVERY)
41#define IRQ_CAUSE_ERROR 0x0
42#define IRQ_CAUSE 0x4
43#define IRQ_CAUSE_HI 0x8
44#define IRQ_MASK_ERROR 0xC
45#define IRQ_MASK 0x10
46#define IRQ_MASK_HI 0x14
47#define IRQ_CAUSE_SELECT 0x18
48#define FIQ_MASK_ERROR 0x1C
49#define FIQ_MASK 0x20
50#define FIQ_MASK_HI 0x24
51#define FIQ_CAUSE_SELECT 0x28
37#if defined(SOC_MV_DISCOVERY)
38#define IRQ_CAUSE_ERROR 0x0
39#define IRQ_CAUSE 0x4
40#define IRQ_CAUSE_HI 0x8
41#define IRQ_MASK_ERROR 0xC
42#define IRQ_MASK 0x10
43#define IRQ_MASK_HI 0x14
44#define IRQ_CAUSE_SELECT 0x18
45#define FIQ_MASK_ERROR 0x1C
46#define FIQ_MASK 0x20
47#define FIQ_MASK_HI 0x24
48#define FIQ_CAUSE_SELECT 0x28
52#define ENDPOINT_IRQ_MASK_ERROR 0x2C
53#define ENDPOINT_IRQ_MASK 0x30
54#define ENDPOINT_IRQ_MASK_HI 0x34
49#define ENDPOINT_IRQ_MASK_ERROR(n) 0x2C
50#define ENDPOINT_IRQ_MASK(n) 0x30
51#define ENDPOINT_IRQ_MASK_HI(n) 0x34
55#define ENDPOINT_IRQ_CAUSE_SELECT 0x38
52#define ENDPOINT_IRQ_CAUSE_SELECT 0x38
56#else /* !SOC_MV_DISCOVERY */
53#elif defined (SOC_MV_LOKIPLUS) || defined (SOC_MV_FREY)
57#define IRQ_CAUSE 0x0
58#define IRQ_MASK 0x4
59#define FIQ_MASK 0x8
54#define IRQ_CAUSE 0x0
55#define IRQ_MASK 0x4
56#define FIQ_MASK 0x8
60#define ENDPOINT_IRQ_MASK 0xC
57#define ENDPOINT_IRQ_MASK(n) (0xC + (n) * 4)
58#define IRQ_CAUSE_HI (-1) /* Fake defines for unified */
59#define IRQ_MASK_HI (-1) /* interrupt controller code */
60#define FIQ_MASK_HI (-1)
61#define ENDPOINT_IRQ_MASK_HI(n) (-1)
62#define ENDPOINT_IRQ_MASK_ERROR(n) (-1)
63#define IRQ_CAUSE_ERROR (-1)
64#define IRQ_MASK_ERROR (-1)
65#elif defined (SOC_MV_ARMADAXP)
66#define IRQ_CAUSE 0x18
67#define IRQ_MASK 0x30
68#else /* !SOC_MV_DISCOVERY && !SOC_MV_LOKIPLUS */
69#define IRQ_CAUSE 0x0
70#define IRQ_MASK 0x4
71#define FIQ_MASK 0x8
72#define ENDPOINT_IRQ_MASK(n) 0xC
61#define IRQ_CAUSE_HI 0x10
62#define IRQ_MASK_HI 0x14
63#define FIQ_MASK_HI 0x18
73#define IRQ_CAUSE_HI 0x10
74#define IRQ_MASK_HI 0x14
75#define FIQ_MASK_HI 0x18
64#define ENDPOINT_IRQ_MASK_HI 0x1C
76#define ENDPOINT_IRQ_MASK_HI(n) 0x1C
77#define ENDPOINT_IRQ_MASK_ERROR(n) (-1)
65#define IRQ_CAUSE_ERROR (-1) /* Fake defines for unified */
66#define IRQ_MASK_ERROR (-1) /* interrupt controller code */
67#endif
68
78#define IRQ_CAUSE_ERROR (-1) /* Fake defines for unified */
79#define IRQ_MASK_ERROR (-1) /* interrupt controller code */
80#endif
81
82#if defined(SOC_MV_FREY)
83#define BRIDGE_IRQ_CAUSE 0x118
84#define IRQ_TIMER0 0x00000002
85#define IRQ_TIMER1 0x00000004
86#define IRQ_TIMER_WD 0x00000008
87
88#define BRIDGE_IRQ_MASK 0x11c
89#define IRQ_TIMER0_MASK 0x00000002
90#define IRQ_TIMER1_MASK 0x00000004
91#define IRQ_TIMER_WD_MASK 0x00000008
92#elif defined(SOC_MV_ARMADAXP)
93#define BRIDGE_IRQ_CAUSE 0x68
94#define IRQ_TIMER0 0x00000001
95#define IRQ_TIMER1 0x00000002
96#define IRQ_TIMER_WD 0x00000004
97#else
69#define BRIDGE_IRQ_CAUSE 0x10
70#define IRQ_CPU_SELF 0x00000001
71#define IRQ_TIMER0 0x00000002
72#define IRQ_TIMER1 0x00000004
73#define IRQ_TIMER_WD 0x00000008
74
75#define BRIDGE_IRQ_MASK 0x14
76#define IRQ_CPU_MASK 0x00000001
77#define IRQ_TIMER0_MASK 0x00000002
78#define IRQ_TIMER1_MASK 0x00000004
79#define IRQ_TIMER_WD_MASK 0x00000008
98#define BRIDGE_IRQ_CAUSE 0x10
99#define IRQ_CPU_SELF 0x00000001
100#define IRQ_TIMER0 0x00000002
101#define IRQ_TIMER1 0x00000004
102#define IRQ_TIMER_WD 0x00000008
103
104#define BRIDGE_IRQ_MASK 0x14
105#define IRQ_CPU_MASK 0x00000001
106#define IRQ_TIMER0_MASK 0x00000002
107#define IRQ_TIMER1_MASK 0x00000004
108#define IRQ_TIMER_WD_MASK 0x00000008
109#endif
80
110
111#if defined(SOC_MV_LOKIPLUS) || defined(SOC_MV_FREY)
112#define IRQ_CPU_SELF_CLR IRQ_CPU_SELF
113#define IRQ_TIMER0_CLR IRQ_TIMER0
114#define IRQ_TIMER1_CLR IRQ_TIMER1
115#define IRQ_TIMER_WD_CLR IRQ_TIMER_WD
116#else
117#define IRQ_CPU_SELF_CLR (~IRQ_CPU_SELF)
118#define IRQ_TIMER0_CLR (~IRQ_TIMER0)
119#define IRQ_TIMER1_CLR (~IRQ_TIMER1)
120#define IRQ_TIMER_WD_CLR (~IRQ_TIMER_WD)
121#endif
122
81/*
82 * System reset
83 */
84#define RSTOUTn_MASK 0x8
85#define WD_RST_OUT_EN 0x00000002
86#define SOFT_RST_OUT_EN 0x00000004
87#define SYSTEM_SOFT_RESET 0xc
88#define SYS_SOFT_RST 0x00000001

--- 61 unchanged lines hidden (view full) ---

150#define CPU_PM_CTRL_SATA (CPU_PM_CTRL_NONE)
151#define CPU_PM_CTRL_USB(u) (CPU_PM_CTRL_NONE)
152#define CPU_PM_CTRL_GE(u) (CPU_PM_CTRL_NONE)
153#endif
154
155/*
156 * Timers
157 */
123/*
124 * System reset
125 */
126#define RSTOUTn_MASK 0x8
127#define WD_RST_OUT_EN 0x00000002
128#define SOFT_RST_OUT_EN 0x00000004
129#define SYSTEM_SOFT_RESET 0xc
130#define SYS_SOFT_RST 0x00000001

--- 61 unchanged lines hidden (view full) ---

192#define CPU_PM_CTRL_SATA (CPU_PM_CTRL_NONE)
193#define CPU_PM_CTRL_USB(u) (CPU_PM_CTRL_NONE)
194#define CPU_PM_CTRL_GE(u) (CPU_PM_CTRL_NONE)
195#endif
196
197/*
198 * Timers
199 */
200#define CPU_TIMERS_BASE 0x300
158#define CPU_TIMER_CONTROL 0x0
159#define CPU_TIMER0_EN 0x00000001
160#define CPU_TIMER0_AUTO 0x00000002
161#define CPU_TIMER1_EN 0x00000004
162#define CPU_TIMER1_AUTO 0x00000008
163#define CPU_TIMER_WD_EN 0x00000010
164#define CPU_TIMER_WD_AUTO 0x00000020
165#define CPU_TIMER0_REL 0x10

--- 11 unchanged lines hidden (view full) ---

177
178/* SATAHC registers */
179#define SATA_CR 0x000 /* Configuration Reg. */
180#define SATA_CR_NODMABS (1 << 8)
181#define SATA_CR_NOEDMABS (1 << 9)
182#define SATA_CR_NOPRDPBS (1 << 10)
183#define SATA_CR_COALDIS(ch) (1 << (24 + ch))
184
201#define CPU_TIMER_CONTROL 0x0
202#define CPU_TIMER0_EN 0x00000001
203#define CPU_TIMER0_AUTO 0x00000002
204#define CPU_TIMER1_EN 0x00000004
205#define CPU_TIMER1_AUTO 0x00000008
206#define CPU_TIMER_WD_EN 0x00000010
207#define CPU_TIMER_WD_AUTO 0x00000020
208#define CPU_TIMER0_REL 0x10

--- 11 unchanged lines hidden (view full) ---

220
221/* SATAHC registers */
222#define SATA_CR 0x000 /* Configuration Reg. */
223#define SATA_CR_NODMABS (1 << 8)
224#define SATA_CR_NOEDMABS (1 << 9)
225#define SATA_CR_NOPRDPBS (1 << 10)
226#define SATA_CR_COALDIS(ch) (1 << (24 + ch))
227
185#define SATA_ICR 0x014 /* Interrupt Cause Reg. */
228/* Interrupt Coalescing Threshold Reg. */
229#define SATA_ICTR 0x00C
230#define SATA_ICTR_MAX ((1 << 8) - 1)
231
232/* Interrupt Time Threshold Reg. */
233#define SATA_ITTR 0x010
234#define SATA_ITTR_MAX ((1 << 24) - 1)
235
236#define SATA_ICR 0x014 /* Interrupt Cause Reg. */
186#define SATA_ICR_DMADONE(ch) (1 << (ch))
187#define SATA_ICR_COAL (1 << 4)
188#define SATA_ICR_DEV(ch) (1 << (8 + ch))
189
190#define SATA_MICR 0x020 /* Main Interrupt Cause Reg. */
191#define SATA_MICR_ERR(ch) (1 << (2 * ch))
192#define SATA_MICR_DONE(ch) (1 << ((2 * ch) + 1))
193#define SATA_MICR_DMADONE(ch) (1 << (4 + ch))

--- 72 unchanged lines hidden (view full) ---

266#define MV_GPIO_OUT_BLINK 0x1
267#define MV_GPIO_OUT_OPEN_DRAIN 0x2
268#define MV_GPIO_OUT_OPEN_SRC 0x4
269
270#define IS_GPIO_IRQ(irq) ((irq) >= NIRQ && (irq) < NIRQ + MV_GPIO_MAX_NPINS)
271#define GPIO2IRQ(gpio) ((gpio) + NIRQ)
272#define IRQ2GPIO(irq) ((irq) - NIRQ)
273
237#define SATA_ICR_DMADONE(ch) (1 << (ch))
238#define SATA_ICR_COAL (1 << 4)
239#define SATA_ICR_DEV(ch) (1 << (8 + ch))
240
241#define SATA_MICR 0x020 /* Main Interrupt Cause Reg. */
242#define SATA_MICR_ERR(ch) (1 << (2 * ch))
243#define SATA_MICR_DONE(ch) (1 << ((2 * ch) + 1))
244#define SATA_MICR_DMADONE(ch) (1 << (4 + ch))

--- 72 unchanged lines hidden (view full) ---

317#define MV_GPIO_OUT_BLINK 0x1
318#define MV_GPIO_OUT_OPEN_DRAIN 0x2
319#define MV_GPIO_OUT_OPEN_SRC 0x4
320
321#define IS_GPIO_IRQ(irq) ((irq) >= NIRQ && (irq) < NIRQ + MV_GPIO_MAX_NPINS)
322#define GPIO2IRQ(gpio) ((gpio) + NIRQ)
323#define IRQ2GPIO(irq) ((irq) - NIRQ)
324
274/*
275 * MPP
276 */
277#if defined(SOC_MV_ORION)
278#define MPP_CONTROL0 0x00
279#define MPP_CONTROL1 0x04
280#define MPP_CONTROL2 0x50
281#elif defined(SOC_MV_KIRKWOOD) || defined(SOC_MV_DISCOVERY)
282#define MPP_CONTROL0 0x00
283#define MPP_CONTROL1 0x04
284#define MPP_CONTROL2 0x08
285#define MPP_CONTROL3 0x0C
286#define MPP_CONTROL4 0x10
287#define MPP_CONTROL5 0x14
288#define MPP_CONTROL6 0x18
289#else
290#error SOC_MV_XX not defined
291#endif
292
293#if defined(SOC_MV_ORION)
325#if defined(SOC_MV_ORION) || defined(SOC_MV_LOKIPLUS)
294#define SAMPLE_AT_RESET 0x10
295#elif defined(SOC_MV_KIRKWOOD)
296#define SAMPLE_AT_RESET 0x30
297#elif defined(SOC_MV_DISCOVERY)
298#define SAMPLE_AT_RESET_LO 0x30
299#define SAMPLE_AT_RESET_HI 0x34
326#define SAMPLE_AT_RESET 0x10
327#elif defined(SOC_MV_KIRKWOOD)
328#define SAMPLE_AT_RESET 0x30
329#elif defined(SOC_MV_DISCOVERY)
330#define SAMPLE_AT_RESET_LO 0x30
331#define SAMPLE_AT_RESET_HI 0x34
300#else
301#error SOC_MV_XX not defined
332#elif defined(SOC_MV_DOVE)
333#define SAMPLE_AT_RESET_LO 0x14
334#define SAMPLE_AT_RESET_HI 0x18
335#elif defined(SOC_MV_FREY)
336#define SAMPLE_AT_RESET 0x100
302#endif
303
304/*
305 * Clocks
306 */
307#if defined(SOC_MV_ORION)
308#define TCLK_MASK 0x00000300
309#define TCLK_SHIFT 0x08
310#elif defined(SOC_MV_DISCOVERY)
311#define TCLK_MASK 0x00000180
312#define TCLK_SHIFT 0x07
337#endif
338
339/*
340 * Clocks
341 */
342#if defined(SOC_MV_ORION)
343#define TCLK_MASK 0x00000300
344#define TCLK_SHIFT 0x08
345#elif defined(SOC_MV_DISCOVERY)
346#define TCLK_MASK 0x00000180
347#define TCLK_SHIFT 0x07
348#elif defined(SOC_MV_LOKIPLUS)
349#define TCLK_MASK 0x0000F000
350#define TCLK_SHIFT 0x0C
313#endif
314
315#define TCLK_100MHZ 100000000
316#define TCLK_125MHZ 125000000
317#define TCLK_133MHZ 133333333
318#define TCLK_150MHZ 150000000
319#define TCLK_166MHZ 166666667
320#define TCLK_200MHZ 200000000
351#endif
352
353#define TCLK_100MHZ 100000000
354#define TCLK_125MHZ 125000000
355#define TCLK_133MHZ 133333333
356#define TCLK_150MHZ 150000000
357#define TCLK_166MHZ 166666667
358#define TCLK_200MHZ 200000000
359#define TCLK_250MHZ 250000000
360#define TCLK_300MHZ 300000000
361#define TCLK_667MHZ 667000000
321
322/*
362
363/*
364 * CPU Cache Configuration
365 */
366
367#define CPU_CONFIG 0x00000000
368#define CPU_CONFIG_IC_PREF 0x00010000
369#define CPU_CONFIG_DC_PREF 0x00020000
370#define CPU_CONTROL 0x00000004
371#define CPU_CONTROL_L2_SIZE 0x00200000 /* Only on Discovery */
372#define CPU_CONTROL_L2_MODE 0x00020000 /* Only on Discovery */
373#define CPU_L2_CONFIG 0x00000028 /* Only on Kirkwood */
374#define CPU_L2_CONFIG_MODE 0x00000010 /* Only on Kirkwood */
375
376/*
377 * PCI Express port control (CPU Control registers)
378 */
379#define CPU_CONTROL_PCIE_DISABLE(n) (1 << (3 * (n)))
380
381/*
382 * Vendor ID
383 */
384#define PCI_VENDORID_MRVL 0x11AB
385#define PCI_VENDORID_MRVL2 0x1B4B
386
387/*
323 * Chip ID
324 */
325#define MV_DEV_88F5181 0x5181
326#define MV_DEV_88F5182 0x5182
327#define MV_DEV_88F5281 0x5281
328#define MV_DEV_88F6281 0x6281
388 * Chip ID
389 */
390#define MV_DEV_88F5181 0x5181
391#define MV_DEV_88F5182 0x5182
392#define MV_DEV_88F5281 0x5281
393#define MV_DEV_88F6281 0x6281
394#define MV_DEV_88F6781 0x6781
329#define MV_DEV_88F6282 0x6282
330#define MV_DEV_MV78100_Z0 0x6381
331#define MV_DEV_MV78100 0x7810
395#define MV_DEV_88F6282 0x6282
396#define MV_DEV_MV78100_Z0 0x6381
397#define MV_DEV_MV78100 0x7810
398#define MV_DEV_MV78130 0x7813
399#define MV_DEV_MV78160 0x7816
400#define MV_DEV_MV78230 0x7823
401#define MV_DEV_MV78260 0x7826
402#define MV_DEV_MV78460 0x7846
403#define MV_DEV_88RC8180 0x8180
404#define MV_DEV_88RC9480 0x9480
405#define MV_DEV_88RC9580 0x9580
332
406
407#define MV_DEV_FAMILY_MASK 0xff00
408#define MV_DEV_DISCOVERY 0x7800
409
410/*
411 * Doorbell register control
412 */
413#define MV_DRBL_PCIE_TO_CPU 0
414#define MV_DRBL_CPU_TO_PCIE 1
415
416#if defined(SOC_MV_FREY)
417#define MV_DRBL_CAUSE(d,u) (0x60 + 0x20 * (d) + 0x8 * (u))
418#define MV_DRBL_MASK(d,u) (0x60 + 0x20 * (d) + 0x8 * (u) + 0x4)
419#define MV_DRBL_MSG(m,d,u) (0x8 * (u) + 0x20 * (d) + 0x4 * (m))
420#else
421#define MV_DRBL_CAUSE(d,u) (0x10 * (u) + 0x8 * (d))
422#define MV_DRBL_MASK(d,u) (0x10 * (u) + 0x8 * (d) + 0x4)
423#define MV_DRBL_MSG(m,d,u) (0x10 * (u) + 0x8 * (d) + 0x4 * (m) + 0x30)
424#endif
333#endif /* _MVREG_H_ */
425#endif /* _MVREG_H_ */