diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-17 19:38:06 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-17 19:38:06 -0500 |
commit | dbfc985195410dad803c845743c63cd73bd1fe32 (patch) | |
tree | 6bf6dbecb92539285ebb89948e63e691a0947941 /arch/mips/include | |
parent | 7c508e50be47737b9a72d0f15c3ef1146925e2d2 (diff) | |
parent | 606d62fa02cf1da43c6e21521650fff07a2e56d1 (diff) |
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (71 commits)
MIPS: Lasat: Fix botched changes to sysctl code.
RTC: rtc-cmos.c: Fix warning on MIPS
MIPS: Cleanup random differences beween lmo and Linus' kernel.
MIPS: No longer hardwire CONFIG_EMBEDDED to y
MIPS: Fix and enhance built-in kernel command line
MIPS: eXcite: Remove platform.
MIPS: Loongson: Cleanups of serial port support
MIPS: Lemote 2F: Suspend CS5536 MFGPT Timer
MIPS: Excite: move iodev_remove to .devexit.text
MIPS: Lasat: Convert to proc_fops / seq_file
MIPS: Cleanup signal code initialization
MIPS: Modularize COP2 handling
MIPS: Move EARLY_PRINTK to Kconfig.debug
MIPS: Yeeloong 2F: Cleanup reset logic using the new ec_write function
MIPS: Yeeloong 2F: Add LID open event as the wakeup event
MIPS: Yeeloong 2F: Add basic EC operations
MIPS: Move several variables from .bss to .init.data
MIPS: Tracing: Make function graph tracer work with -mmcount-ra-address
MIPS: Tracing: Reserve $12(t0) for mcount-ra-address of gcc 4.5
MIPS: Tracing: Make ftrace for MIPS work without -fno-omit-frame-pointer
...
Diffstat (limited to 'arch/mips/include')
41 files changed, 3535 insertions, 451 deletions
diff --git a/arch/mips/include/asm/bootinfo.h b/arch/mips/include/asm/bootinfo.h index f5dfaf6a1606..09eee09780f2 100644 --- a/arch/mips/include/asm/bootinfo.h +++ b/arch/mips/include/asm/bootinfo.h | |||
@@ -67,9 +67,9 @@ | |||
67 | #define MACH_LEMOTE_ML2F7 3 | 67 | #define MACH_LEMOTE_ML2F7 3 |
68 | #define MACH_LEMOTE_YL2F89 4 | 68 | #define MACH_LEMOTE_YL2F89 4 |
69 | #define MACH_DEXXON_GDIUM2F10 5 | 69 | #define MACH_DEXXON_GDIUM2F10 5 |
70 | #define MACH_LOONGSON_END 6 | 70 | #define MACH_LEMOTE_NAS 6 |
71 | 71 | #define MACH_LEMOTE_LL2F 7 | |
72 | #define CL_SIZE COMMAND_LINE_SIZE | 72 | #define MACH_LOONGSON_END 8 |
73 | 73 | ||
74 | extern char *system_type; | 74 | extern char *system_type; |
75 | const char *get_system_type(void); | 75 | const char *get_system_type(void); |
@@ -107,7 +107,7 @@ extern void free_init_pages(const char *what, | |||
107 | /* | 107 | /* |
108 | * Initial kernel command line, usually setup by prom_init() | 108 | * Initial kernel command line, usually setup by prom_init() |
109 | */ | 109 | */ |
110 | extern char arcs_cmdline[CL_SIZE]; | 110 | extern char arcs_cmdline[COMMAND_LINE_SIZE]; |
111 | 111 | ||
112 | /* | 112 | /* |
113 | * Registers a0, a1, a3 and a4 as passed to the kernel entry by firmware | 113 | * Registers a0, a1, a3 and a4 as passed to the kernel entry by firmware |
diff --git a/arch/mips/include/asm/clock.h b/arch/mips/include/asm/clock.h new file mode 100644 index 000000000000..83894aa7932c --- /dev/null +++ b/arch/mips/include/asm/clock.h | |||
@@ -0,0 +1,64 @@ | |||
1 | #ifndef __ASM_MIPS_CLOCK_H | ||
2 | #define __ASM_MIPS_CLOCK_H | ||
3 | |||
4 | #include <linux/kref.h> | ||
5 | #include <linux/list.h> | ||
6 | #include <linux/seq_file.h> | ||
7 | #include <linux/clk.h> | ||
8 | |||
9 | extern void (*cpu_wait) (void); | ||
10 | |||
11 | struct clk; | ||
12 | |||
13 | struct clk_ops { | ||
14 | void (*init) (struct clk *clk); | ||
15 | void (*enable) (struct clk *clk); | ||
16 | void (*disable) (struct clk *clk); | ||
17 | void (*recalc) (struct clk *clk); | ||
18 | int (*set_rate) (struct clk *clk, unsigned long rate, int algo_id); | ||
19 | long (*round_rate) (struct clk *clk, unsigned long rate); | ||
20 | }; | ||
21 | |||
22 | struct clk { | ||
23 | struct list_head node; | ||
24 | const char *name; | ||
25 | int id; | ||
26 | struct module *owner; | ||
27 | |||
28 | struct clk *parent; | ||
29 | struct clk_ops *ops; | ||
30 | |||
31 | struct kref kref; | ||
32 | |||
33 | unsigned long rate; | ||
34 | unsigned long flags; | ||
35 | }; | ||
36 | |||
37 | #define CLK_ALWAYS_ENABLED (1 << 0) | ||
38 | #define CLK_RATE_PROPAGATES (1 << 1) | ||
39 | |||
40 | /* Should be defined by processor-specific code */ | ||
41 | void arch_init_clk_ops(struct clk_ops **, int type); | ||
42 | |||
43 | int clk_init(void); | ||
44 | |||
45 | int __clk_enable(struct clk *); | ||
46 | void __clk_disable(struct clk *); | ||
47 | |||
48 | void clk_recalc_rate(struct clk *); | ||
49 | |||
50 | int clk_register(struct clk *); | ||
51 | void clk_unregister(struct clk *); | ||
52 | |||
53 | /* the exported API, in addition to clk_set_rate */ | ||
54 | /** | ||
55 | * clk_set_rate_ex - set the clock rate for a clock source, with additional parameter | ||
56 | * @clk: clock source | ||
57 | * @rate: desired clock rate in Hz | ||
58 | * @algo_id: algorithm id to be passed down to ops->set_rate | ||
59 | * | ||
60 | * Returns success (0) or negative errno. | ||
61 | */ | ||
62 | int clk_set_rate_ex(struct clk *clk, unsigned long rate, int algo_id); | ||
63 | |||
64 | #endif /* __ASM_MIPS_CLOCK_H */ | ||
diff --git a/arch/mips/include/asm/cop2.h b/arch/mips/include/asm/cop2.h new file mode 100644 index 000000000000..6b04c98b7fad --- /dev/null +++ b/arch/mips/include/asm/cop2.h | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2009 Wind River Systems, | ||
7 | * written by Ralf Baechle <ralf@linux-mips.org> | ||
8 | */ | ||
9 | #ifndef __ASM_COP2_H | ||
10 | #define __ASM_COP2_H | ||
11 | |||
12 | enum cu2_ops { | ||
13 | CU2_EXCEPTION, | ||
14 | CU2_LWC2_OP, | ||
15 | CU2_LDC2_OP, | ||
16 | CU2_SWC2_OP, | ||
17 | CU2_SDC2_OP, | ||
18 | }; | ||
19 | |||
20 | extern int register_cu2_notifier(struct notifier_block *nb); | ||
21 | extern int cu2_notifier_call_chain(unsigned long val, void *v); | ||
22 | |||
23 | #endif /* __ASM_COP2_H */ | ||
diff --git a/arch/mips/include/asm/cpu.h b/arch/mips/include/asm/cpu.h index 4b96d1a36056..cf373a95fe4a 100644 --- a/arch/mips/include/asm/cpu.h +++ b/arch/mips/include/asm/cpu.h | |||
@@ -154,6 +154,8 @@ | |||
154 | #define PRID_REV_VR4181A 0x0070 /* Same as VR4122 */ | 154 | #define PRID_REV_VR4181A 0x0070 /* Same as VR4122 */ |
155 | #define PRID_REV_VR4130 0x0080 | 155 | #define PRID_REV_VR4130 0x0080 |
156 | #define PRID_REV_34K_V1_0_2 0x0022 | 156 | #define PRID_REV_34K_V1_0_2 0x0022 |
157 | #define PRID_REV_LOONGSON2E 0x0002 | ||
158 | #define PRID_REV_LOONGSON2F 0x0003 | ||
157 | 159 | ||
158 | /* | 160 | /* |
159 | * Older processors used to encode processor version and revision in two | 161 | * Older processors used to encode processor version and revision in two |
diff --git a/arch/mips/include/asm/fpu.h b/arch/mips/include/asm/fpu.h index 8a3ef247659a..7fcef8ef3fab 100644 --- a/arch/mips/include/asm/fpu.h +++ b/arch/mips/include/asm/fpu.h | |||
@@ -28,15 +28,7 @@ | |||
28 | struct sigcontext; | 28 | struct sigcontext; |
29 | struct sigcontext32; | 29 | struct sigcontext32; |
30 | 30 | ||
31 | extern asmlinkage int (*save_fp_context)(struct sigcontext __user *sc); | ||
32 | extern asmlinkage int (*restore_fp_context)(struct sigcontext __user *sc); | ||
33 | |||
34 | extern asmlinkage int (*save_fp_context32)(struct sigcontext32 __user *sc); | ||
35 | extern asmlinkage int (*restore_fp_context32)(struct sigcontext32 __user *sc); | ||
36 | |||
37 | extern void fpu_emulator_init_fpu(void); | 31 | extern void fpu_emulator_init_fpu(void); |
38 | extern int fpu_emulator_save_context(struct sigcontext __user *sc); | ||
39 | extern int fpu_emulator_restore_context(struct sigcontext __user *sc); | ||
40 | extern void _init_fpu(void); | 32 | extern void _init_fpu(void); |
41 | extern void _save_fp(struct task_struct *); | 33 | extern void _save_fp(struct task_struct *); |
42 | extern void _restore_fp(struct task_struct *); | 34 | extern void _restore_fp(struct task_struct *); |
diff --git a/arch/mips/include/asm/fpu_emulator.h b/arch/mips/include/asm/fpu_emulator.h index e5189572956c..aecada6f6117 100644 --- a/arch/mips/include/asm/fpu_emulator.h +++ b/arch/mips/include/asm/fpu_emulator.h | |||
@@ -25,17 +25,27 @@ | |||
25 | 25 | ||
26 | #include <asm/break.h> | 26 | #include <asm/break.h> |
27 | #include <asm/inst.h> | 27 | #include <asm/inst.h> |
28 | #include <asm/local.h> | ||
29 | |||
30 | #ifdef CONFIG_DEBUG_FS | ||
28 | 31 | ||
29 | struct mips_fpu_emulator_stats { | 32 | struct mips_fpu_emulator_stats { |
30 | unsigned int emulated; | 33 | local_t emulated; |
31 | unsigned int loads; | 34 | local_t loads; |
32 | unsigned int stores; | 35 | local_t stores; |
33 | unsigned int cp1ops; | 36 | local_t cp1ops; |
34 | unsigned int cp1xops; | 37 | local_t cp1xops; |
35 | unsigned int errors; | 38 | local_t errors; |
36 | }; | 39 | }; |
37 | 40 | ||
38 | extern struct mips_fpu_emulator_stats fpuemustats; | 41 | DECLARE_PER_CPU(struct mips_fpu_emulator_stats, fpuemustats); |
42 | |||
43 | #define MIPS_FPU_EMU_INC_STATS(M) \ | ||
44 | cpu_local_wrap(__local_inc(&__get_cpu_var(fpuemustats).M)) | ||
45 | |||
46 | #else | ||
47 | #define MIPS_FPU_EMU_INC_STATS(M) do { } while (0) | ||
48 | #endif /* CONFIG_DEBUG_FS */ | ||
39 | 49 | ||
40 | extern int mips_dsemul(struct pt_regs *regs, mips_instruction ir, | 50 | extern int mips_dsemul(struct pt_regs *regs, mips_instruction ir, |
41 | unsigned long cpc); | 51 | unsigned long cpc); |
diff --git a/arch/mips/include/asm/ftrace.h b/arch/mips/include/asm/ftrace.h index 40a8c178f10d..3986cd8704f3 100644 --- a/arch/mips/include/asm/ftrace.h +++ b/arch/mips/include/asm/ftrace.h | |||
@@ -1 +1,90 @@ | |||
1 | /* empty */ | 1 | /* |
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive for | ||
4 | * more details. | ||
5 | * | ||
6 | * Copyright (C) 2009 DSLab, Lanzhou University, China | ||
7 | * Author: Wu Zhangjin <wuzj@lemote.com> | ||
8 | */ | ||
9 | |||
10 | #ifndef _ASM_MIPS_FTRACE_H | ||
11 | #define _ASM_MIPS_FTRACE_H | ||
12 | |||
13 | #ifdef CONFIG_FUNCTION_TRACER | ||
14 | |||
15 | #define MCOUNT_ADDR ((unsigned long)(_mcount)) | ||
16 | #define MCOUNT_INSN_SIZE 4 /* sizeof mcount call */ | ||
17 | |||
18 | #ifndef __ASSEMBLY__ | ||
19 | extern void _mcount(void); | ||
20 | #define mcount _mcount | ||
21 | |||
22 | #define safe_load(load, src, dst, error) \ | ||
23 | do { \ | ||
24 | asm volatile ( \ | ||
25 | "1: " load " %[" STR(dst) "], 0(%[" STR(src) "])\n"\ | ||
26 | " li %[" STR(error) "], 0\n" \ | ||
27 | "2:\n" \ | ||
28 | \ | ||
29 | ".section .fixup, \"ax\"\n" \ | ||
30 | "3: li %[" STR(error) "], 1\n" \ | ||
31 | " j 2b\n" \ | ||
32 | ".previous\n" \ | ||
33 | \ | ||
34 | ".section\t__ex_table,\"a\"\n\t" \ | ||
35 | STR(PTR) "\t1b, 3b\n\t" \ | ||
36 | ".previous\n" \ | ||
37 | \ | ||
38 | : [dst] "=&r" (dst), [error] "=r" (error)\ | ||
39 | : [src] "r" (src) \ | ||
40 | : "memory" \ | ||
41 | ); \ | ||
42 | } while (0) | ||
43 | |||
44 | #define safe_store(store, src, dst, error) \ | ||
45 | do { \ | ||
46 | asm volatile ( \ | ||
47 | "1: " store " %[" STR(src) "], 0(%[" STR(dst) "])\n"\ | ||
48 | " li %[" STR(error) "], 0\n" \ | ||
49 | "2:\n" \ | ||
50 | \ | ||
51 | ".section .fixup, \"ax\"\n" \ | ||
52 | "3: li %[" STR(error) "], 1\n" \ | ||
53 | " j 2b\n" \ | ||
54 | ".previous\n" \ | ||
55 | \ | ||
56 | ".section\t__ex_table,\"a\"\n\t"\ | ||
57 | STR(PTR) "\t1b, 3b\n\t" \ | ||
58 | ".previous\n" \ | ||
59 | \ | ||
60 | : [error] "=r" (error) \ | ||
61 | : [dst] "r" (dst), [src] "r" (src)\ | ||
62 | : "memory" \ | ||
63 | ); \ | ||
64 | } while (0) | ||
65 | |||
66 | #define safe_load_code(dst, src, error) \ | ||
67 | safe_load(STR(lw), src, dst, error) | ||
68 | #define safe_store_code(src, dst, error) \ | ||
69 | safe_store(STR(sw), src, dst, error) | ||
70 | |||
71 | #define safe_load_stack(dst, src, error) \ | ||
72 | safe_load(STR(PTR_L), src, dst, error) | ||
73 | |||
74 | #define safe_store_stack(src, dst, error) \ | ||
75 | safe_store(STR(PTR_S), src, dst, error) | ||
76 | |||
77 | |||
78 | #ifdef CONFIG_DYNAMIC_FTRACE | ||
79 | static inline unsigned long ftrace_call_adjust(unsigned long addr) | ||
80 | { | ||
81 | return addr; | ||
82 | } | ||
83 | |||
84 | struct dyn_arch_ftrace { | ||
85 | }; | ||
86 | |||
87 | #endif /* CONFIG_DYNAMIC_FTRACE */ | ||
88 | #endif /* __ASSEMBLY__ */ | ||
89 | #endif /* CONFIG_FUNCTION_TRACER */ | ||
90 | #endif /* _ASM_MIPS_FTRACE_H */ | ||
diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h index 09b08d05ff72..06960364c96b 100644 --- a/arch/mips/include/asm/irq.h +++ b/arch/mips/include/asm/irq.h | |||
@@ -113,36 +113,11 @@ do { \ | |||
113 | 113 | ||
114 | #endif | 114 | #endif |
115 | 115 | ||
116 | /* | 116 | extern void do_IRQ(unsigned int irq); |
117 | * do_IRQ handles all normal device IRQ's (the special | ||
118 | * SMP cross-CPU interrupts have their own specific | ||
119 | * handlers). | ||
120 | * | ||
121 | * Ideally there should be away to get this into kernel/irq/handle.c to | ||
122 | * avoid the overhead of a call for just a tiny function ... | ||
123 | */ | ||
124 | #define do_IRQ(irq) \ | ||
125 | do { \ | ||
126 | irq_enter(); \ | ||
127 | __DO_IRQ_SMTC_HOOK(irq); \ | ||
128 | generic_handle_irq(irq); \ | ||
129 | irq_exit(); \ | ||
130 | } while (0) | ||
131 | 117 | ||
132 | #ifdef CONFIG_MIPS_MT_SMTC_IRQAFF | 118 | #ifdef CONFIG_MIPS_MT_SMTC_IRQAFF |
133 | /* | ||
134 | * To avoid inefficient and in some cases pathological re-checking of | ||
135 | * IRQ affinity, we have this variant that skips the affinity check. | ||
136 | */ | ||
137 | |||
138 | 119 | ||
139 | #define do_IRQ_no_affinity(irq) \ | 120 | extern void do_IRQ_no_affinity(unsigned int irq); |
140 | do { \ | ||
141 | irq_enter(); \ | ||
142 | __NO_AFFINITY_IRQ_SMTC_HOOK(irq); \ | ||
143 | generic_handle_irq(irq); \ | ||
144 | irq_exit(); \ | ||
145 | } while (0) | ||
146 | 121 | ||
147 | #endif /* CONFIG_MIPS_MT_SMTC_IRQAFF */ | 122 | #endif /* CONFIG_MIPS_MT_SMTC_IRQAFF */ |
148 | 123 | ||
diff --git a/arch/mips/include/asm/mach-excite/cpu-feature-overrides.h b/arch/mips/include/asm/mach-excite/cpu-feature-overrides.h deleted file mode 100644 index 107104c3cd12..000000000000 --- a/arch/mips/include/asm/mach-excite/cpu-feature-overrides.h +++ /dev/null | |||
@@ -1,48 +0,0 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2004 Thomas Koeller <thomas.koeller@baslerweb.com> | ||
7 | * Copyright (C) 2007 Ralf Baechle (ralf@linux-mips.org) | ||
8 | */ | ||
9 | #ifndef __ASM_MACH_EXCITE_CPU_FEATURE_OVERRIDES_H | ||
10 | #define __ASM_MACH_EXCITE_CPU_FEATURE_OVERRIDES_H | ||
11 | |||
12 | /* | ||
13 | * Basler eXcite has an RM9122 processor. | ||
14 | */ | ||
15 | #define cpu_has_watch 1 | ||
16 | #define cpu_has_mips16 0 | ||
17 | #define cpu_has_divec 0 | ||
18 | #define cpu_has_vce 0 | ||
19 | #define cpu_has_cache_cdex_p 0 | ||
20 | #define cpu_has_cache_cdex_s 0 | ||
21 | #define cpu_has_prefetch 1 | ||
22 | #define cpu_has_mcheck 0 | ||
23 | #define cpu_has_ejtag 0 | ||
24 | |||
25 | #define cpu_has_llsc 1 | ||
26 | #define cpu_has_vtag_icache 0 | ||
27 | #define cpu_has_dc_aliases 0 | ||
28 | #define cpu_has_ic_fills_f_dc 0 | ||
29 | #define cpu_has_dsp 0 | ||
30 | #define cpu_icache_snoops_remote_store 0 | ||
31 | #define cpu_has_mipsmt 0 | ||
32 | #define cpu_has_userlocal 0 | ||
33 | |||
34 | #define cpu_has_nofpuex 0 | ||
35 | #define cpu_has_64bits 1 | ||
36 | |||
37 | #define cpu_has_mips32r1 0 | ||
38 | #define cpu_has_mips32r2 0 | ||
39 | #define cpu_has_mips64r1 0 | ||
40 | #define cpu_has_mips64r2 0 | ||
41 | |||
42 | #define cpu_has_inclusive_pcaches 0 | ||
43 | |||
44 | #define cpu_dcache_line_size() 32 | ||
45 | #define cpu_icache_line_size() 32 | ||
46 | #define cpu_scache_line_size() 32 | ||
47 | |||
48 | #endif /* __ASM_MACH_EXCITE_CPU_FEATURE_OVERRIDES_H */ | ||
diff --git a/arch/mips/include/asm/mach-excite/excite.h b/arch/mips/include/asm/mach-excite/excite.h deleted file mode 100644 index 4c29ba44992c..000000000000 --- a/arch/mips/include/asm/mach-excite/excite.h +++ /dev/null | |||
@@ -1,154 +0,0 @@ | |||
1 | #ifndef __EXCITE_H__ | ||
2 | #define __EXCITE_H__ | ||
3 | |||
4 | #include <linux/init.h> | ||
5 | #include <asm/addrspace.h> | ||
6 | #include <asm/types.h> | ||
7 | |||
8 | #define EXCITE_CPU_EXT_CLOCK 100000000 | ||
9 | |||
10 | #if !defined(__ASSEMBLY__) | ||
11 | void __init excite_kgdb_init(void); | ||
12 | void excite_procfs_init(void); | ||
13 | extern unsigned long memsize; | ||
14 | extern char modetty[]; | ||
15 | extern u32 unit_id; | ||
16 | #endif | ||
17 | |||
18 | /* Base name for XICAP devices */ | ||
19 | #define XICAP_NAME "xicap_gpi" | ||
20 | |||
21 | /* OCD register offsets */ | ||
22 | #define LKB0 0x0038 | ||
23 | #define LKB5 0x0128 | ||
24 | #define LKM5 0x012C | ||
25 | #define LKB7 0x0138 | ||
26 | #define LKM7 0x013c | ||
27 | #define LKB8 0x0140 | ||
28 | #define LKM8 0x0144 | ||
29 | #define LKB9 0x0148 | ||
30 | #define LKM9 0x014c | ||
31 | #define LKB10 0x0150 | ||
32 | #define LKM10 0x0154 | ||
33 | #define LKB11 0x0158 | ||
34 | #define LKM11 0x015c | ||
35 | #define LKB12 0x0160 | ||
36 | #define LKM12 0x0164 | ||
37 | #define LKB13 0x0168 | ||
38 | #define LKM13 0x016c | ||
39 | #define LDP0 0x0200 | ||
40 | #define LDP1 0x0210 | ||
41 | #define LDP2 0x0220 | ||
42 | #define LDP3 0x0230 | ||
43 | #define INTPIN0 0x0A40 | ||
44 | #define INTPIN1 0x0A44 | ||
45 | #define INTPIN2 0x0A48 | ||
46 | #define INTPIN3 0x0A4C | ||
47 | #define INTPIN4 0x0A50 | ||
48 | #define INTPIN5 0x0A54 | ||
49 | #define INTPIN6 0x0A58 | ||
50 | #define INTPIN7 0x0A5C | ||
51 | |||
52 | |||
53 | |||
54 | |||
55 | /* TITAN register offsets */ | ||
56 | #define CPRR 0x0004 | ||
57 | #define CPDSR 0x0008 | ||
58 | #define CPTC0R 0x000c | ||
59 | #define CPTC1R 0x0010 | ||
60 | #define CPCFG0 0x0020 | ||
61 | #define CPCFG1 0x0024 | ||
62 | #define CPDST0A 0x0028 | ||
63 | #define CPDST0B 0x002c | ||
64 | #define CPDST1A 0x0030 | ||
65 | #define CPDST1B 0x0034 | ||
66 | #define CPXDSTA 0x0038 | ||
67 | #define CPXDSTB 0x003c | ||
68 | #define CPXCISRA 0x0048 | ||
69 | #define CPXCISRB 0x004c | ||
70 | #define CPGIG0ER 0x0050 | ||
71 | #define CPGIG1ER 0x0054 | ||
72 | #define CPGRWL 0x0068 | ||
73 | #define CPURSLMT 0x00f8 | ||
74 | #define UACFG 0x0200 | ||
75 | #define UAINTS 0x0204 | ||
76 | #define SDRXFCIE 0x4828 | ||
77 | #define SDTXFCIE 0x4928 | ||
78 | #define INTP0Status0 0x1B00 | ||
79 | #define INTP0Mask0 0x1B04 | ||
80 | #define INTP0Set0 0x1B08 | ||
81 | #define INTP0Clear0 0x1B0C | ||
82 | #define GXCFG 0x5000 | ||
83 | #define GXDMADRPFX 0x5018 | ||
84 | #define GXDMA_DESCADR 0x501c | ||
85 | #define GXCH0TDESSTRT 0x5054 | ||
86 | |||
87 | /* IRQ definitions */ | ||
88 | #define NMICONFIG 0xac0 | ||
89 | #define TITAN_MSGINT 0xc4 | ||
90 | #define TITAN_IRQ ((TITAN_MSGINT / 0x20) + 2) | ||
91 | #define FPGA0_MSGINT 0x5a | ||
92 | #define FPGA0_IRQ ((FPGA0_MSGINT / 0x20) + 2) | ||
93 | #define FPGA1_MSGINT 0x7b | ||
94 | #define FPGA1_IRQ ((FPGA1_MSGINT / 0x20) + 2) | ||
95 | #define PHY_MSGINT 0x9c | ||
96 | #define PHY_IRQ ((PHY_MSGINT / 0x20) + 2) | ||
97 | |||
98 | #if defined(CONFIG_BASLER_EXCITE_PROTOTYPE) | ||
99 | /* Pre-release units used interrupt pin #9 */ | ||
100 | #define USB_IRQ 11 | ||
101 | #else | ||
102 | /* Re-designed units use interrupt pin #1 */ | ||
103 | #define USB_MSGINT 0x39 | ||
104 | #define USB_IRQ ((USB_MSGINT / 0x20) + 2) | ||
105 | #endif | ||
106 | #define TIMER_IRQ 12 | ||
107 | |||
108 | |||
109 | /* Device address ranges */ | ||
110 | #define EXCITE_OFFS_OCD 0x1fffc000 | ||
111 | #define EXCITE_SIZE_OCD (16 * 1024) | ||
112 | #define EXCITE_PHYS_OCD CPHYSADDR(EXCITE_OFFS_OCD) | ||
113 | #define EXCITE_ADDR_OCD CKSEG1ADDR(EXCITE_OFFS_OCD) | ||
114 | |||
115 | #define EXCITE_OFFS_SCRAM 0x1fffa000 | ||
116 | #define EXCITE_SIZE_SCRAM (8 << 10) | ||
117 | #define EXCITE_PHYS_SCRAM CPHYSADDR(EXCITE_OFFS_SCRAM) | ||
118 | #define EXCITE_ADDR_SCRAM CKSEG1ADDR(EXCITE_OFFS_SCRAM) | ||
119 | |||
120 | #define EXCITE_OFFS_PCI_IO 0x1fff8000 | ||
121 | #define EXCITE_SIZE_PCI_IO (8 << 10) | ||
122 | #define EXCITE_PHYS_PCI_IO CPHYSADDR(EXCITE_OFFS_PCI_IO) | ||
123 | #define EXCITE_ADDR_PCI_IO CKSEG1ADDR(EXCITE_OFFS_PCI_IO) | ||
124 | |||
125 | #define EXCITE_OFFS_TITAN 0x1fff0000 | ||
126 | #define EXCITE_SIZE_TITAN (32 << 10) | ||
127 | #define EXCITE_PHYS_TITAN CPHYSADDR(EXCITE_OFFS_TITAN) | ||
128 | #define EXCITE_ADDR_TITAN CKSEG1ADDR(EXCITE_OFFS_TITAN) | ||
129 | |||
130 | #define EXCITE_OFFS_PCI_MEM 0x1ffe0000 | ||
131 | #define EXCITE_SIZE_PCI_MEM (64 << 10) | ||
132 | #define EXCITE_PHYS_PCI_MEM CPHYSADDR(EXCITE_OFFS_PCI_MEM) | ||
133 | #define EXCITE_ADDR_PCI_MEM CKSEG1ADDR(EXCITE_OFFS_PCI_MEM) | ||
134 | |||
135 | #define EXCITE_OFFS_FPGA 0x1ffdc000 | ||
136 | #define EXCITE_SIZE_FPGA (16 << 10) | ||
137 | #define EXCITE_PHYS_FPGA CPHYSADDR(EXCITE_OFFS_FPGA) | ||
138 | #define EXCITE_ADDR_FPGA CKSEG1ADDR(EXCITE_OFFS_FPGA) | ||
139 | |||
140 | #define EXCITE_OFFS_NAND 0x1ffd8000 | ||
141 | #define EXCITE_SIZE_NAND (16 << 10) | ||
142 | #define EXCITE_PHYS_NAND CPHYSADDR(EXCITE_OFFS_NAND) | ||
143 | #define EXCITE_ADDR_NAND CKSEG1ADDR(EXCITE_OFFS_NAND) | ||
144 | |||
145 | #define EXCITE_OFFS_BOOTROM 0x1f000000 | ||
146 | #define EXCITE_SIZE_BOOTROM (8 << 20) | ||
147 | #define EXCITE_PHYS_BOOTROM CPHYSADDR(EXCITE_OFFS_BOOTROM) | ||
148 | #define EXCITE_ADDR_BOOTROM CKSEG1ADDR(EXCITE_OFFS_BOOTROM) | ||
149 | |||
150 | /* FPGA address offsets */ | ||
151 | #define EXCITE_FPGA_DPR 0x0104 /* dual-ported ram */ | ||
152 | #define EXCITE_FPGA_SYSCTL 0x0200 /* system control register block */ | ||
153 | |||
154 | #endif /* __EXCITE_H__ */ | ||
diff --git a/arch/mips/include/asm/mach-excite/excite_fpga.h b/arch/mips/include/asm/mach-excite/excite_fpga.h deleted file mode 100644 index 0a1ef69bece7..000000000000 --- a/arch/mips/include/asm/mach-excite/excite_fpga.h +++ /dev/null | |||
@@ -1,80 +0,0 @@ | |||
1 | #ifndef EXCITE_FPGA_H_INCLUDED | ||
2 | #define EXCITE_FPGA_H_INCLUDED | ||
3 | |||
4 | |||
5 | /** | ||
6 | * Address alignment of the individual FPGA bytes. | ||
7 | * The address arrangement of the individual bytes of the FPGA is two | ||
8 | * byte aligned at the embedded MK2 platform. | ||
9 | */ | ||
10 | #ifdef EXCITE_CCI_FPGA_MK2 | ||
11 | typedef unsigned char excite_cci_fpga_align_t __attribute__ ((aligned(2))); | ||
12 | #else | ||
13 | typedef unsigned char excite_cci_fpga_align_t; | ||
14 | #endif | ||
15 | |||
16 | |||
17 | /** | ||
18 | * Size of Dual Ported RAM. | ||
19 | */ | ||
20 | #define EXCITE_DPR_SIZE 263 | ||
21 | |||
22 | |||
23 | /** | ||
24 | * Size of Reserved Status Fields in Dual Ported RAM. | ||
25 | */ | ||
26 | #define EXCITE_DPR_STATUS_SIZE 7 | ||
27 | |||
28 | |||
29 | |||
30 | /** | ||
31 | * FPGA. | ||
32 | * Hardware register layout of the FPGA interface. The FPGA must accessed | ||
33 | * byte wise solely. | ||
34 | * @see EXCITE_CCI_DPR_MK2 | ||
35 | */ | ||
36 | typedef struct excite_fpga { | ||
37 | |||
38 | /** | ||
39 | * Dual Ported RAM. | ||
40 | */ | ||
41 | excite_cci_fpga_align_t dpr[EXCITE_DPR_SIZE]; | ||
42 | |||
43 | /** | ||
44 | * Status. | ||
45 | */ | ||
46 | excite_cci_fpga_align_t status[EXCITE_DPR_STATUS_SIZE]; | ||
47 | |||
48 | #ifdef EXCITE_CCI_FPGA_MK2 | ||
49 | /** | ||
50 | * RM9000 Interrupt. | ||
51 | * Write access initiates interrupt at the RM9000 (MIPS) processor of the eXcite. | ||
52 | */ | ||
53 | excite_cci_fpga_align_t rm9k_int; | ||
54 | #else | ||
55 | /** | ||
56 | * MK2 Interrupt. | ||
57 | * Write access initiates interrupt at the ARM processor of the MK2. | ||
58 | */ | ||
59 | excite_cci_fpga_align_t mk2_int; | ||
60 | |||
61 | excite_cci_fpga_align_t gap[0x1000-0x10f]; | ||
62 | |||
63 | /** | ||
64 | * IRQ Source/Acknowledge. | ||
65 | */ | ||
66 | excite_cci_fpga_align_t rm9k_irq_src; | ||
67 | |||
68 | /** | ||
69 | * IRQ Mask. | ||
70 | * Set bits enable the related interrupt. | ||
71 | */ | ||
72 | excite_cci_fpga_align_t rm9k_irq_mask; | ||
73 | #endif | ||
74 | |||
75 | |||
76 | } excite_fpga; | ||
77 | |||
78 | |||
79 | |||
80 | #endif /* ndef EXCITE_FPGA_H_INCLUDED */ | ||
diff --git a/arch/mips/include/asm/mach-excite/excite_nandflash.h b/arch/mips/include/asm/mach-excite/excite_nandflash.h deleted file mode 100644 index c4cf6140622e..000000000000 --- a/arch/mips/include/asm/mach-excite/excite_nandflash.h +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | #ifndef __EXCITE_NANDFLASH_H__ | ||
2 | #define __EXCITE_NANDFLASH_H__ | ||
3 | |||
4 | /* Resource names */ | ||
5 | #define EXCITE_NANDFLASH_RESOURCE_REGS "excite_nandflash_regs" | ||
6 | |||
7 | #endif /* __EXCITE_NANDFLASH_H__ */ | ||
diff --git a/arch/mips/include/asm/mach-excite/rm9k_eth.h b/arch/mips/include/asm/mach-excite/rm9k_eth.h deleted file mode 100644 index 94705a46f72e..000000000000 --- a/arch/mips/include/asm/mach-excite/rm9k_eth.h +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | #if !defined(__RM9K_ETH_H__) | ||
2 | #define __RM9K_ETH_H__ | ||
3 | |||
4 | #define RM9K_GE_NAME "rm9k_ge" | ||
5 | |||
6 | /* Resource names */ | ||
7 | #define RM9K_GE_RESOURCE_MAC "rm9k_ge_mac" | ||
8 | #define RM9K_GE_RESOURCE_MSTAT "rm9k_ge_mstat" | ||
9 | #define RM9K_GE_RESOURCE_PKTPROC "rm9k_ge_pktproc" | ||
10 | #define RM9K_GE_RESOURCE_XDMA "rm9k_ge_xdma" | ||
11 | #define RM9K_GE_RESOURCE_FIFO_RX "rm9k_ge_fifo_rx" | ||
12 | #define RM9K_GE_RESOURCE_FIFO_TX "rm9k_ge_fifo_tx" | ||
13 | #define RM9K_GE_RESOURCE_FIFOMEM_RX "rm9k_ge_fifo_memory_rx" | ||
14 | #define RM9K_GE_RESOURCE_FIFOMEM_TX "rm9k_ge_fifo_memory_tx" | ||
15 | #define RM9K_GE_RESOURCE_PHY "rm9k_ge_phy" | ||
16 | #define RM9K_GE_RESOURCE_DMADESC_RX "rm9k_ge_dmadesc_rx" | ||
17 | #define RM9K_GE_RESOURCE_DMADESC_TX "rm9k_ge_dmadesc_tx" | ||
18 | #define RM9K_GE_RESOURCE_IRQ_MAIN "rm9k_ge_irq_main" | ||
19 | #define RM9K_GE_RESOURCE_IRQ_PHY "rm9k_ge_irq_phy" | ||
20 | #define RM9K_GE_RESOURCE_GPI_SLICE "rm9k_ge_gpi_slice" | ||
21 | #define RM9K_GE_RESOURCE_MDIO_CHANNEL "rm9k_ge_mdio_channel" | ||
22 | |||
23 | #endif /* !defined(__RM9K_ETH_H__) */ | ||
diff --git a/arch/mips/include/asm/mach-excite/rm9k_wdt.h b/arch/mips/include/asm/mach-excite/rm9k_wdt.h deleted file mode 100644 index 3fa3c08d2da7..000000000000 --- a/arch/mips/include/asm/mach-excite/rm9k_wdt.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | #ifndef __RM9K_WDT_H__ | ||
2 | #define __RM9K_WDT_H__ | ||
3 | |||
4 | /* Device name */ | ||
5 | #define WDT_NAME "wdt_gpi" | ||
6 | |||
7 | /* Resource names */ | ||
8 | #define WDT_RESOURCE_REGS "excite_watchdog_regs" | ||
9 | #define WDT_RESOURCE_IRQ "excite_watchdog_irq" | ||
10 | #define WDT_RESOURCE_COUNTER "excite_watchdog_counter" | ||
11 | |||
12 | #endif /* __RM9K_WDT_H__ */ | ||
diff --git a/arch/mips/include/asm/mach-excite/rm9k_xicap.h b/arch/mips/include/asm/mach-excite/rm9k_xicap.h deleted file mode 100644 index 009577734a8d..000000000000 --- a/arch/mips/include/asm/mach-excite/rm9k_xicap.h +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | #ifndef __EXCITE_XICAP_H__ | ||
2 | #define __EXCITE_XICAP_H__ | ||
3 | |||
4 | |||
5 | /* Resource names */ | ||
6 | #define XICAP_RESOURCE_FIFO_RX "xicap_fifo_rx" | ||
7 | #define XICAP_RESOURCE_FIFO_TX "xicap_fifo_tx" | ||
8 | #define XICAP_RESOURCE_XDMA "xicap_xdma" | ||
9 | #define XICAP_RESOURCE_DMADESC "xicap_dmadesc" | ||
10 | #define XICAP_RESOURCE_PKTPROC "xicap_pktproc" | ||
11 | #define XICAP_RESOURCE_IRQ "xicap_irq" | ||
12 | #define XICAP_RESOURCE_GPI_SLICE "xicap_gpi_slice" | ||
13 | #define XICAP_RESOURCE_FIFO_BLK "xicap_fifo_blocks" | ||
14 | #define XICAP_RESOURCE_PKT_STREAM "xicap_pkt_stream" | ||
15 | |||
16 | #endif /* __EXCITE_XICAP_H__ */ | ||
diff --git a/arch/mips/include/asm/mach-loongson/cs5536/cs5536.h b/arch/mips/include/asm/mach-loongson/cs5536/cs5536.h new file mode 100644 index 000000000000..021f77ca59ec --- /dev/null +++ b/arch/mips/include/asm/mach-loongson/cs5536/cs5536.h | |||
@@ -0,0 +1,305 @@ | |||
1 | /* | ||
2 | * The header file of cs5536 sourth bridge. | ||
3 | * | ||
4 | * Copyright (C) 2007 Lemote, Inc. | ||
5 | * Author : jlliu <liujl@lemote.com> | ||
6 | */ | ||
7 | |||
8 | #ifndef _CS5536_H | ||
9 | #define _CS5536_H | ||
10 | |||
11 | #include <linux/types.h> | ||
12 | |||
13 | extern void _rdmsr(u32 msr, u32 *hi, u32 *lo); | ||
14 | extern void _wrmsr(u32 msr, u32 hi, u32 lo); | ||
15 | |||
16 | /* | ||
17 | * MSR module base | ||
18 | */ | ||
19 | #define CS5536_SB_MSR_BASE (0x00000000) | ||
20 | #define CS5536_GLIU_MSR_BASE (0x10000000) | ||
21 | #define CS5536_ILLEGAL_MSR_BASE (0x20000000) | ||
22 | #define CS5536_USB_MSR_BASE (0x40000000) | ||
23 | #define CS5536_IDE_MSR_BASE (0x60000000) | ||
24 | #define CS5536_DIVIL_MSR_BASE (0x80000000) | ||
25 | #define CS5536_ACC_MSR_BASE (0xa0000000) | ||
26 | #define CS5536_UNUSED_MSR_BASE (0xc0000000) | ||
27 | #define CS5536_GLCP_MSR_BASE (0xe0000000) | ||
28 | |||
29 | #define SB_MSR_REG(offset) (CS5536_SB_MSR_BASE | (offset)) | ||
30 | #define GLIU_MSR_REG(offset) (CS5536_GLIU_MSR_BASE | (offset)) | ||
31 | #define ILLEGAL_MSR_REG(offset) (CS5536_ILLEGAL_MSR_BASE | (offset)) | ||
32 | #define USB_MSR_REG(offset) (CS5536_USB_MSR_BASE | (offset)) | ||
33 | #define IDE_MSR_REG(offset) (CS5536_IDE_MSR_BASE | (offset)) | ||
34 | #define DIVIL_MSR_REG(offset) (CS5536_DIVIL_MSR_BASE | (offset)) | ||
35 | #define ACC_MSR_REG(offset) (CS5536_ACC_MSR_BASE | (offset)) | ||
36 | #define UNUSED_MSR_REG(offset) (CS5536_UNUSED_MSR_BASE | (offset)) | ||
37 | #define GLCP_MSR_REG(offset) (CS5536_GLCP_MSR_BASE | (offset)) | ||
38 | |||
39 | /* | ||
40 | * BAR SPACE OF VIRTUAL PCI : | ||
41 | * range for pci probe use, length is the actual size. | ||
42 | */ | ||
43 | /* IO space for all DIVIL modules */ | ||
44 | #define CS5536_IRQ_RANGE 0xffffffe0 /* USERD FOR PCI PROBE */ | ||
45 | #define CS5536_IRQ_LENGTH 0x20 /* THE REGS ACTUAL LENGTH */ | ||
46 | #define CS5536_SMB_RANGE 0xfffffff8 | ||
47 | #define CS5536_SMB_LENGTH 0x08 | ||
48 | #define CS5536_GPIO_RANGE 0xffffff00 | ||
49 | #define CS5536_GPIO_LENGTH 0x100 | ||
50 | #define CS5536_MFGPT_RANGE 0xffffffc0 | ||
51 | #define CS5536_MFGPT_LENGTH 0x40 | ||
52 | #define CS5536_ACPI_RANGE 0xffffffe0 | ||
53 | #define CS5536_ACPI_LENGTH 0x20 | ||
54 | #define CS5536_PMS_RANGE 0xffffff80 | ||
55 | #define CS5536_PMS_LENGTH 0x80 | ||
56 | /* IO space for IDE */ | ||
57 | #define CS5536_IDE_RANGE 0xfffffff0 | ||
58 | #define CS5536_IDE_LENGTH 0x10 | ||
59 | /* IO space for ACC */ | ||
60 | #define CS5536_ACC_RANGE 0xffffff80 | ||
61 | #define CS5536_ACC_LENGTH 0x80 | ||
62 | /* MEM space for ALL USB modules */ | ||
63 | #define CS5536_OHCI_RANGE 0xfffff000 | ||
64 | #define CS5536_OHCI_LENGTH 0x1000 | ||
65 | #define CS5536_EHCI_RANGE 0xfffff000 | ||
66 | #define CS5536_EHCI_LENGTH 0x1000 | ||
67 | |||
68 | /* | ||
69 | * PCI MSR ACCESS | ||
70 | */ | ||
71 | #define PCI_MSR_CTRL 0xF0 | ||
72 | #define PCI_MSR_ADDR 0xF4 | ||
73 | #define PCI_MSR_DATA_LO 0xF8 | ||
74 | #define PCI_MSR_DATA_HI 0xFC | ||
75 | |||
76 | /**************** MSR *****************************/ | ||
77 | |||
78 | /* | ||
79 | * GLIU STANDARD MSR | ||
80 | */ | ||
81 | #define GLIU_CAP 0x00 | ||
82 | #define GLIU_CONFIG 0x01 | ||
83 | #define GLIU_SMI 0x02 | ||
84 | #define GLIU_ERROR 0x03 | ||
85 | #define GLIU_PM 0x04 | ||
86 | #define GLIU_DIAG 0x05 | ||
87 | |||
88 | /* | ||
89 | * GLIU SPEC. MSR | ||
90 | */ | ||
91 | #define GLIU_P2D_BM0 0x20 | ||
92 | #define GLIU_P2D_BM1 0x21 | ||
93 | #define GLIU_P2D_BM2 0x22 | ||
94 | #define GLIU_P2D_BMK0 0x23 | ||
95 | #define GLIU_P2D_BMK1 0x24 | ||
96 | #define GLIU_P2D_BM3 0x25 | ||
97 | #define GLIU_P2D_BM4 0x26 | ||
98 | #define GLIU_COH 0x80 | ||
99 | #define GLIU_PAE 0x81 | ||
100 | #define GLIU_ARB 0x82 | ||
101 | #define GLIU_ASMI 0x83 | ||
102 | #define GLIU_AERR 0x84 | ||
103 | #define GLIU_DEBUG 0x85 | ||
104 | #define GLIU_PHY_CAP 0x86 | ||
105 | #define GLIU_NOUT_RESP 0x87 | ||
106 | #define GLIU_NOUT_WDATA 0x88 | ||
107 | #define GLIU_WHOAMI 0x8B | ||
108 | #define GLIU_SLV_DIS 0x8C | ||
109 | #define GLIU_IOD_BM0 0xE0 | ||
110 | #define GLIU_IOD_BM1 0xE1 | ||
111 | #define GLIU_IOD_BM2 0xE2 | ||
112 | #define GLIU_IOD_BM3 0xE3 | ||
113 | #define GLIU_IOD_BM4 0xE4 | ||
114 | #define GLIU_IOD_BM5 0xE5 | ||
115 | #define GLIU_IOD_BM6 0xE6 | ||
116 | #define GLIU_IOD_BM7 0xE7 | ||
117 | #define GLIU_IOD_BM8 0xE8 | ||
118 | #define GLIU_IOD_BM9 0xE9 | ||
119 | #define GLIU_IOD_SC0 0xEA | ||
120 | #define GLIU_IOD_SC1 0xEB | ||
121 | #define GLIU_IOD_SC2 0xEC | ||
122 | #define GLIU_IOD_SC3 0xED | ||
123 | #define GLIU_IOD_SC4 0xEE | ||
124 | #define GLIU_IOD_SC5 0xEF | ||
125 | #define GLIU_IOD_SC6 0xF0 | ||
126 | #define GLIU_IOD_SC7 0xF1 | ||
127 | |||
128 | /* | ||
129 | * SB STANDARD | ||
130 | */ | ||
131 | #define SB_CAP 0x00 | ||
132 | #define SB_CONFIG 0x01 | ||
133 | #define SB_SMI 0x02 | ||
134 | #define SB_ERROR 0x03 | ||
135 | #define SB_MAR_ERR_EN 0x00000001 | ||
136 | #define SB_TAR_ERR_EN 0x00000002 | ||
137 | #define SB_RSVD_BIT1 0x00000004 | ||
138 | #define SB_EXCEP_ERR_EN 0x00000008 | ||
139 | #define SB_SYSE_ERR_EN 0x00000010 | ||
140 | #define SB_PARE_ERR_EN 0x00000020 | ||
141 | #define SB_TAS_ERR_EN 0x00000040 | ||
142 | #define SB_MAR_ERR_FLAG 0x00010000 | ||
143 | #define SB_TAR_ERR_FLAG 0x00020000 | ||
144 | #define SB_RSVD_BIT2 0x00040000 | ||
145 | #define SB_EXCEP_ERR_FLAG 0x00080000 | ||
146 | #define SB_SYSE_ERR_FLAG 0x00100000 | ||
147 | #define SB_PARE_ERR_FLAG 0x00200000 | ||
148 | #define SB_TAS_ERR_FLAG 0x00400000 | ||
149 | #define SB_PM 0x04 | ||
150 | #define SB_DIAG 0x05 | ||
151 | |||
152 | /* | ||
153 | * SB SPEC. | ||
154 | */ | ||
155 | #define SB_CTRL 0x10 | ||
156 | #define SB_R0 0x20 | ||
157 | #define SB_R1 0x21 | ||
158 | #define SB_R2 0x22 | ||
159 | #define SB_R3 0x23 | ||
160 | #define SB_R4 0x24 | ||
161 | #define SB_R5 0x25 | ||
162 | #define SB_R6 0x26 | ||
163 | #define SB_R7 0x27 | ||
164 | #define SB_R8 0x28 | ||
165 | #define SB_R9 0x29 | ||
166 | #define SB_R10 0x2A | ||
167 | #define SB_R11 0x2B | ||
168 | #define SB_R12 0x2C | ||
169 | #define SB_R13 0x2D | ||
170 | #define SB_R14 0x2E | ||
171 | #define SB_R15 0x2F | ||
172 | |||
173 | /* | ||
174 | * GLCP STANDARD | ||
175 | */ | ||
176 | #define GLCP_CAP 0x00 | ||
177 | #define GLCP_CONFIG 0x01 | ||
178 | #define GLCP_SMI 0x02 | ||
179 | #define GLCP_ERROR 0x03 | ||
180 | #define GLCP_PM 0x04 | ||
181 | #define GLCP_DIAG 0x05 | ||
182 | |||
183 | /* | ||
184 | * GLCP SPEC. | ||
185 | */ | ||
186 | #define GLCP_CLK_DIS_DELAY 0x08 | ||
187 | #define GLCP_PM_CLK_DISABLE 0x09 | ||
188 | #define GLCP_GLB_PM 0x0B | ||
189 | #define GLCP_DBG_OUT 0x0C | ||
190 | #define GLCP_RSVD1 0x0D | ||
191 | #define GLCP_SOFT_COM 0x0E | ||
192 | #define SOFT_BAR_SMB_FLAG 0x00000001 | ||
193 | #define SOFT_BAR_GPIO_FLAG 0x00000002 | ||
194 | #define SOFT_BAR_MFGPT_FLAG 0x00000004 | ||
195 | #define SOFT_BAR_IRQ_FLAG 0x00000008 | ||
196 | #define SOFT_BAR_PMS_FLAG 0x00000010 | ||
197 | #define SOFT_BAR_ACPI_FLAG 0x00000020 | ||
198 | #define SOFT_BAR_IDE_FLAG 0x00000400 | ||
199 | #define SOFT_BAR_ACC_FLAG 0x00000800 | ||
200 | #define SOFT_BAR_OHCI_FLAG 0x00001000 | ||
201 | #define SOFT_BAR_EHCI_FLAG 0x00002000 | ||
202 | #define GLCP_RSVD2 0x0F | ||
203 | #define GLCP_CLK_OFF 0x10 | ||
204 | #define GLCP_CLK_ACTIVE 0x11 | ||
205 | #define GLCP_CLK_DISABLE 0x12 | ||
206 | #define GLCP_CLK4ACK 0x13 | ||
207 | #define GLCP_SYS_RST 0x14 | ||
208 | #define GLCP_RSVD3 0x15 | ||
209 | #define GLCP_DBG_CLK_CTRL 0x16 | ||
210 | #define GLCP_CHIP_REV_ID 0x17 | ||
211 | |||
212 | /* PIC */ | ||
213 | #define PIC_YSEL_LOW 0x20 | ||
214 | #define PIC_YSEL_LOW_USB_SHIFT 8 | ||
215 | #define PIC_YSEL_LOW_ACC_SHIFT 16 | ||
216 | #define PIC_YSEL_LOW_FLASH_SHIFT 24 | ||
217 | #define PIC_YSEL_HIGH 0x21 | ||
218 | #define PIC_ZSEL_LOW 0x22 | ||
219 | #define PIC_ZSEL_HIGH 0x23 | ||
220 | #define PIC_IRQM_PRIM 0x24 | ||
221 | #define PIC_IRQM_LPC 0x25 | ||
222 | #define PIC_XIRR_STS_LOW 0x26 | ||
223 | #define PIC_XIRR_STS_HIGH 0x27 | ||
224 | #define PCI_SHDW 0x34 | ||
225 | |||
226 | /* | ||
227 | * DIVIL STANDARD | ||
228 | */ | ||
229 | #define DIVIL_CAP 0x00 | ||
230 | #define DIVIL_CONFIG 0x01 | ||
231 | #define DIVIL_SMI 0x02 | ||
232 | #define DIVIL_ERROR 0x03 | ||
233 | #define DIVIL_PM 0x04 | ||
234 | #define DIVIL_DIAG 0x05 | ||
235 | |||
236 | /* | ||
237 | * DIVIL SPEC. | ||
238 | */ | ||
239 | #define DIVIL_LBAR_IRQ 0x08 | ||
240 | #define DIVIL_LBAR_KEL 0x09 | ||
241 | #define DIVIL_LBAR_SMB 0x0B | ||
242 | #define DIVIL_LBAR_GPIO 0x0C | ||
243 | #define DIVIL_LBAR_MFGPT 0x0D | ||
244 | #define DIVIL_LBAR_ACPI 0x0E | ||
245 | #define DIVIL_LBAR_PMS 0x0F | ||
246 | #define DIVIL_LEG_IO 0x14 | ||
247 | #define DIVIL_BALL_OPTS 0x15 | ||
248 | #define DIVIL_SOFT_IRQ 0x16 | ||
249 | #define DIVIL_SOFT_RESET 0x17 | ||
250 | |||
251 | /* MFGPT */ | ||
252 | #define MFGPT_IRQ 0x28 | ||
253 | |||
254 | /* | ||
255 | * IDE STANDARD | ||
256 | */ | ||
257 | #define IDE_CAP 0x00 | ||
258 | #define IDE_CONFIG 0x01 | ||
259 | #define IDE_SMI 0x02 | ||
260 | #define IDE_ERROR 0x03 | ||
261 | #define IDE_PM 0x04 | ||
262 | #define IDE_DIAG 0x05 | ||
263 | |||
264 | /* | ||
265 | * IDE SPEC. | ||
266 | */ | ||
267 | #define IDE_IO_BAR 0x08 | ||
268 | #define IDE_CFG 0x10 | ||
269 | #define IDE_DTC 0x12 | ||
270 | #define IDE_CAST 0x13 | ||
271 | #define IDE_ETC 0x14 | ||
272 | #define IDE_INTERNAL_PM 0x15 | ||
273 | |||
274 | /* | ||
275 | * ACC STANDARD | ||
276 | */ | ||
277 | #define ACC_CAP 0x00 | ||
278 | #define ACC_CONFIG 0x01 | ||
279 | #define ACC_SMI 0x02 | ||
280 | #define ACC_ERROR 0x03 | ||
281 | #define ACC_PM 0x04 | ||
282 | #define ACC_DIAG 0x05 | ||
283 | |||
284 | /* | ||
285 | * USB STANDARD | ||
286 | */ | ||
287 | #define USB_CAP 0x00 | ||
288 | #define USB_CONFIG 0x01 | ||
289 | #define USB_SMI 0x02 | ||
290 | #define USB_ERROR 0x03 | ||
291 | #define USB_PM 0x04 | ||
292 | #define USB_DIAG 0x05 | ||
293 | |||
294 | /* | ||
295 | * USB SPEC. | ||
296 | */ | ||
297 | #define USB_OHCI 0x08 | ||
298 | #define USB_EHCI 0x09 | ||
299 | |||
300 | /****************** NATIVE ***************************/ | ||
301 | /* GPIO : I/O SPACE; REG : 32BITS */ | ||
302 | #define GPIOL_OUT_VAL 0x00 | ||
303 | #define GPIOL_OUT_EN 0x04 | ||
304 | |||
305 | #endif /* _CS5536_H */ | ||
diff --git a/arch/mips/include/asm/mach-loongson/cs5536/cs5536_mfgpt.h b/arch/mips/include/asm/mach-loongson/cs5536/cs5536_mfgpt.h new file mode 100644 index 000000000000..4b493d6772c2 --- /dev/null +++ b/arch/mips/include/asm/mach-loongson/cs5536/cs5536_mfgpt.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * cs5536 mfgpt header file | ||
3 | */ | ||
4 | |||
5 | #ifndef _CS5536_MFGPT_H | ||
6 | #define _CS5536_MFGPT_H | ||
7 | |||
8 | #include <cs5536/cs5536.h> | ||
9 | #include <cs5536/cs5536_pci.h> | ||
10 | |||
11 | #ifdef CONFIG_CS5536_MFGPT | ||
12 | extern void setup_mfgpt0_timer(void); | ||
13 | extern void disable_mfgpt0_counter(void); | ||
14 | extern void enable_mfgpt0_counter(void); | ||
15 | #else | ||
16 | static inline void __maybe_unused setup_mfgpt0_timer(void) | ||
17 | { | ||
18 | } | ||
19 | static inline void __maybe_unused disable_mfgpt0_counter(void) | ||
20 | { | ||
21 | } | ||
22 | static inline void __maybe_unused enable_mfgpt0_counter(void) | ||
23 | { | ||
24 | } | ||
25 | #endif | ||
26 | |||
27 | #define MFGPT_TICK_RATE 14318000 | ||
28 | #define COMPARE ((MFGPT_TICK_RATE + HZ/2) / HZ) | ||
29 | |||
30 | #define MFGPT_BASE mfgpt_base | ||
31 | #define MFGPT0_CMP2 (MFGPT_BASE + 2) | ||
32 | #define MFGPT0_CNT (MFGPT_BASE + 4) | ||
33 | #define MFGPT0_SETUP (MFGPT_BASE + 6) | ||
34 | |||
35 | #endif /*!_CS5536_MFGPT_H */ | ||
diff --git a/arch/mips/include/asm/mach-loongson/cs5536/cs5536_pci.h b/arch/mips/include/asm/mach-loongson/cs5536/cs5536_pci.h new file mode 100644 index 000000000000..0dca9c89ee7c --- /dev/null +++ b/arch/mips/include/asm/mach-loongson/cs5536/cs5536_pci.h | |||
@@ -0,0 +1,153 @@ | |||
1 | /* | ||
2 | * the definition file of cs5536 Virtual Support Module(VSM). | ||
3 | * pci configuration space can be accessed through the VSM, so | ||
4 | * there is no need of the MSR read/write now, except the spec. | ||
5 | * MSR registers which are not implemented yet. | ||
6 | * | ||
7 | * Copyright (C) 2007 Lemote Inc. | ||
8 | * Author : jlliu, liujl@lemote.com | ||
9 | */ | ||
10 | |||
11 | #ifndef _CS5536_PCI_H | ||
12 | #define _CS5536_PCI_H | ||
13 | |||
14 | #include <linux/types.h> | ||
15 | #include <linux/pci_regs.h> | ||
16 | |||
17 | extern void cs5536_pci_conf_write4(int function, int reg, u32 value); | ||
18 | extern u32 cs5536_pci_conf_read4(int function, int reg); | ||
19 | |||
20 | #define CS5536_ACC_INTR 9 | ||
21 | #define CS5536_IDE_INTR 14 | ||
22 | #define CS5536_USB_INTR 11 | ||
23 | #define CS5536_MFGPT_INTR 5 | ||
24 | #define CS5536_UART1_INTR 4 | ||
25 | #define CS5536_UART2_INTR 3 | ||
26 | |||
27 | /************** PCI BUS DEVICE FUNCTION ***************/ | ||
28 | |||
29 | /* | ||
30 | * PCI bus device function | ||
31 | */ | ||
32 | #define PCI_BUS_CS5536 0 | ||
33 | #define PCI_IDSEL_CS5536 14 | ||
34 | |||
35 | /********** STANDARD PCI-2.2 EXPANSION ****************/ | ||
36 | |||
37 | /* | ||
38 | * PCI configuration space | ||
39 | * we have to virtualize the PCI configure space head, so we should | ||
40 | * define the necessary IDs and some others. | ||
41 | */ | ||
42 | |||
43 | /* CONFIG of PCI VENDOR ID*/ | ||
44 | #define CFG_PCI_VENDOR_ID(mod_dev_id, sys_vendor_id) \ | ||
45 | (((mod_dev_id) << 16) | (sys_vendor_id)) | ||
46 | |||
47 | /* VENDOR ID */ | ||
48 | #define CS5536_VENDOR_ID 0x1022 | ||
49 | |||
50 | /* DEVICE ID */ | ||
51 | #define CS5536_ISA_DEVICE_ID 0x2090 | ||
52 | #define CS5536_IDE_DEVICE_ID 0x209a | ||
53 | #define CS5536_ACC_DEVICE_ID 0x2093 | ||
54 | #define CS5536_OHCI_DEVICE_ID 0x2094 | ||
55 | #define CS5536_EHCI_DEVICE_ID 0x2095 | ||
56 | |||
57 | /* CLASS CODE : CLASS SUB-CLASS INTERFACE */ | ||
58 | #define CS5536_ISA_CLASS_CODE 0x060100 | ||
59 | #define CS5536_IDE_CLASS_CODE 0x010180 | ||
60 | #define CS5536_ACC_CLASS_CODE 0x040100 | ||
61 | #define CS5536_OHCI_CLASS_CODE 0x0C0310 | ||
62 | #define CS5536_EHCI_CLASS_CODE 0x0C0320 | ||
63 | |||
64 | /* BHLC : BIST HEADER-TYPE LATENCY-TIMER CACHE-LINE-SIZE */ | ||
65 | |||
66 | #define CFG_PCI_CACHE_LINE_SIZE(header_type, latency_timer) \ | ||
67 | ((PCI_NONE_BIST << 24) | ((header_type) << 16) \ | ||
68 | | ((latency_timer) << 8) | PCI_NORMAL_CACHE_LINE_SIZE); | ||
69 | |||
70 | #define PCI_NONE_BIST 0x00 /* RO not implemented yet. */ | ||
71 | #define PCI_BRIDGE_HEADER_TYPE 0x80 /* RO */ | ||
72 | #define PCI_NORMAL_HEADER_TYPE 0x00 | ||
73 | #define PCI_NORMAL_LATENCY_TIMER 0x00 | ||
74 | #define PCI_NORMAL_CACHE_LINE_SIZE 0x08 /* RW */ | ||
75 | |||
76 | /* BAR */ | ||
77 | #define PCI_BAR0_REG 0x10 | ||
78 | #define PCI_BAR1_REG 0x14 | ||
79 | #define PCI_BAR2_REG 0x18 | ||
80 | #define PCI_BAR3_REG 0x1c | ||
81 | #define PCI_BAR4_REG 0x20 | ||
82 | #define PCI_BAR5_REG 0x24 | ||
83 | #define PCI_BAR_COUNT 6 | ||
84 | #define PCI_BAR_RANGE_MASK 0xFFFFFFFF | ||
85 | |||
86 | /* CARDBUS CIS POINTER */ | ||
87 | #define PCI_CARDBUS_CIS_POINTER 0x00000000 | ||
88 | |||
89 | /* SUBSYSTEM VENDOR ID */ | ||
90 | #define CS5536_SUB_VENDOR_ID CS5536_VENDOR_ID | ||
91 | |||
92 | /* SUBSYSTEM ID */ | ||
93 | #define CS5536_ISA_SUB_ID CS5536_ISA_DEVICE_ID | ||
94 | #define CS5536_IDE_SUB_ID CS5536_IDE_DEVICE_ID | ||
95 | #define CS5536_ACC_SUB_ID CS5536_ACC_DEVICE_ID | ||
96 | #define CS5536_OHCI_SUB_ID CS5536_OHCI_DEVICE_ID | ||
97 | #define CS5536_EHCI_SUB_ID CS5536_EHCI_DEVICE_ID | ||
98 | |||
99 | /* EXPANSION ROM BAR */ | ||
100 | #define PCI_EXPANSION_ROM_BAR 0x00000000 | ||
101 | |||
102 | /* CAPABILITIES POINTER */ | ||
103 | #define PCI_CAPLIST_POINTER 0x00000000 | ||
104 | #define PCI_CAPLIST_USB_POINTER 0x40 | ||
105 | /* INTERRUPT */ | ||
106 | |||
107 | #define CFG_PCI_INTERRUPT_LINE(pin, mod_intr) \ | ||
108 | ((PCI_MAX_LATENCY << 24) | (PCI_MIN_GRANT << 16) | \ | ||
109 | ((pin) << 8) | (mod_intr)) | ||
110 | |||
111 | #define PCI_MAX_LATENCY 0x40 | ||
112 | #define PCI_MIN_GRANT 0x00 | ||
113 | #define PCI_DEFAULT_PIN 0x01 | ||
114 | |||
115 | /*********** EXPANSION PCI REG ************************/ | ||
116 | |||
117 | /* | ||
118 | * ISA EXPANSION | ||
119 | */ | ||
120 | #define PCI_UART1_INT_REG 0x50 | ||
121 | #define PCI_UART2_INT_REG 0x54 | ||
122 | #define PCI_ISA_FIXUP_REG 0x58 | ||
123 | |||
124 | /* | ||
125 | * IDE EXPANSION | ||
126 | */ | ||
127 | #define PCI_IDE_CFG_REG 0x40 | ||
128 | #define CS5536_IDE_FLASH_SIGNATURE 0xDEADBEEF | ||
129 | #define PCI_IDE_DTC_REG 0x48 | ||
130 | #define PCI_IDE_CAST_REG 0x4C | ||
131 | #define PCI_IDE_ETC_REG 0x50 | ||
132 | #define PCI_IDE_PM_REG 0x54 | ||
133 | #define PCI_IDE_INT_REG 0x60 | ||
134 | |||
135 | /* | ||
136 | * ACC EXPANSION | ||
137 | */ | ||
138 | #define PCI_ACC_INT_REG 0x50 | ||
139 | |||
140 | /* | ||
141 | * OHCI EXPANSION : INTTERUPT IS IMPLEMENTED BY THE OHCI | ||
142 | */ | ||
143 | #define PCI_OHCI_PM_REG 0x40 | ||
144 | #define PCI_OHCI_INT_REG 0x50 | ||
145 | |||
146 | /* | ||
147 | * EHCI EXPANSION | ||
148 | */ | ||
149 | #define PCI_EHCI_LEGSMIEN_REG 0x50 | ||
150 | #define PCI_EHCI_LEGSMISTS_REG 0x54 | ||
151 | #define PCI_EHCI_FLADJ_REG 0x60 | ||
152 | |||
153 | #endif /* _CS5536_PCI_H_ */ | ||
diff --git a/arch/mips/include/asm/mach-loongson/cs5536/cs5536_vsm.h b/arch/mips/include/asm/mach-loongson/cs5536/cs5536_vsm.h new file mode 100644 index 000000000000..6305bea7e18e --- /dev/null +++ b/arch/mips/include/asm/mach-loongson/cs5536/cs5536_vsm.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * the read/write interfaces for Virtual Support Module(VSM) | ||
3 | * | ||
4 | * Copyright (C) 2009 Lemote, Inc. | ||
5 | * Author: Wu Zhangjin <wuzj@lemote.com> | ||
6 | */ | ||
7 | |||
8 | #ifndef _CS5536_VSM_H | ||
9 | #define _CS5536_VSM_H | ||
10 | |||
11 | #include <linux/types.h> | ||
12 | |||
13 | typedef void (*cs5536_pci_vsm_write)(int reg, u32 value); | ||
14 | typedef u32 (*cs5536_pci_vsm_read)(int reg); | ||
15 | |||
16 | #define DECLARE_CS5536_MODULE(name) \ | ||
17 | extern void pci_##name##_write_reg(int reg, u32 value); \ | ||
18 | extern u32 pci_##name##_read_reg(int reg); | ||
19 | |||
20 | /* ide module */ | ||
21 | DECLARE_CS5536_MODULE(ide) | ||
22 | /* acc module */ | ||
23 | DECLARE_CS5536_MODULE(acc) | ||
24 | /* ohci module */ | ||
25 | DECLARE_CS5536_MODULE(ohci) | ||
26 | /* isa module */ | ||
27 | DECLARE_CS5536_MODULE(isa) | ||
28 | /* ehci module */ | ||
29 | DECLARE_CS5536_MODULE(ehci) | ||
30 | |||
31 | #endif /* _CS5536_VSM_H */ | ||
diff --git a/arch/mips/include/asm/mach-loongson/dma-coherence.h b/arch/mips/include/asm/mach-loongson/dma-coherence.h index 71a6851ba833..981c75f91a7d 100644 --- a/arch/mips/include/asm/mach-loongson/dma-coherence.h +++ b/arch/mips/include/asm/mach-loongson/dma-coherence.h | |||
@@ -28,7 +28,11 @@ static inline dma_addr_t plat_map_dma_mem_page(struct device *dev, | |||
28 | static inline unsigned long plat_dma_addr_to_phys(struct device *dev, | 28 | static inline unsigned long plat_dma_addr_to_phys(struct device *dev, |
29 | dma_addr_t dma_addr) | 29 | dma_addr_t dma_addr) |
30 | { | 30 | { |
31 | #if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT) | ||
32 | return (dma_addr > 0x8fffffff) ? dma_addr : (dma_addr & 0x0fffffff); | ||
33 | #else | ||
31 | return dma_addr & 0x7fffffff; | 34 | return dma_addr & 0x7fffffff; |
35 | #endif | ||
32 | } | 36 | } |
33 | 37 | ||
34 | static inline void plat_unmap_dma_mem(struct device *dev, dma_addr_t dma_addr, | 38 | static inline void plat_unmap_dma_mem(struct device *dev, dma_addr_t dma_addr, |
diff --git a/arch/mips/include/asm/mach-loongson/loongson.h b/arch/mips/include/asm/mach-loongson/loongson.h index da70bcf2304e..ee8bc8376972 100644 --- a/arch/mips/include/asm/mach-loongson/loongson.h +++ b/arch/mips/include/asm/mach-loongson/loongson.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology | 2 | * Copyright (C) 2009 Lemote, Inc. |
3 | * Author: Wu Zhangjin <wuzj@lemote.com> | 3 | * Author: Wu Zhangjin <wuzj@lemote.com> |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | 5 | * This program is free software; you can redistribute it and/or modify it |
@@ -15,9 +15,6 @@ | |||
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | 17 | ||
18 | /* there is an internal bonito64-compatiable northbridge in loongson2e/2f */ | ||
19 | #include <asm/mips-boards/bonito64.h> | ||
20 | |||
21 | /* loongson internal northbridge initialization */ | 18 | /* loongson internal northbridge initialization */ |
22 | extern void bonito_irq_init(void); | 19 | extern void bonito_irq_init(void); |
23 | 20 | ||
@@ -32,7 +29,19 @@ extern unsigned long memsize, highmemsize; | |||
32 | /* loongson-specific command line, env and memory initialization */ | 29 | /* loongson-specific command line, env and memory initialization */ |
33 | extern void __init prom_init_memory(void); | 30 | extern void __init prom_init_memory(void); |
34 | extern void __init prom_init_cmdline(void); | 31 | extern void __init prom_init_cmdline(void); |
32 | extern void __init prom_init_machtype(void); | ||
35 | extern void __init prom_init_env(void); | 33 | extern void __init prom_init_env(void); |
34 | #ifdef CONFIG_LOONGSON_UART_BASE | ||
35 | extern unsigned long _loongson_uart_base, loongson_uart_base; | ||
36 | extern void prom_init_loongson_uart_base(void); | ||
37 | #endif | ||
38 | |||
39 | static inline void prom_init_uart_base(void) | ||
40 | { | ||
41 | #ifdef CONFIG_LOONGSON_UART_BASE | ||
42 | prom_init_loongson_uart_base(); | ||
43 | #endif | ||
44 | } | ||
36 | 45 | ||
37 | /* irq operation functions */ | 46 | /* irq operation functions */ |
38 | extern void bonito_irqdispatch(void); | 47 | extern void bonito_irqdispatch(void); |
@@ -40,25 +49,276 @@ extern void __init bonito_irq_init(void); | |||
40 | extern void __init set_irq_trigger_mode(void); | 49 | extern void __init set_irq_trigger_mode(void); |
41 | extern void __init mach_init_irq(void); | 50 | extern void __init mach_init_irq(void); |
42 | extern void mach_irq_dispatch(unsigned int pending); | 51 | extern void mach_irq_dispatch(unsigned int pending); |
52 | extern int mach_i8259_irq(void); | ||
53 | |||
54 | /* We need this in some places... */ | ||
55 | #define delay() ({ \ | ||
56 | int x; \ | ||
57 | for (x = 0; x < 100000; x++) \ | ||
58 | __asm__ __volatile__(""); \ | ||
59 | }) | ||
60 | |||
61 | #define LOONGSON_REG(x) \ | ||
62 | (*(volatile u32 *)((char *)CKSEG1ADDR(LOONGSON_REG_BASE) + (x))) | ||
63 | |||
64 | #define LOONGSON_IRQ_BASE 32 | ||
65 | #define LOONGSON2_PERFCNT_IRQ (MIPS_CPU_IRQ_BASE + 6) /* cpu perf counter */ | ||
66 | |||
67 | #define LOONGSON_FLASH_BASE 0x1c000000 | ||
68 | #define LOONGSON_FLASH_SIZE 0x02000000 /* 32M */ | ||
69 | #define LOONGSON_FLASH_TOP (LOONGSON_FLASH_BASE+LOONGSON_FLASH_SIZE-1) | ||
70 | |||
71 | #define LOONGSON_LIO0_BASE 0x1e000000 | ||
72 | #define LOONGSON_LIO0_SIZE 0x01C00000 /* 28M */ | ||
73 | #define LOONGSON_LIO0_TOP (LOONGSON_LIO0_BASE+LOONGSON_LIO0_SIZE-1) | ||
74 | |||
75 | #define LOONGSON_BOOT_BASE 0x1fc00000 | ||
76 | #define LOONGSON_BOOT_SIZE 0x00100000 /* 1M */ | ||
77 | #define LOONGSON_BOOT_TOP (LOONGSON_BOOT_BASE+LOONGSON_BOOT_SIZE-1) | ||
78 | #define LOONGSON_REG_BASE 0x1fe00000 | ||
79 | #define LOONGSON_REG_SIZE 0x00100000 /* 256Bytes + 256Bytes + ??? */ | ||
80 | #define LOONGSON_REG_TOP (LOONGSON_REG_BASE+LOONGSON_REG_SIZE-1) | ||
81 | |||
82 | #define LOONGSON_LIO1_BASE 0x1ff00000 | ||
83 | #define LOONGSON_LIO1_SIZE 0x00100000 /* 1M */ | ||
84 | #define LOONGSON_LIO1_TOP (LOONGSON_LIO1_BASE+LOONGSON_LIO1_SIZE-1) | ||
85 | |||
86 | #define LOONGSON_PCILO0_BASE 0x10000000 | ||
87 | #define LOONGSON_PCILO1_BASE 0x14000000 | ||
88 | #define LOONGSON_PCILO2_BASE 0x18000000 | ||
89 | #define LOONGSON_PCILO_BASE LOONGSON_PCILO0_BASE | ||
90 | #define LOONGSON_PCILO_SIZE 0x0c000000 /* 64M * 3 */ | ||
91 | #define LOONGSON_PCILO_TOP (LOONGSON_PCILO0_BASE+LOONGSON_PCILO_SIZE-1) | ||
92 | |||
93 | #define LOONGSON_PCICFG_BASE 0x1fe80000 | ||
94 | #define LOONGSON_PCICFG_SIZE 0x00000800 /* 2K */ | ||
95 | #define LOONGSON_PCICFG_TOP (LOONGSON_PCICFG_BASE+LOONGSON_PCICFG_SIZE-1) | ||
96 | #define LOONGSON_PCIIO_BASE 0x1fd00000 | ||
97 | #define LOONGSON_PCIIO_SIZE 0x00100000 /* 1M */ | ||
98 | #define LOONGSON_PCIIO_TOP (LOONGSON_PCIIO_BASE+LOONGSON_PCIIO_SIZE-1) | ||
99 | |||
100 | /* Loongson Register Bases */ | ||
101 | |||
102 | #define LOONGSON_PCICONFIGBASE 0x00 | ||
103 | #define LOONGSON_REGBASE 0x100 | ||
43 | 104 | ||
44 | /* PCI Configuration Registers */ | 105 | /* PCI Configuration Registers */ |
45 | #define LOONGSON_PCI_ISR4C BONITO_PCI_REG(0x4c) | 106 | |
107 | #define LOONGSON_PCI_REG(x) LOONGSON_REG(LOONGSON_PCICONFIGBASE + (x)) | ||
108 | #define LOONGSON_PCIDID LOONGSON_PCI_REG(0x00) | ||
109 | #define LOONGSON_PCICMD LOONGSON_PCI_REG(0x04) | ||
110 | #define LOONGSON_PCICLASS LOONGSON_PCI_REG(0x08) | ||
111 | #define LOONGSON_PCILTIMER LOONGSON_PCI_REG(0x0c) | ||
112 | #define LOONGSON_PCIBASE0 LOONGSON_PCI_REG(0x10) | ||
113 | #define LOONGSON_PCIBASE1 LOONGSON_PCI_REG(0x14) | ||
114 | #define LOONGSON_PCIBASE2 LOONGSON_PCI_REG(0x18) | ||
115 | #define LOONGSON_PCIBASE3 LOONGSON_PCI_REG(0x1c) | ||
116 | #define LOONGSON_PCIBASE4 LOONGSON_PCI_REG(0x20) | ||
117 | #define LOONGSON_PCIEXPRBASE LOONGSON_PCI_REG(0x30) | ||
118 | #define LOONGSON_PCIINT LOONGSON_PCI_REG(0x3c) | ||
119 | |||
120 | #define LOONGSON_PCI_ISR4C LOONGSON_PCI_REG(0x4c) | ||
121 | |||
122 | #define LOONGSON_PCICMD_PERR_CLR 0x80000000 | ||
123 | #define LOONGSON_PCICMD_SERR_CLR 0x40000000 | ||
124 | #define LOONGSON_PCICMD_MABORT_CLR 0x20000000 | ||
125 | #define LOONGSON_PCICMD_MTABORT_CLR 0x10000000 | ||
126 | #define LOONGSON_PCICMD_TABORT_CLR 0x08000000 | ||
127 | #define LOONGSON_PCICMD_MPERR_CLR 0x01000000 | ||
128 | #define LOONGSON_PCICMD_PERRRESPEN 0x00000040 | ||
129 | #define LOONGSON_PCICMD_ASTEPEN 0x00000080 | ||
130 | #define LOONGSON_PCICMD_SERREN 0x00000100 | ||
131 | #define LOONGSON_PCILTIMER_BUSLATENCY 0x0000ff00 | ||
132 | #define LOONGSON_PCILTIMER_BUSLATENCY_SHIFT 8 | ||
133 | |||
134 | /* Loongson h/w Configuration */ | ||
135 | |||
136 | #define LOONGSON_GENCFG_OFFSET 0x4 | ||
137 | #define LOONGSON_GENCFG LOONGSON_REG(LOONGSON_REGBASE + LOONGSON_GENCFG_OFFSET) | ||
138 | |||
139 | #define LOONGSON_GENCFG_DEBUGMODE 0x00000001 | ||
140 | #define LOONGSON_GENCFG_SNOOPEN 0x00000002 | ||
141 | #define LOONGSON_GENCFG_CPUSELFRESET 0x00000004 | ||
142 | |||
143 | #define LOONGSON_GENCFG_FORCE_IRQA 0x00000008 | ||
144 | #define LOONGSON_GENCFG_IRQA_ISOUT 0x00000010 | ||
145 | #define LOONGSON_GENCFG_IRQA_FROM_INT1 0x00000020 | ||
146 | #define LOONGSON_GENCFG_BYTESWAP 0x00000040 | ||
147 | |||
148 | #define LOONGSON_GENCFG_UNCACHED 0x00000080 | ||
149 | #define LOONGSON_GENCFG_PREFETCHEN 0x00000100 | ||
150 | #define LOONGSON_GENCFG_WBEHINDEN 0x00000200 | ||
151 | #define LOONGSON_GENCFG_CACHEALG 0x00000c00 | ||
152 | #define LOONGSON_GENCFG_CACHEALG_SHIFT 10 | ||
153 | #define LOONGSON_GENCFG_PCIQUEUE 0x00001000 | ||
154 | #define LOONGSON_GENCFG_CACHESTOP 0x00002000 | ||
155 | #define LOONGSON_GENCFG_MSTRBYTESWAP 0x00004000 | ||
156 | #define LOONGSON_GENCFG_BUSERREN 0x00008000 | ||
157 | #define LOONGSON_GENCFG_NORETRYTIMEOUT 0x00010000 | ||
158 | #define LOONGSON_GENCFG_SHORTCOPYTIMEOUT 0x00020000 | ||
159 | |||
160 | /* PCI address map control */ | ||
161 | |||
162 | #define LOONGSON_PCIMAP LOONGSON_REG(LOONGSON_REGBASE + 0x10) | ||
163 | #define LOONGSON_PCIMEMBASECFG LOONGSON_REG(LOONGSON_REGBASE + 0x14) | ||
164 | #define LOONGSON_PCIMAP_CFG LOONGSON_REG(LOONGSON_REGBASE + 0x18) | ||
165 | |||
166 | /* GPIO Regs - r/w */ | ||
167 | |||
168 | #define LOONGSON_GPIODATA LOONGSON_REG(LOONGSON_REGBASE + 0x1c) | ||
169 | #define LOONGSON_GPIOIE LOONGSON_REG(LOONGSON_REGBASE + 0x20) | ||
170 | |||
171 | /* ICU Configuration Regs - r/w */ | ||
172 | |||
173 | #define LOONGSON_INTEDGE LOONGSON_REG(LOONGSON_REGBASE + 0x24) | ||
174 | #define LOONGSON_INTSTEER LOONGSON_REG(LOONGSON_REGBASE + 0x28) | ||
175 | #define LOONGSON_INTPOL LOONGSON_REG(LOONGSON_REGBASE + 0x2c) | ||
176 | |||
177 | /* ICU Enable Regs - IntEn & IntISR are r/o. */ | ||
178 | |||
179 | #define LOONGSON_INTENSET LOONGSON_REG(LOONGSON_REGBASE + 0x30) | ||
180 | #define LOONGSON_INTENCLR LOONGSON_REG(LOONGSON_REGBASE + 0x34) | ||
181 | #define LOONGSON_INTEN LOONGSON_REG(LOONGSON_REGBASE + 0x38) | ||
182 | #define LOONGSON_INTISR LOONGSON_REG(LOONGSON_REGBASE + 0x3c) | ||
183 | |||
184 | /* ICU */ | ||
185 | #define LOONGSON_ICU_MBOXES 0x0000000f | ||
186 | #define LOONGSON_ICU_MBOXES_SHIFT 0 | ||
187 | #define LOONGSON_ICU_DMARDY 0x00000010 | ||
188 | #define LOONGSON_ICU_DMAEMPTY 0x00000020 | ||
189 | #define LOONGSON_ICU_COPYRDY 0x00000040 | ||
190 | #define LOONGSON_ICU_COPYEMPTY 0x00000080 | ||
191 | #define LOONGSON_ICU_COPYERR 0x00000100 | ||
192 | #define LOONGSON_ICU_PCIIRQ 0x00000200 | ||
193 | #define LOONGSON_ICU_MASTERERR 0x00000400 | ||
194 | #define LOONGSON_ICU_SYSTEMERR 0x00000800 | ||
195 | #define LOONGSON_ICU_DRAMPERR 0x00001000 | ||
196 | #define LOONGSON_ICU_RETRYERR 0x00002000 | ||
197 | #define LOONGSON_ICU_GPIOS 0x01ff0000 | ||
198 | #define LOONGSON_ICU_GPIOS_SHIFT 16 | ||
199 | #define LOONGSON_ICU_GPINS 0x7e000000 | ||
200 | #define LOONGSON_ICU_GPINS_SHIFT 25 | ||
201 | #define LOONGSON_ICU_MBOX(N) (1<<(LOONGSON_ICU_MBOXES_SHIFT+(N))) | ||
202 | #define LOONGSON_ICU_GPIO(N) (1<<(LOONGSON_ICU_GPIOS_SHIFT+(N))) | ||
203 | #define LOONGSON_ICU_GPIN(N) (1<<(LOONGSON_ICU_GPINS_SHIFT+(N))) | ||
204 | |||
205 | /* PCI prefetch window base & mask */ | ||
206 | |||
207 | #define LOONGSON_MEM_WIN_BASE_L LOONGSON_REG(LOONGSON_REGBASE + 0x40) | ||
208 | #define LOONGSON_MEM_WIN_BASE_H LOONGSON_REG(LOONGSON_REGBASE + 0x44) | ||
209 | #define LOONGSON_MEM_WIN_MASK_L LOONGSON_REG(LOONGSON_REGBASE + 0x48) | ||
210 | #define LOONGSON_MEM_WIN_MASK_H LOONGSON_REG(LOONGSON_REGBASE + 0x4c) | ||
46 | 211 | ||
47 | /* PCI_Hit*_Sel_* */ | 212 | /* PCI_Hit*_Sel_* */ |
48 | 213 | ||
49 | #define LOONGSON_PCI_HIT0_SEL_L BONITO(BONITO_REGBASE + 0x50) | 214 | #define LOONGSON_PCI_HIT0_SEL_L LOONGSON_REG(LOONGSON_REGBASE + 0x50) |
50 | #define LOONGSON_PCI_HIT0_SEL_H BONITO(BONITO_REGBASE + 0x54) | 215 | #define LOONGSON_PCI_HIT0_SEL_H LOONGSON_REG(LOONGSON_REGBASE + 0x54) |
51 | #define LOONGSON_PCI_HIT1_SEL_L BONITO(BONITO_REGBASE + 0x58) | 216 | #define LOONGSON_PCI_HIT1_SEL_L LOONGSON_REG(LOONGSON_REGBASE + 0x58) |
52 | #define LOONGSON_PCI_HIT1_SEL_H BONITO(BONITO_REGBASE + 0x5c) | 217 | #define LOONGSON_PCI_HIT1_SEL_H LOONGSON_REG(LOONGSON_REGBASE + 0x5c) |
53 | #define LOONGSON_PCI_HIT2_SEL_L BONITO(BONITO_REGBASE + 0x60) | 218 | #define LOONGSON_PCI_HIT2_SEL_L LOONGSON_REG(LOONGSON_REGBASE + 0x60) |
54 | #define LOONGSON_PCI_HIT2_SEL_H BONITO(BONITO_REGBASE + 0x64) | 219 | #define LOONGSON_PCI_HIT2_SEL_H LOONGSON_REG(LOONGSON_REGBASE + 0x64) |
55 | 220 | ||
56 | /* PXArb Config & Status */ | 221 | /* PXArb Config & Status */ |
57 | 222 | ||
58 | #define LOONGSON_PXARB_CFG BONITO(BONITO_REGBASE + 0x68) | 223 | #define LOONGSON_PXARB_CFG LOONGSON_REG(LOONGSON_REGBASE + 0x68) |
59 | #define LOONGSON_PXARB_STATUS BONITO(BONITO_REGBASE + 0x6c) | 224 | #define LOONGSON_PXARB_STATUS LOONGSON_REG(LOONGSON_REGBASE + 0x6c) |
225 | |||
226 | /* pcimap */ | ||
227 | |||
228 | #define LOONGSON_PCIMAP_PCIMAP_LO0 0x0000003f | ||
229 | #define LOONGSON_PCIMAP_PCIMAP_LO0_SHIFT 0 | ||
230 | #define LOONGSON_PCIMAP_PCIMAP_LO1 0x00000fc0 | ||
231 | #define LOONGSON_PCIMAP_PCIMAP_LO1_SHIFT 6 | ||
232 | #define LOONGSON_PCIMAP_PCIMAP_LO2 0x0003f000 | ||
233 | #define LOONGSON_PCIMAP_PCIMAP_LO2_SHIFT 12 | ||
234 | #define LOONGSON_PCIMAP_PCIMAP_2 0x00040000 | ||
235 | #define LOONGSON_PCIMAP_WIN(WIN, ADDR) \ | ||
236 | ((((ADDR)>>26) & LOONGSON_PCIMAP_PCIMAP_LO0) << ((WIN)*6)) | ||
237 | |||
238 | #ifdef CONFIG_CPU_SUPPORTS_CPUFREQ | ||
239 | #include <linux/cpufreq.h> | ||
240 | extern void loongson2_cpu_wait(void); | ||
241 | extern struct cpufreq_frequency_table loongson2_clockmod_table[]; | ||
242 | |||
243 | /* Chip Config */ | ||
244 | #define LOONGSON_CHIPCFG0 LOONGSON_REG(LOONGSON_REGBASE + 0x80) | ||
245 | #endif | ||
246 | |||
247 | /* | ||
248 | * address windows configuration module | ||
249 | * | ||
250 | * loongson2e do not have this module | ||
251 | */ | ||
252 | #ifdef CONFIG_CPU_SUPPORTS_ADDRWINCFG | ||
253 | |||
254 | /* address window config module base address */ | ||
255 | #define LOONGSON_ADDRWINCFG_BASE 0x3ff00000ul | ||
256 | #define LOONGSON_ADDRWINCFG_SIZE 0x180 | ||
257 | |||
258 | extern unsigned long _loongson_addrwincfg_base; | ||
259 | #define LOONGSON_ADDRWINCFG(offset) \ | ||
260 | (*(volatile u64 *)(_loongson_addrwincfg_base + (offset))) | ||
261 | |||
262 | #define CPU_WIN0_BASE LOONGSON_ADDRWINCFG(0x00) | ||
263 | #define CPU_WIN1_BASE LOONGSON_ADDRWINCFG(0x08) | ||
264 | #define CPU_WIN2_BASE LOONGSON_ADDRWINCFG(0x10) | ||
265 | #define CPU_WIN3_BASE LOONGSON_ADDRWINCFG(0x18) | ||
266 | |||
267 | #define CPU_WIN0_MASK LOONGSON_ADDRWINCFG(0x20) | ||
268 | #define CPU_WIN1_MASK LOONGSON_ADDRWINCFG(0x28) | ||
269 | #define CPU_WIN2_MASK LOONGSON_ADDRWINCFG(0x30) | ||
270 | #define CPU_WIN3_MASK LOONGSON_ADDRWINCFG(0x38) | ||
271 | |||
272 | #define CPU_WIN0_MMAP LOONGSON_ADDRWINCFG(0x40) | ||
273 | #define CPU_WIN1_MMAP LOONGSON_ADDRWINCFG(0x48) | ||
274 | #define CPU_WIN2_MMAP LOONGSON_ADDRWINCFG(0x50) | ||
275 | #define CPU_WIN3_MMAP LOONGSON_ADDRWINCFG(0x58) | ||
276 | |||
277 | #define PCIDMA_WIN0_BASE LOONGSON_ADDRWINCFG(0x60) | ||
278 | #define PCIDMA_WIN1_BASE LOONGSON_ADDRWINCFG(0x68) | ||
279 | #define PCIDMA_WIN2_BASE LOONGSON_ADDRWINCFG(0x70) | ||
280 | #define PCIDMA_WIN3_BASE LOONGSON_ADDRWINCFG(0x78) | ||
281 | |||
282 | #define PCIDMA_WIN0_MASK LOONGSON_ADDRWINCFG(0x80) | ||
283 | #define PCIDMA_WIN1_MASK LOONGSON_ADDRWINCFG(0x88) | ||
284 | #define PCIDMA_WIN2_MASK LOONGSON_ADDRWINCFG(0x90) | ||
285 | #define PCIDMA_WIN3_MASK LOONGSON_ADDRWINCFG(0x98) | ||
286 | |||
287 | #define PCIDMA_WIN0_MMAP LOONGSON_ADDRWINCFG(0xa0) | ||
288 | #define PCIDMA_WIN1_MMAP LOONGSON_ADDRWINCFG(0xa8) | ||
289 | #define PCIDMA_WIN2_MMAP LOONGSON_ADDRWINCFG(0xb0) | ||
290 | #define PCIDMA_WIN3_MMAP LOONGSON_ADDRWINCFG(0xb8) | ||
291 | |||
292 | #define ADDRWIN_WIN0 0 | ||
293 | #define ADDRWIN_WIN1 1 | ||
294 | #define ADDRWIN_WIN2 2 | ||
295 | #define ADDRWIN_WIN3 3 | ||
296 | |||
297 | #define ADDRWIN_MAP_DST_DDR 0 | ||
298 | #define ADDRWIN_MAP_DST_PCI 1 | ||
299 | #define ADDRWIN_MAP_DST_LIO 1 | ||
300 | |||
301 | /* | ||
302 | * s: CPU, PCIDMA | ||
303 | * d: DDR, PCI, LIO | ||
304 | * win: 0, 1, 2, 3 | ||
305 | * src: map source | ||
306 | * dst: map destination | ||
307 | * size: ~mask + 1 | ||
308 | */ | ||
309 | #define LOONGSON_ADDRWIN_CFG(s, d, w, src, dst, size) do {\ | ||
310 | s##_WIN##w##_BASE = (src); \ | ||
311 | s##_WIN##w##_MMAP = (src) | ADDRWIN_MAP_DST_##d; \ | ||
312 | s##_WIN##w##_MASK = ~(size-1); \ | ||
313 | } while (0) | ||
314 | |||
315 | #define LOONGSON_ADDRWIN_CPUTOPCI(win, src, dst, size) \ | ||
316 | LOONGSON_ADDRWIN_CFG(CPU, PCI, win, src, dst, size) | ||
317 | #define LOONGSON_ADDRWIN_CPUTODDR(win, src, dst, size) \ | ||
318 | LOONGSON_ADDRWIN_CFG(CPU, DDR, win, src, dst, size) | ||
319 | #define LOONGSON_ADDRWIN_PCITODDR(win, src, dst, size) \ | ||
320 | LOONGSON_ADDRWIN_CFG(PCIDMA, DDR, win, src, dst, size) | ||
60 | 321 | ||
61 | /* loongson2-specific perf counter IRQ */ | 322 | #endif /* ! CONFIG_CPU_SUPPORTS_ADDRWINCFG */ |
62 | #define LOONGSON2_PERFCNT_IRQ (MIPS_CPU_IRQ_BASE + 6) | ||
63 | 323 | ||
64 | #endif /* __ASM_MACH_LOONGSON_LOONGSON_H */ | 324 | #endif /* __ASM_MACH_LOONGSON_LOONGSON_H */ |
diff --git a/arch/mips/include/asm/mach-loongson/machine.h b/arch/mips/include/asm/mach-loongson/machine.h index 206ea2067916..acf8359cb135 100644 --- a/arch/mips/include/asm/mach-loongson/machine.h +++ b/arch/mips/include/asm/mach-loongson/machine.h | |||
@@ -13,10 +13,15 @@ | |||
13 | 13 | ||
14 | #ifdef CONFIG_LEMOTE_FULOONG2E | 14 | #ifdef CONFIG_LEMOTE_FULOONG2E |
15 | 15 | ||
16 | #define LOONGSON_UART_BASE (BONITO_PCIIO_BASE + 0x3f8) | ||
17 | |||
18 | #define LOONGSON_MACHTYPE MACH_LEMOTE_FL2E | 16 | #define LOONGSON_MACHTYPE MACH_LEMOTE_FL2E |
19 | 17 | ||
20 | #endif | 18 | #endif |
21 | 19 | ||
20 | /* use fuloong2f as the default machine of LEMOTE_MACH2F */ | ||
21 | #ifdef CONFIG_LEMOTE_MACH2F | ||
22 | |||
23 | #define LOONGSON_MACHTYPE MACH_LEMOTE_FL2F | ||
24 | |||
25 | #endif | ||
26 | |||
22 | #endif /* __ASM_MACH_LOONGSON_MACHINE_H */ | 27 | #endif /* __ASM_MACH_LOONGSON_MACHINE_H */ |
diff --git a/arch/mips/include/asm/mach-loongson/mem.h b/arch/mips/include/asm/mach-loongson/mem.h index bd7b3cba7e35..e9960f341b96 100644 --- a/arch/mips/include/asm/mach-loongson/mem.h +++ b/arch/mips/include/asm/mach-loongson/mem.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2009 Lemote, Inc. & Institute of Computing Technology | 2 | * Copyright (C) 2009 Lemote, Inc. |
3 | * Author: Wu Zhangjin <wuzj@lemote.com> | 3 | * Author: Wu Zhangjin <wuzj@lemote.com> |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | 5 | * This program is free software; you can redistribute it and/or modify it |
@@ -12,19 +12,30 @@ | |||
12 | #define __ASM_MACH_LOONGSON_MEM_H | 12 | #define __ASM_MACH_LOONGSON_MEM_H |
13 | 13 | ||
14 | /* | 14 | /* |
15 | * On Lemote Loongson 2e | 15 | * high memory space |
16 | * | 16 | * |
17 | * the high memory space starts from 512M. | 17 | * in loongson2e, starts from 512M |
18 | * the peripheral registers reside between 0x1000:0000 and 0x2000:0000. | 18 | * in loongson2f, starts from 2G 256M |
19 | */ | 19 | */ |
20 | #ifdef CONFIG_CPU_LOONGSON2E | ||
21 | #define LOONGSON_HIGHMEM_START 0x20000000 | ||
22 | #else | ||
23 | #define LOONGSON_HIGHMEM_START 0x90000000 | ||
24 | #endif | ||
20 | 25 | ||
21 | #ifdef CONFIG_LEMOTE_FULOONG2E | 26 | /* |
22 | 27 | * the peripheral registers(MMIO): | |
23 | #define LOONGSON_HIGHMEM_START 0x20000000 | 28 | * |
29 | * On the Lemote Loongson 2e system, reside between 0x1000:0000 and 0x2000:0000. | ||
30 | * On the Lemote Loongson 2f system, reside between 0x1000:0000 and 0x8000:0000. | ||
31 | */ | ||
24 | 32 | ||
25 | #define LOONGSON_MMIO_MEM_START 0x10000000 | 33 | #define LOONGSON_MMIO_MEM_START 0x10000000 |
26 | #define LOONGSON_MMIO_MEM_END 0x20000000 | ||
27 | 34 | ||
35 | #ifdef CONFIG_CPU_LOONGSON2E | ||
36 | #define LOONGSON_MMIO_MEM_END 0x20000000 | ||
37 | #else | ||
38 | #define LOONGSON_MMIO_MEM_END 0x80000000 | ||
28 | #endif | 39 | #endif |
29 | 40 | ||
30 | #endif /* __ASM_MACH_LOONGSON_MEM_H */ | 41 | #endif /* __ASM_MACH_LOONGSON_MEM_H */ |
diff --git a/arch/mips/include/asm/mach-loongson/pci.h b/arch/mips/include/asm/mach-loongson/pci.h index f1663ca81da0..a199a4f6de4e 100644 --- a/arch/mips/include/asm/mach-loongson/pci.h +++ b/arch/mips/include/asm/mach-loongson/pci.h | |||
@@ -1,5 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2008 Zhang Le <r0bertz@gentoo.org> | 2 | * Copyright (c) 2008 Zhang Le <r0bertz@gentoo.org> |
3 | * Copyright (c) 2009 Wu Zhangjin <wuzj@lemote.com> | ||
3 | * | 4 | * |
4 | * This program is free software; you can redistribute it | 5 | * This program is free software; you can redistribute it |
5 | * and/or modify it under the terms of the GNU General | 6 | * and/or modify it under the terms of the GNU General |
@@ -22,16 +23,39 @@ | |||
22 | #ifndef __ASM_MACH_LOONGSON_PCI_H_ | 23 | #ifndef __ASM_MACH_LOONGSON_PCI_H_ |
23 | #define __ASM_MACH_LOONGSON_PCI_H_ | 24 | #define __ASM_MACH_LOONGSON_PCI_H_ |
24 | 25 | ||
25 | extern struct pci_ops bonito64_pci_ops; | 26 | extern struct pci_ops loongson_pci_ops; |
26 | 27 | ||
27 | #ifdef CONFIG_LEMOTE_FULOONG2E | 28 | /* this is an offset from mips_io_port_base */ |
29 | #define LOONGSON_PCI_IO_START 0x00004000UL | ||
30 | |||
31 | #ifdef CONFIG_CPU_SUPPORTS_ADDRWINCFG | ||
32 | |||
33 | /* | ||
34 | * we use address window2 to map cpu address space to pci space | ||
35 | * window2: cpu [1G, 2G] -> pci [1G, 2G] | ||
36 | * why not use window 0 & 1? because they are used by cpu when booting. | ||
37 | * window0: cpu [0, 256M] -> ddr [0, 256M] | ||
38 | * window1: cpu [256M, 512M] -> pci [256M, 512M] | ||
39 | */ | ||
40 | |||
41 | /* the smallest LOONGSON_CPU_MEM_SRC can be 512M */ | ||
42 | #define LOONGSON_CPU_MEM_SRC 0x40000000ul /* 1G */ | ||
43 | #define LOONGSON_PCI_MEM_DST LOONGSON_CPU_MEM_SRC | ||
44 | |||
45 | #define LOONGSON_PCI_MEM_START LOONGSON_PCI_MEM_DST | ||
46 | #define LOONGSON_PCI_MEM_END (0x80000000ul-1) /* 2G */ | ||
47 | |||
48 | #define MMAP_CPUTOPCI_SIZE (LOONGSON_PCI_MEM_END - \ | ||
49 | LOONGSON_PCI_MEM_START + 1) | ||
50 | |||
51 | #else /* loongson2f/32bit & loongson2e */ | ||
28 | 52 | ||
29 | /* this pci memory space is mapped by pcimap in pci.c */ | 53 | /* this pci memory space is mapped by pcimap in pci.c */ |
30 | #define LOONGSON_PCI_MEM_START BONITO_PCILO1_BASE | 54 | #define LOONGSON_PCI_MEM_START LOONGSON_PCILO1_BASE |
31 | #define LOONGSON_PCI_MEM_END (BONITO_PCILO1_BASE + 0x04000000 * 2) | 55 | #define LOONGSON_PCI_MEM_END (LOONGSON_PCILO1_BASE + 0x04000000 * 2) |
32 | /* this is an offset from mips_io_port_base */ | 56 | /* this is an offset from mips_io_port_base */ |
33 | #define LOONGSON_PCI_IO_START 0x00004000UL | 57 | #define LOONGSON_PCI_IO_START 0x00004000UL |
34 | 58 | ||
35 | #endif | 59 | #endif /* !CONFIG_CPU_SUPPORTS_ADDRWINCFG */ |
36 | 60 | ||
37 | #endif /* !__ASM_MACH_LOONGSON_PCI_H_ */ | 61 | #endif /* !__ASM_MACH_LOONGSON_PCI_H_ */ |
diff --git a/arch/mips/include/asm/mach-powertv/asic.h b/arch/mips/include/asm/mach-powertv/asic.h new file mode 100644 index 000000000000..bcad43a93ebf --- /dev/null +++ b/arch/mips/include/asm/mach-powertv/asic.h | |||
@@ -0,0 +1,107 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 Cisco Systems, Inc. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef _ASM_MACH_POWERTV_ASIC_H | ||
20 | #define _ASM_MACH_POWERTV_ASIC_H | ||
21 | |||
22 | #include <linux/ioport.h> | ||
23 | #include <asm/mach-powertv/asic_regs.h> | ||
24 | |||
25 | #define DVR_CAPABLE (1<<0) | ||
26 | #define PCIE_CAPABLE (1<<1) | ||
27 | #define FFS_CAPABLE (1<<2) | ||
28 | #define DISPLAY_CAPABLE (1<<3) | ||
29 | |||
30 | /* Platform Family types | ||
31 | * For compitability, the new value must be added in the end */ | ||
32 | enum family_type { | ||
33 | FAMILY_8500, | ||
34 | FAMILY_8500RNG, | ||
35 | FAMILY_4500, | ||
36 | FAMILY_1500, | ||
37 | FAMILY_8600, | ||
38 | FAMILY_4600, | ||
39 | FAMILY_4600VZA, | ||
40 | FAMILY_8600VZB, | ||
41 | FAMILY_1500VZE, | ||
42 | FAMILY_1500VZF, | ||
43 | FAMILIES | ||
44 | }; | ||
45 | |||
46 | /* Register maps for each ASIC */ | ||
47 | extern const struct register_map calliope_register_map; | ||
48 | extern const struct register_map cronus_register_map; | ||
49 | extern const struct register_map zeus_register_map; | ||
50 | |||
51 | extern struct resource dvr_cronus_resources[]; | ||
52 | extern struct resource dvr_zeus_resources[]; | ||
53 | extern struct resource non_dvr_calliope_resources[]; | ||
54 | extern struct resource non_dvr_cronus_resources[]; | ||
55 | extern struct resource non_dvr_cronuslite_resources[]; | ||
56 | extern struct resource non_dvr_vz_calliope_resources[]; | ||
57 | extern struct resource non_dvr_vze_calliope_resources[]; | ||
58 | extern struct resource non_dvr_vzf_calliope_resources[]; | ||
59 | extern struct resource non_dvr_zeus_resources[]; | ||
60 | |||
61 | extern void powertv_platform_init(void); | ||
62 | extern void platform_alloc_bootmem(void); | ||
63 | extern enum asic_type platform_get_asic(void); | ||
64 | extern enum family_type platform_get_family(void); | ||
65 | extern int platform_supports_dvr(void); | ||
66 | extern int platform_supports_ffs(void); | ||
67 | extern int platform_supports_pcie(void); | ||
68 | extern int platform_supports_display(void); | ||
69 | extern void configure_platform(void); | ||
70 | extern void platform_configure_usb_ehci(void); | ||
71 | extern void platform_unconfigure_usb_ehci(void); | ||
72 | extern void platform_configure_usb_ohci(void); | ||
73 | extern void platform_unconfigure_usb_ohci(void); | ||
74 | |||
75 | /* Platform Resources */ | ||
76 | #define ASIC_RESOURCE_GET_EXISTS 1 | ||
77 | extern struct resource *asic_resource_get(const char *name); | ||
78 | extern void platform_release_memory(void *baddr, int size); | ||
79 | |||
80 | /* Reboot Cause */ | ||
81 | extern void set_reboot_cause(char code, unsigned int data, unsigned int data2); | ||
82 | extern void set_locked_reboot_cause(char code, unsigned int data, | ||
83 | unsigned int data2); | ||
84 | |||
85 | enum sys_reboot_type { | ||
86 | sys_unknown_reboot = 0x00, /* Unknown reboot cause */ | ||
87 | sys_davic_change = 0x01, /* Reboot due to change in DAVIC | ||
88 | * mode */ | ||
89 | sys_user_reboot = 0x02, /* Reboot initiated by user */ | ||
90 | sys_system_reboot = 0x03, /* Reboot initiated by OS */ | ||
91 | sys_trap_reboot = 0x04, /* Reboot due to a CPU trap */ | ||
92 | sys_silent_reboot = 0x05, /* Silent reboot */ | ||
93 | sys_boot_ldr_reboot = 0x06, /* Bootloader reboot */ | ||
94 | sys_power_up_reboot = 0x07, /* Power on bootup. Older | ||
95 | * drivers may report as | ||
96 | * userReboot. */ | ||
97 | sys_code_change = 0x08, /* Reboot to take code change. | ||
98 | * Older drivers may report as | ||
99 | * userReboot. */ | ||
100 | sys_hardware_reset = 0x09, /* HW watchdog or front-panel | ||
101 | * reset button reset. Older | ||
102 | * drivers may report as | ||
103 | * userReboot. */ | ||
104 | sys_watchdogInterrupt = 0x0A /* Pre-watchdog interrupt */ | ||
105 | }; | ||
106 | |||
107 | #endif /* _ASM_MACH_POWERTV_ASIC_H */ | ||
diff --git a/arch/mips/include/asm/mach-powertv/asic_regs.h b/arch/mips/include/asm/mach-powertv/asic_regs.h new file mode 100644 index 000000000000..9a65c93782f9 --- /dev/null +++ b/arch/mips/include/asm/mach-powertv/asic_regs.h | |||
@@ -0,0 +1,155 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 Cisco Systems, Inc. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_MACH_POWERTV_ASIC_H_ | ||
20 | #define __ASM_MACH_POWERTV_ASIC_H_ | ||
21 | #include <linux/io.h> | ||
22 | |||
23 | /* ASIC types */ | ||
24 | enum asic_type { | ||
25 | ASIC_UNKNOWN, | ||
26 | ASIC_ZEUS, | ||
27 | ASIC_CALLIOPE, | ||
28 | ASIC_CRONUS, | ||
29 | ASIC_CRONUSLITE, | ||
30 | ASICS | ||
31 | }; | ||
32 | |||
33 | /* hardcoded values read from Chip Version registers */ | ||
34 | #define CRONUS_10 0x0B4C1C20 | ||
35 | #define CRONUS_11 0x0B4C1C21 | ||
36 | #define CRONUSLITE_10 0x0B4C1C40 | ||
37 | |||
38 | #define NAND_FLASH_BASE 0x03000000 | ||
39 | #define ZEUS_IO_BASE 0x09000000 | ||
40 | #define CALLIOPE_IO_BASE 0x08000000 | ||
41 | #define CRONUS_IO_BASE 0x09000000 | ||
42 | #define ASIC_IO_SIZE 0x01000000 | ||
43 | |||
44 | /* Definitions for backward compatibility */ | ||
45 | #define UART1_INTSTAT uart1_intstat | ||
46 | #define UART1_INTEN uart1_inten | ||
47 | #define UART1_CONFIG1 uart1_config1 | ||
48 | #define UART1_CONFIG2 uart1_config2 | ||
49 | #define UART1_DIVISORHI uart1_divisorhi | ||
50 | #define UART1_DIVISORLO uart1_divisorlo | ||
51 | #define UART1_DATA uart1_data | ||
52 | #define UART1_STATUS uart1_status | ||
53 | |||
54 | /* ASIC register enumeration */ | ||
55 | struct register_map { | ||
56 | u32 eic_slow0_strt_add; | ||
57 | u32 eic_cfg_bits; | ||
58 | u32 eic_ready_status; | ||
59 | |||
60 | u32 chipver3; | ||
61 | u32 chipver2; | ||
62 | u32 chipver1; | ||
63 | u32 chipver0; | ||
64 | |||
65 | u32 uart1_intstat; | ||
66 | u32 uart1_inten; | ||
67 | u32 uart1_config1; | ||
68 | u32 uart1_config2; | ||
69 | u32 uart1_divisorhi; | ||
70 | u32 uart1_divisorlo; | ||
71 | u32 uart1_data; | ||
72 | u32 uart1_status; | ||
73 | |||
74 | u32 int_stat_3; | ||
75 | u32 int_stat_2; | ||
76 | u32 int_stat_1; | ||
77 | u32 int_stat_0; | ||
78 | u32 int_config; | ||
79 | u32 int_int_scan; | ||
80 | u32 ien_int_3; | ||
81 | u32 ien_int_2; | ||
82 | u32 ien_int_1; | ||
83 | u32 ien_int_0; | ||
84 | u32 int_level_3_3; | ||
85 | u32 int_level_3_2; | ||
86 | u32 int_level_3_1; | ||
87 | u32 int_level_3_0; | ||
88 | u32 int_level_2_3; | ||
89 | u32 int_level_2_2; | ||
90 | u32 int_level_2_1; | ||
91 | u32 int_level_2_0; | ||
92 | u32 int_level_1_3; | ||
93 | u32 int_level_1_2; | ||
94 | u32 int_level_1_1; | ||
95 | u32 int_level_1_0; | ||
96 | u32 int_level_0_3; | ||
97 | u32 int_level_0_2; | ||
98 | u32 int_level_0_1; | ||
99 | u32 int_level_0_0; | ||
100 | u32 int_docsis_en; | ||
101 | |||
102 | u32 mips_pll_setup; | ||
103 | u32 usb_fs; | ||
104 | u32 test_bus; | ||
105 | u32 crt_spare; | ||
106 | u32 usb2_ohci_int_mask; | ||
107 | u32 usb2_strap; | ||
108 | u32 ehci_hcapbase; | ||
109 | u32 ohci_hc_revision; | ||
110 | u32 bcm1_bs_lmi_steer; | ||
111 | u32 usb2_control; | ||
112 | u32 usb2_stbus_obc; | ||
113 | u32 usb2_stbus_mess_size; | ||
114 | u32 usb2_stbus_chunk_size; | ||
115 | |||
116 | u32 pcie_regs; | ||
117 | u32 tim_ch; | ||
118 | u32 tim_cl; | ||
119 | u32 gpio_dout; | ||
120 | u32 gpio_din; | ||
121 | u32 gpio_dir; | ||
122 | u32 watchdog; | ||
123 | u32 front_panel; | ||
124 | |||
125 | u32 register_maps; | ||
126 | }; | ||
127 | |||
128 | extern enum asic_type asic; | ||
129 | extern const struct register_map *register_map; | ||
130 | extern unsigned long asic_phy_base; /* Physical address of ASIC */ | ||
131 | extern unsigned long asic_base; /* Virtual address of ASIC */ | ||
132 | |||
133 | /* | ||
134 | * Macros to interface to registers through their ioremapped address | ||
135 | * asic_reg_offset Returns the offset of a given register from the start | ||
136 | * of the ASIC address space | ||
137 | * asic_reg_phys_addr Returns the physical address of the given register | ||
138 | * asic_reg_addr Returns the iomapped virtual address of the given | ||
139 | * register. | ||
140 | */ | ||
141 | #define asic_reg_offset(x) (register_map->x) | ||
142 | #define asic_reg_phys_addr(x) (asic_phy_base + asic_reg_offset(x)) | ||
143 | #define asic_reg_addr(x) \ | ||
144 | ((unsigned int *) (asic_base + asic_reg_offset(x))) | ||
145 | |||
146 | /* | ||
147 | * The asic_reg macro is gone. It should be replaced by either asic_read or | ||
148 | * asic_write, as appropriate. | ||
149 | */ | ||
150 | |||
151 | #define asic_read(x) readl(asic_reg_addr(x)) | ||
152 | #define asic_write(v, x) writel(v, asic_reg_addr(x)) | ||
153 | |||
154 | extern void asic_irq_init(void); | ||
155 | #endif | ||
diff --git a/arch/mips/include/asm/mach-powertv/dma-coherence.h b/arch/mips/include/asm/mach-powertv/dma-coherence.h new file mode 100644 index 000000000000..5b8d5ebeb838 --- /dev/null +++ b/arch/mips/include/asm/mach-powertv/dma-coherence.h | |||
@@ -0,0 +1,119 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Version from mach-generic modified to support PowerTV port | ||
7 | * Portions Copyright (C) 2009 Cisco Systems, Inc. | ||
8 | * Copyright (C) 2006 Ralf Baechle <ralf@linux-mips.org> | ||
9 | * | ||
10 | */ | ||
11 | |||
12 | #ifndef __ASM_MACH_POWERTV_DMA_COHERENCE_H | ||
13 | #define __ASM_MACH_POWERTV_DMA_COHERENCE_H | ||
14 | |||
15 | #include <linux/sched.h> | ||
16 | #include <linux/version.h> | ||
17 | #include <linux/device.h> | ||
18 | #include <asm/mach-powertv/asic.h> | ||
19 | |||
20 | static inline bool is_kseg2(void *addr) | ||
21 | { | ||
22 | return (unsigned long)addr >= KSEG2; | ||
23 | } | ||
24 | |||
25 | static inline unsigned long virt_to_phys_from_pte(void *addr) | ||
26 | { | ||
27 | pgd_t *pgd; | ||
28 | pud_t *pud; | ||
29 | pmd_t *pmd; | ||
30 | pte_t *ptep, pte; | ||
31 | |||
32 | unsigned long virt_addr = (unsigned long)addr; | ||
33 | unsigned long phys_addr = 0UL; | ||
34 | |||
35 | /* get the page global directory. */ | ||
36 | pgd = pgd_offset_k(virt_addr); | ||
37 | |||
38 | if (!pgd_none(*pgd)) { | ||
39 | /* get the page upper directory */ | ||
40 | pud = pud_offset(pgd, virt_addr); | ||
41 | if (!pud_none(*pud)) { | ||
42 | /* get the page middle directory */ | ||
43 | pmd = pmd_offset(pud, virt_addr); | ||
44 | if (!pmd_none(*pmd)) { | ||
45 | /* get a pointer to the page table entry */ | ||
46 | ptep = pte_offset(pmd, virt_addr); | ||
47 | pte = *ptep; | ||
48 | /* check for a valid page */ | ||
49 | if (pte_present(pte)) { | ||
50 | /* get the physical address the page is | ||
51 | * refering to */ | ||
52 | phys_addr = (unsigned long) | ||
53 | page_to_phys(pte_page(pte)); | ||
54 | /* add the offset within the page */ | ||
55 | phys_addr |= (virt_addr & ~PAGE_MASK); | ||
56 | } | ||
57 | } | ||
58 | } | ||
59 | } | ||
60 | |||
61 | return phys_addr; | ||
62 | } | ||
63 | |||
64 | static inline dma_addr_t plat_map_dma_mem(struct device *dev, void *addr, | ||
65 | size_t size) | ||
66 | { | ||
67 | if (is_kseg2(addr)) | ||
68 | return phys_to_bus(virt_to_phys_from_pte(addr)); | ||
69 | else | ||
70 | return phys_to_bus(virt_to_phys(addr)); | ||
71 | } | ||
72 | |||
73 | static inline dma_addr_t plat_map_dma_mem_page(struct device *dev, | ||
74 | struct page *page) | ||
75 | { | ||
76 | return phys_to_bus(page_to_phys(page)); | ||
77 | } | ||
78 | |||
79 | static inline unsigned long plat_dma_addr_to_phys(struct device *dev, | ||
80 | dma_addr_t dma_addr) | ||
81 | { | ||
82 | return bus_to_phys(dma_addr); | ||
83 | } | ||
84 | |||
85 | static inline void plat_unmap_dma_mem(struct device *dev, dma_addr_t dma_addr, | ||
86 | size_t size, enum dma_data_direction direction) | ||
87 | { | ||
88 | } | ||
89 | |||
90 | static inline int plat_dma_supported(struct device *dev, u64 mask) | ||
91 | { | ||
92 | /* | ||
93 | * we fall back to GFP_DMA when the mask isn't all 1s, | ||
94 | * so we can't guarantee allocations that must be | ||
95 | * within a tighter range than GFP_DMA.. | ||
96 | */ | ||
97 | if (mask < DMA_BIT_MASK(24)) | ||
98 | return 0; | ||
99 | |||
100 | return 1; | ||
101 | } | ||
102 | |||
103 | static inline void plat_extra_sync_for_device(struct device *dev) | ||
104 | { | ||
105 | return; | ||
106 | } | ||
107 | |||
108 | static inline int plat_dma_mapping_error(struct device *dev, | ||
109 | dma_addr_t dma_addr) | ||
110 | { | ||
111 | return 0; | ||
112 | } | ||
113 | |||
114 | static inline int plat_device_is_coherent(struct device *dev) | ||
115 | { | ||
116 | return 0; | ||
117 | } | ||
118 | |||
119 | #endif /* __ASM_MACH_POWERTV_DMA_COHERENCE_H */ | ||
diff --git a/arch/mips/include/asm/mach-powertv/interrupts.h b/arch/mips/include/asm/mach-powertv/interrupts.h new file mode 100644 index 000000000000..629a57413657 --- /dev/null +++ b/arch/mips/include/asm/mach-powertv/interrupts.h | |||
@@ -0,0 +1,254 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 Cisco Systems, Inc. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef _ASM_MACH_POWERTV_INTERRUPTS_H_ | ||
20 | #define _ASM_MACH_POWERTV_INTERRUPTS_H_ | ||
21 | |||
22 | /* | ||
23 | * Defines for all of the interrupt lines | ||
24 | */ | ||
25 | |||
26 | /* Definitions for backward compatibility */ | ||
27 | #define kIrq_Uart1 irq_uart1 | ||
28 | |||
29 | #define ibase 0 | ||
30 | |||
31 | /*------------- Register: int_stat_3 */ | ||
32 | /* 126 unused (bit 31) */ | ||
33 | #define irq_asc2video (ibase+126) /* ASC 2 Video Interrupt */ | ||
34 | #define irq_asc1video (ibase+125) /* ASC 1 Video Interrupt */ | ||
35 | #define irq_comms_block_wd (ibase+124) /* ASC 1 Video Interrupt */ | ||
36 | #define irq_fdma_mailbox (ibase+123) /* FDMA Mailbox Output */ | ||
37 | #define irq_fdma_gp (ibase+122) /* FDMA GP Output */ | ||
38 | #define irq_mips_pic (ibase+121) /* MIPS Performance Counter | ||
39 | * Interrupt */ | ||
40 | #define irq_mips_timer (ibase+120) /* MIPS Timer Interrupt */ | ||
41 | #define irq_memory_protect (ibase+119) /* Memory Protection Interrupt | ||
42 | * -- Ored by glue logic inside | ||
43 | * SPARC ILC (see | ||
44 | * INT_MEM_PROT_STAT, below, | ||
45 | * for individual interrupts) | ||
46 | */ | ||
47 | /* 118 unused (bit 22) */ | ||
48 | #define irq_sbag (ibase+117) /* SBAG Interrupt -- Ored by | ||
49 | * glue logic inside SPARC ILC | ||
50 | * (see INT_SBAG_STAT, below, | ||
51 | * for individual interrupts) */ | ||
52 | #define irq_qam_b_fec (ibase+116) /* QAM B FEC Interrupt */ | ||
53 | #define irq_qam_a_fec (ibase+115) /* QAM A FEC Interrupt */ | ||
54 | /* 114 unused (bit 18) */ | ||
55 | #define irq_mailbox (ibase+113) /* Mailbox Debug Interrupt -- | ||
56 | * Ored by glue logic inside | ||
57 | * SPARC ILC (see | ||
58 | * INT_MAILBOX_STAT, below, for | ||
59 | * individual interrupts) */ | ||
60 | #define irq_fuse_stat1 (ibase+112) /* Fuse Status 1 */ | ||
61 | #define irq_fuse_stat2 (ibase+111) /* Fuse Status 2 */ | ||
62 | #define irq_fuse_stat3 (ibase+110) /* Blitter Interrupt / Fuse | ||
63 | * Status 3 */ | ||
64 | #define irq_blitter (ibase+110) /* Blitter Interrupt / Fuse | ||
65 | * Status 3 */ | ||
66 | #define irq_avc1_pp0 (ibase+109) /* AVC Decoder #1 PP0 | ||
67 | * Interrupt */ | ||
68 | #define irq_avc1_pp1 (ibase+108) /* AVC Decoder #1 PP1 | ||
69 | * Interrupt */ | ||
70 | #define irq_avc1_mbe (ibase+107) /* AVC Decoder #1 MBE | ||
71 | * Interrupt */ | ||
72 | #define irq_avc2_pp0 (ibase+106) /* AVC Decoder #2 PP0 | ||
73 | * Interrupt */ | ||
74 | #define irq_avc2_pp1 (ibase+105) /* AVC Decoder #2 PP1 | ||
75 | * Interrupt */ | ||
76 | #define irq_avc2_mbe (ibase+104) /* AVC Decoder #2 MBE | ||
77 | * Interrupt */ | ||
78 | #define irq_zbug_spi (ibase+103) /* Zbug SPI Slave Interrupt */ | ||
79 | #define irq_qam_mod2 (ibase+102) /* QAM Modulator 2 DMA | ||
80 | * Interrupt */ | ||
81 | #define irq_ir_rx (ibase+101) /* IR RX 2 Interrupt */ | ||
82 | #define irq_aud_dsp2 (ibase+100) /* Audio DSP #2 Interrupt */ | ||
83 | #define irq_aud_dsp1 (ibase+99) /* Audio DSP #1 Interrupt */ | ||
84 | #define irq_docsis (ibase+98) /* DOCSIS Debug Interrupt */ | ||
85 | #define irq_sd_dvp1 (ibase+97) /* SD DVP #1 Interrupt */ | ||
86 | #define irq_sd_dvp2 (ibase+96) /* SD DVP #2 Interrupt */ | ||
87 | /*------------- Register: int_stat_2 */ | ||
88 | #define irq_hd_dvp (ibase+95) /* HD DVP Interrupt */ | ||
89 | #define kIrq_Prewatchdog (ibase+94) /* watchdog Pre-Interrupt */ | ||
90 | #define irq_timer2 (ibase+93) /* Programmable Timer | ||
91 | * Interrupt 2 */ | ||
92 | #define irq_1394 (ibase+92) /* 1394 Firewire Interrupt */ | ||
93 | #define irq_usbohci (ibase+91) /* USB 2.0 OHCI Interrupt */ | ||
94 | #define irq_usbehci (ibase+90) /* USB 2.0 EHCI Interrupt */ | ||
95 | #define irq_pciexp (ibase+89) /* PCI Express 0 Interrupt */ | ||
96 | #define irq_pciexp0 (ibase+89) /* PCI Express 0 Interrupt */ | ||
97 | #define irq_afe1 (ibase+88) /* AFE 1 Interrupt */ | ||
98 | #define irq_sata (ibase+87) /* SATA 1 Interrupt */ | ||
99 | #define irq_sata1 (ibase+87) /* SATA 1 Interrupt */ | ||
100 | #define irq_dtcp (ibase+86) /* DTCP Interrupt */ | ||
101 | #define irq_pciexp1 (ibase+85) /* PCI Express 1 Interrupt */ | ||
102 | /* 84 unused (bit 20) */ | ||
103 | /* 83 unused (bit 19) */ | ||
104 | /* 82 unused (bit 18) */ | ||
105 | #define irq_sata2 (ibase+81) /* SATA2 Interrupt */ | ||
106 | #define irq_uart2 (ibase+80) /* UART2 Interrupt */ | ||
107 | #define irq_legacy_usb (ibase+79) /* Legacy USB Host ISR (1.1 | ||
108 | * Host module) */ | ||
109 | #define irq_pod (ibase+78) /* POD Interrupt */ | ||
110 | #define irq_slave_usb (ibase+77) /* Slave USB */ | ||
111 | #define irq_denc1 (ibase+76) /* DENC #1 VTG Interrupt */ | ||
112 | #define irq_vbi_vtg (ibase+75) /* VBI VTG Interrupt */ | ||
113 | #define irq_afe2 (ibase+74) /* AFE 2 Interrupt */ | ||
114 | #define irq_denc2 (ibase+73) /* DENC #2 VTG Interrupt */ | ||
115 | #define irq_asc2 (ibase+72) /* ASC #2 Interrupt */ | ||
116 | #define irq_asc1 (ibase+71) /* ASC #1 Interrupt */ | ||
117 | #define irq_mod_dma (ibase+70) /* Modulator DMA Interrupt */ | ||
118 | #define irq_byte_eng1 (ibase+69) /* Byte Engine Interrupt [1] */ | ||
119 | #define irq_byte_eng0 (ibase+68) /* Byte Engine Interrupt [0] */ | ||
120 | /* 67 unused (bit 03) */ | ||
121 | /* 66 unused (bit 02) */ | ||
122 | /* 65 unused (bit 01) */ | ||
123 | /* 64 unused (bit 00) */ | ||
124 | /*------------- Register: int_stat_1 */ | ||
125 | /* 63 unused (bit 31) */ | ||
126 | /* 62 unused (bit 30) */ | ||
127 | /* 61 unused (bit 29) */ | ||
128 | /* 60 unused (bit 28) */ | ||
129 | /* 59 unused (bit 27) */ | ||
130 | /* 58 unused (bit 26) */ | ||
131 | /* 57 unused (bit 25) */ | ||
132 | /* 56 unused (bit 24) */ | ||
133 | #define irq_buf_dma_mem2mem (ibase+55) /* BufDMA Memory to Memory | ||
134 | * Interrupt */ | ||
135 | #define irq_buf_dma_usbtransmit (ibase+54) /* BufDMA USB Transmit | ||
136 | * Interrupt */ | ||
137 | #define irq_buf_dma_qpskpodtransmit (ibase+53) /* BufDMA QPSK/POD Tramsit | ||
138 | * Interrupt */ | ||
139 | #define irq_buf_dma_transmit_error (ibase+52) /* BufDMA Transmit Error | ||
140 | * Interrupt */ | ||
141 | #define irq_buf_dma_usbrecv (ibase+51) /* BufDMA USB Receive | ||
142 | * Interrupt */ | ||
143 | #define irq_buf_dma_qpskpodrecv (ibase+50) /* BufDMA QPSK/POD Receive | ||
144 | * Interrupt */ | ||
145 | #define irq_buf_dma_recv_error (ibase+49) /* BufDMA Receive Error | ||
146 | * Interrupt */ | ||
147 | #define irq_qamdma_transmit_play (ibase+48) /* QAMDMA Transmit/Play | ||
148 | * Interrupt */ | ||
149 | #define irq_qamdma_transmit_error (ibase+47) /* QAMDMA Transmit Error | ||
150 | * Interrupt */ | ||
151 | #define irq_qamdma_recv2high (ibase+46) /* QAMDMA Receive 2 High | ||
152 | * (Chans 63-32) */ | ||
153 | #define irq_qamdma_recv2low (ibase+45) /* QAMDMA Receive 2 Low | ||
154 | * (Chans 31-0) */ | ||
155 | #define irq_qamdma_recv1high (ibase+44) /* QAMDMA Receive 1 High | ||
156 | * (Chans 63-32) */ | ||
157 | #define irq_qamdma_recv1low (ibase+43) /* QAMDMA Receive 1 Low | ||
158 | * (Chans 31-0) */ | ||
159 | #define irq_qamdma_recv_error (ibase+42) /* QAMDMA Receive Error | ||
160 | * Interrupt */ | ||
161 | #define irq_mpegsplice (ibase+41) /* MPEG Splice Interrupt */ | ||
162 | #define irq_deinterlace_rdy (ibase+40) /* Deinterlacer Frame Ready | ||
163 | * Interrupt */ | ||
164 | #define irq_ext_in0 (ibase+39) /* External Interrupt irq_in0 */ | ||
165 | #define irq_gpio3 (ibase+38) /* GP I/O IRQ 3 - From GP I/O | ||
166 | * Module */ | ||
167 | #define irq_gpio2 (ibase+37) /* GP I/O IRQ 2 - From GP I/O | ||
168 | * Module (ABE_intN) */ | ||
169 | #define irq_pcrcmplt1 (ibase+36) /* PCR Capture Complete or | ||
170 | * Discontinuity 1 */ | ||
171 | #define irq_pcrcmplt2 (ibase+35) /* PCR Capture Complete or | ||
172 | * Discontinuity 2 */ | ||
173 | #define irq_parse_peierr (ibase+34) /* PID Parser Error Detect | ||
174 | * (PEI) */ | ||
175 | #define irq_parse_cont_err (ibase+33) /* PID Parser continuity error | ||
176 | * detect */ | ||
177 | #define irq_ds1framer (ibase+32) /* DS1 Framer Interrupt */ | ||
178 | /*------------- Register: int_stat_0 */ | ||
179 | #define irq_gpio1 (ibase+31) /* GP I/O IRQ 1 - From GP I/O | ||
180 | * Module */ | ||
181 | #define irq_gpio0 (ibase+30) /* GP I/O IRQ 0 - From GP I/O | ||
182 | * Module */ | ||
183 | #define irq_qpsk_out_aloha (ibase+29) /* QPSK Output Slotted Aloha | ||
184 | * (chan 3) Transmission | ||
185 | * Completed OK */ | ||
186 | #define irq_qpsk_out_tdma (ibase+28) /* QPSK Output TDMA (chan 2) | ||
187 | * Transmission Completed OK */ | ||
188 | #define irq_qpsk_out_reserve (ibase+27) /* QPSK Output Reservation | ||
189 | * (chan 1) Transmission | ||
190 | * Completed OK */ | ||
191 | #define irq_qpsk_out_aloha_err (ibase+26) /* QPSK Output Slotted Aloha | ||
192 | * (chan 3)Transmission | ||
193 | * completed with Errors. */ | ||
194 | #define irq_qpsk_out_tdma_err (ibase+25) /* QPSK Output TDMA (chan 2) | ||
195 | * Transmission completed with | ||
196 | * Errors. */ | ||
197 | #define irq_qpsk_out_rsrv_err (ibase+24) /* QPSK Output Reservation | ||
198 | * (chan 1) Transmission | ||
199 | * completed with Errors */ | ||
200 | #define irq_aloha_fail (ibase+23) /* Unsuccessful Resend of Aloha | ||
201 | * for N times. Aloha retry | ||
202 | * timeout for channel 3. */ | ||
203 | #define irq_timer1 (ibase+22) /* Programmable Timer | ||
204 | * Interrupt */ | ||
205 | #define irq_keyboard (ibase+21) /* Keyboard Module Interrupt */ | ||
206 | #define irq_i2c (ibase+20) /* I2C Module Interrupt */ | ||
207 | #define irq_spi (ibase+19) /* SPI Module Interrupt */ | ||
208 | #define irq_irblaster (ibase+18) /* IR Blaster Interrupt */ | ||
209 | #define irq_splice_detect (ibase+17) /* PID Key Change Interrupt or | ||
210 | * Splice Detect Interrupt */ | ||
211 | #define irq_se_micro (ibase+16) /* Secure Micro I/F Module | ||
212 | * Interrupt */ | ||
213 | #define irq_uart1 (ibase+15) /* UART Interrupt */ | ||
214 | #define irq_irrecv (ibase+14) /* IR Receiver Interrupt */ | ||
215 | #define irq_host_int1 (ibase+13) /* Host-to-Host Interrupt 1 */ | ||
216 | #define irq_host_int0 (ibase+12) /* Host-to-Host Interrupt 0 */ | ||
217 | #define irq_qpsk_hecerr (ibase+11) /* QPSK HEC Error Interrupt */ | ||
218 | #define irq_qpsk_crcerr (ibase+10) /* QPSK AAL-5 CRC Error | ||
219 | * Interrupt */ | ||
220 | /* 9 unused (bit 09) */ | ||
221 | /* 8 unused (bit 08) */ | ||
222 | #define irq_psicrcerr (ibase+7) /* QAM PSI CRC Error | ||
223 | * Interrupt */ | ||
224 | #define irq_psilength_err (ibase+6) /* QAM PSI Length Error | ||
225 | * Interrupt */ | ||
226 | #define irq_esfforward (ibase+5) /* ESF Interrupt Mark From | ||
227 | * Forward Path Reference - | ||
228 | * every 3ms when forward Mbits | ||
229 | * and forward slot control | ||
230 | * bytes are updated. */ | ||
231 | #define irq_esfreverse (ibase+4) /* ESF Interrupt Mark from | ||
232 | * Reverse Path Reference - | ||
233 | * delayed from forward mark by | ||
234 | * the ranging delay plus a | ||
235 | * fixed amount. When reverse | ||
236 | * Mbits and reverse slot | ||
237 | * control bytes are updated. | ||
238 | * Occurs every 3ms for 3.0M and | ||
239 | * 1.554 M upstream rates and | ||
240 | * every 6 ms for 256K upstream | ||
241 | * rate. */ | ||
242 | #define irq_aloha_timeout (ibase+3) /* Slotted-Aloha timeout on | ||
243 | * Channel 1. */ | ||
244 | #define irq_reservation (ibase+2) /* Partial (or Incremental) | ||
245 | * Reservation Message Completed | ||
246 | * or Slotted aloha verify for | ||
247 | * channel 1. */ | ||
248 | #define irq_aloha3 (ibase+1) /* Slotted-Aloha Message Verify | ||
249 | * Interrupt or Reservation | ||
250 | * increment completed for | ||
251 | * channel 3. */ | ||
252 | #define irq_mpeg_d (ibase+0) /* MPEG Decoder Interrupt */ | ||
253 | #endif /* _ASM_MACH_POWERTV_INTERRUPTS_H_ */ | ||
254 | |||
diff --git a/arch/mips/include/asm/mach-powertv/ioremap.h b/arch/mips/include/asm/mach-powertv/ioremap.h new file mode 100644 index 000000000000..e6276d5146e8 --- /dev/null +++ b/arch/mips/include/asm/mach-powertv/ioremap.h | |||
@@ -0,0 +1,90 @@ | |||
1 | /* | ||
2 | * This program is free software; you can redistribute it and/or | ||
3 | * modify it under the terms of the GNU General Public License | ||
4 | * as published by the Free Software Foundation; either version | ||
5 | * 2 of the License, or (at your option) any later version. | ||
6 | * | ||
7 | * Portions Copyright (C) Cisco Systems, Inc. | ||
8 | */ | ||
9 | #ifndef __ASM_MACH_POWERTV_IOREMAP_H | ||
10 | #define __ASM_MACH_POWERTV_IOREMAP_H | ||
11 | |||
12 | #include <linux/types.h> | ||
13 | |||
14 | #define LOW_MEM_BOUNDARY_PHYS 0x20000000 | ||
15 | #define LOW_MEM_BOUNDARY_MASK (~(LOW_MEM_BOUNDARY_PHYS - 1)) | ||
16 | |||
17 | /* | ||
18 | * The bus addresses are different than the physical addresses that | ||
19 | * the processor sees by an offset. This offset varies by ASIC | ||
20 | * version. Define a variable to hold the offset and some macros to | ||
21 | * make the conversion simpler. */ | ||
22 | extern unsigned long phys_to_bus_offset; | ||
23 | |||
24 | #ifdef CONFIG_HIGHMEM | ||
25 | #define MEM_GAP_PHYS 0x60000000 | ||
26 | /* | ||
27 | * TODO: We will use the hard code for conversion between physical and | ||
28 | * bus until the bootloader releases their device tree to us. | ||
29 | */ | ||
30 | #define phys_to_bus(x) (((x) < LOW_MEM_BOUNDARY_PHYS) ? \ | ||
31 | ((x) + phys_to_bus_offset) : (x)) | ||
32 | #define bus_to_phys(x) (((x) < MEM_GAP_PHYS_ADDR) ? \ | ||
33 | ((x) - phys_to_bus_offset) : (x)) | ||
34 | #else | ||
35 | #define phys_to_bus(x) ((x) + phys_to_bus_offset) | ||
36 | #define bus_to_phys(x) ((x) - phys_to_bus_offset) | ||
37 | #endif | ||
38 | |||
39 | /* | ||
40 | * Determine whether the address we are given is for an ASIC device | ||
41 | * Params: addr Address to check | ||
42 | * Returns: Zero if the address is not for ASIC devices, non-zero | ||
43 | * if it is. | ||
44 | */ | ||
45 | static inline int asic_is_device_addr(phys_t addr) | ||
46 | { | ||
47 | return !((phys_t)addr & (phys_t) LOW_MEM_BOUNDARY_MASK); | ||
48 | } | ||
49 | |||
50 | /* | ||
51 | * Determine whether the address we are given is external RAM mappable | ||
52 | * into KSEG1. | ||
53 | * Params: addr Address to check | ||
54 | * Returns: Zero if the address is not for external RAM and | ||
55 | */ | ||
56 | static inline int asic_is_lowmem_ram_addr(phys_t addr) | ||
57 | { | ||
58 | /* | ||
59 | * The RAM always starts at the following address in the processor's | ||
60 | * physical address space | ||
61 | */ | ||
62 | static const phys_t phys_ram_base = 0x10000000; | ||
63 | phys_t bus_ram_base; | ||
64 | |||
65 | bus_ram_base = phys_to_bus_offset + phys_ram_base; | ||
66 | |||
67 | return addr >= bus_ram_base && | ||
68 | addr < (bus_ram_base + (LOW_MEM_BOUNDARY_PHYS - phys_ram_base)); | ||
69 | } | ||
70 | |||
71 | /* | ||
72 | * Allow physical addresses to be fixed up to help peripherals located | ||
73 | * outside the low 32-bit range -- generic pass-through version. | ||
74 | */ | ||
75 | static inline phys_t fixup_bigphys_addr(phys_t phys_addr, phys_t size) | ||
76 | { | ||
77 | return phys_addr; | ||
78 | } | ||
79 | |||
80 | static inline void __iomem *plat_ioremap(phys_t offset, unsigned long size, | ||
81 | unsigned long flags) | ||
82 | { | ||
83 | return NULL; | ||
84 | } | ||
85 | |||
86 | static inline int plat_iounmap(const volatile void __iomem *addr) | ||
87 | { | ||
88 | return 0; | ||
89 | } | ||
90 | #endif /* __ASM_MACH_POWERTV_IOREMAP_H */ | ||
diff --git a/arch/mips/include/asm/mach-powertv/irq.h b/arch/mips/include/asm/mach-powertv/irq.h new file mode 100644 index 000000000000..4bd5d0c61a91 --- /dev/null +++ b/arch/mips/include/asm/mach-powertv/irq.h | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 Cisco Systems, Inc. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | |||
19 | #ifndef _ASM_MACH_POWERTV_IRQ_H | ||
20 | #define _ASM_MACH_POWERTV_IRQ_H | ||
21 | #include <asm/mach-powertv/interrupts.h> | ||
22 | |||
23 | #define MIPS_CPU_IRQ_BASE ibase | ||
24 | #define NR_IRQS 127 | ||
25 | #endif | ||
diff --git a/arch/mips/include/asm/mach-powertv/powertv-clock.h b/arch/mips/include/asm/mach-powertv/powertv-clock.h new file mode 100644 index 000000000000..6f3e9a0fcf8c --- /dev/null +++ b/arch/mips/include/asm/mach-powertv/powertv-clock.h | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2009 Cisco Systems, Inc. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | /* | ||
19 | * Local definitions for the powertv PCI code | ||
20 | */ | ||
21 | |||
22 | #ifndef _POWERTV_PCI_POWERTV_PCI_H_ | ||
23 | #define _POWERTV_PCI_POWERTV_PCI_H_ | ||
24 | extern int asic_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin); | ||
25 | extern int asic_pcie_init(void); | ||
26 | extern int asic_pcie_init(void); | ||
27 | |||
28 | extern int log_level; | ||
29 | #endif | ||
diff --git a/arch/mips/include/asm/mach-excite/war.h b/arch/mips/include/asm/mach-powertv/war.h index 1f82180c1598..7ac05ecc512b 100644 --- a/arch/mips/include/asm/mach-excite/war.h +++ b/arch/mips/include/asm/mach-powertv/war.h | |||
@@ -3,10 +3,13 @@ | |||
3 | * License. See the file "COPYING" in the main directory of this archive | 3 | * License. See the file "COPYING" in the main directory of this archive |
4 | * for more details. | 4 | * for more details. |
5 | * | 5 | * |
6 | * This version for the PowerTV platform copied from the Malta version. | ||
7 | * | ||
6 | * Copyright (C) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org> | 8 | * Copyright (C) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org> |
9 | * Portions copyright (C) 2009 Cisco Systems, Inc. | ||
7 | */ | 10 | */ |
8 | #ifndef __ASM_MIPS_MACH_EXCITE_WAR_H | 11 | #ifndef __ASM_MACH_POWERTV_WAR_H |
9 | #define __ASM_MIPS_MACH_EXCITE_WAR_H | 12 | #define __ASM_MACH_POWERTV_WAR_H |
10 | 13 | ||
11 | #define R4600_V1_INDEX_ICACHEOP_WAR 0 | 14 | #define R4600_V1_INDEX_ICACHEOP_WAR 0 |
12 | #define R4600_V1_HIT_CACHEOP_WAR 0 | 15 | #define R4600_V1_HIT_CACHEOP_WAR 0 |
@@ -14,12 +17,12 @@ | |||
14 | #define R5432_CP0_INTERRUPT_WAR 0 | 17 | #define R5432_CP0_INTERRUPT_WAR 0 |
15 | #define BCM1250_M3_WAR 0 | 18 | #define BCM1250_M3_WAR 0 |
16 | #define SIBYTE_1956_WAR 0 | 19 | #define SIBYTE_1956_WAR 0 |
17 | #define MIPS4K_ICACHE_REFILL_WAR 0 | 20 | #define MIPS4K_ICACHE_REFILL_WAR 1 |
18 | #define MIPS_CACHE_SYNC_WAR 0 | 21 | #define MIPS_CACHE_SYNC_WAR 1 |
19 | #define TX49XX_ICACHE_INDEX_INV_WAR 0 | 22 | #define TX49XX_ICACHE_INDEX_INV_WAR 0 |
20 | #define RM9000_CDEX_SMP_WAR 1 | 23 | #define RM9000_CDEX_SMP_WAR 0 |
21 | #define ICACHE_REFILLS_WORKAROUND_WAR 1 | 24 | #define ICACHE_REFILLS_WORKAROUND_WAR 1 |
22 | #define R10000_LLSC_WAR 0 | 25 | #define R10000_LLSC_WAR 0 |
23 | #define MIPS34K_MISSED_ITLB_WAR 0 | 26 | #define MIPS34K_MISSED_ITLB_WAR 0 |
24 | 27 | ||
25 | #endif /* __ASM_MIPS_MACH_EXCITE_WAR_H */ | 28 | #endif /* __ASM_MACH_POWERTV_WAR_H */ |
diff --git a/arch/mips/include/asm/mips-boards/bonito64.h b/arch/mips/include/asm/mips-boards/bonito64.h index a576ce044c3c..d14e2adc4be5 100644 --- a/arch/mips/include/asm/mips-boards/bonito64.h +++ b/arch/mips/include/asm/mips-boards/bonito64.h | |||
@@ -26,11 +26,6 @@ | |||
26 | /* offsets from base register */ | 26 | /* offsets from base register */ |
27 | #define BONITO(x) (x) | 27 | #define BONITO(x) (x) |
28 | 28 | ||
29 | #elif defined(CONFIG_LEMOTE_FULOONG2E) | ||
30 | |||
31 | #define BONITO(x) (*(volatile u32 *)((char *)CKSEG1ADDR(BONITO_REG_BASE) + (x))) | ||
32 | #define BONITO_IRQ_BASE 32 | ||
33 | |||
34 | #else | 29 | #else |
35 | 30 | ||
36 | /* | 31 | /* |
diff --git a/arch/mips/include/asm/mmu_context.h b/arch/mips/include/asm/mmu_context.h index 6083db586500..145bb81ccaa5 100644 --- a/arch/mips/include/asm/mmu_context.h +++ b/arch/mips/include/asm/mmu_context.h | |||
@@ -24,6 +24,33 @@ | |||
24 | #endif /* SMTC */ | 24 | #endif /* SMTC */ |
25 | #include <asm-generic/mm_hooks.h> | 25 | #include <asm-generic/mm_hooks.h> |
26 | 26 | ||
27 | #ifdef CONFIG_MIPS_PGD_C0_CONTEXT | ||
28 | |||
29 | #define TLBMISS_HANDLER_SETUP_PGD(pgd) \ | ||
30 | tlbmiss_handler_setup_pgd((unsigned long)(pgd)) | ||
31 | |||
32 | static inline void tlbmiss_handler_setup_pgd(unsigned long pgd) | ||
33 | { | ||
34 | /* Check for swapper_pg_dir and convert to physical address. */ | ||
35 | if ((pgd & CKSEG3) == CKSEG0) | ||
36 | pgd = CPHYSADDR(pgd); | ||
37 | write_c0_context(pgd << 11); | ||
38 | } | ||
39 | |||
40 | #define TLBMISS_HANDLER_SETUP() \ | ||
41 | do { \ | ||
42 | TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir); \ | ||
43 | write_c0_xcontext((unsigned long) smp_processor_id() << 51); \ | ||
44 | } while (0) | ||
45 | |||
46 | |||
47 | static inline unsigned long get_current_pgd(void) | ||
48 | { | ||
49 | return PHYS_TO_XKSEG_CACHED((read_c0_context() >> 11) & ~0xfffUL); | ||
50 | } | ||
51 | |||
52 | #else /* CONFIG_MIPS_PGD_C0_CONTEXT: using pgd_current*/ | ||
53 | |||
27 | /* | 54 | /* |
28 | * For the fast tlb miss handlers, we keep a per cpu array of pointers | 55 | * For the fast tlb miss handlers, we keep a per cpu array of pointers |
29 | * to the current pgd for each processor. Also, the proc. id is stuffed | 56 | * to the current pgd for each processor. Also, the proc. id is stuffed |
@@ -46,7 +73,7 @@ extern unsigned long pgd_current[]; | |||
46 | back_to_back_c0_hazard(); \ | 73 | back_to_back_c0_hazard(); \ |
47 | TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir) | 74 | TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir) |
48 | #endif | 75 | #endif |
49 | 76 | #endif /* CONFIG_MIPS_PGD_C0_CONTEXT*/ | |
50 | #if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) | 77 | #if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX) |
51 | 78 | ||
52 | #define ASID_INC 0x40 | 79 | #define ASID_INC 0x40 |
diff --git a/arch/mips/include/asm/octeon/cvmx-agl-defs.h b/arch/mips/include/asm/octeon/cvmx-agl-defs.h new file mode 100644 index 000000000000..ec94b9ab7be1 --- /dev/null +++ b/arch/mips/include/asm/octeon/cvmx-agl-defs.h | |||
@@ -0,0 +1,1194 @@ | |||
1 | /***********************license start*************** | ||
2 | * Author: Cavium Networks | ||
3 | * | ||
4 | * Contact: support@caviumnetworks.com | ||
5 | * This file is part of the OCTEON SDK | ||
6 | * | ||
7 | * Copyright (c) 2003-2008 Cavium Networks | ||
8 | * | ||
9 | * This file is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License, Version 2, as | ||
11 | * published by the Free Software Foundation. | ||
12 | * | ||
13 | * This file is distributed in the hope that it will be useful, but | ||
14 | * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty | ||
15 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or | ||
16 | * NONINFRINGEMENT. See the GNU General Public License for more | ||
17 | * details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this file; if not, write to the Free Software | ||
21 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
22 | * or visit http://www.gnu.org/licenses/. | ||
23 | * | ||
24 | * This file may also be available under a different license from Cavium. | ||
25 | * Contact Cavium Networks for more information | ||
26 | ***********************license end**************************************/ | ||
27 | |||
28 | #ifndef __CVMX_AGL_DEFS_H__ | ||
29 | #define __CVMX_AGL_DEFS_H__ | ||
30 | |||
31 | #define CVMX_AGL_GMX_BAD_REG \ | ||
32 | CVMX_ADD_IO_SEG(0x00011800E0000518ull) | ||
33 | #define CVMX_AGL_GMX_BIST \ | ||
34 | CVMX_ADD_IO_SEG(0x00011800E0000400ull) | ||
35 | #define CVMX_AGL_GMX_DRV_CTL \ | ||
36 | CVMX_ADD_IO_SEG(0x00011800E00007F0ull) | ||
37 | #define CVMX_AGL_GMX_INF_MODE \ | ||
38 | CVMX_ADD_IO_SEG(0x00011800E00007F8ull) | ||
39 | #define CVMX_AGL_GMX_PRTX_CFG(offset) \ | ||
40 | CVMX_ADD_IO_SEG(0x00011800E0000010ull + (((offset) & 1) * 2048)) | ||
41 | #define CVMX_AGL_GMX_RXX_ADR_CAM0(offset) \ | ||
42 | CVMX_ADD_IO_SEG(0x00011800E0000180ull + (((offset) & 1) * 2048)) | ||
43 | #define CVMX_AGL_GMX_RXX_ADR_CAM1(offset) \ | ||
44 | CVMX_ADD_IO_SEG(0x00011800E0000188ull + (((offset) & 1) * 2048)) | ||
45 | #define CVMX_AGL_GMX_RXX_ADR_CAM2(offset) \ | ||
46 | CVMX_ADD_IO_SEG(0x00011800E0000190ull + (((offset) & 1) * 2048)) | ||
47 | #define CVMX_AGL_GMX_RXX_ADR_CAM3(offset) \ | ||
48 | CVMX_ADD_IO_SEG(0x00011800E0000198ull + (((offset) & 1) * 2048)) | ||
49 | #define CVMX_AGL_GMX_RXX_ADR_CAM4(offset) \ | ||
50 | CVMX_ADD_IO_SEG(0x00011800E00001A0ull + (((offset) & 1) * 2048)) | ||
51 | #define CVMX_AGL_GMX_RXX_ADR_CAM5(offset) \ | ||
52 | CVMX_ADD_IO_SEG(0x00011800E00001A8ull + (((offset) & 1) * 2048)) | ||
53 | #define CVMX_AGL_GMX_RXX_ADR_CAM_EN(offset) \ | ||
54 | CVMX_ADD_IO_SEG(0x00011800E0000108ull + (((offset) & 1) * 2048)) | ||
55 | #define CVMX_AGL_GMX_RXX_ADR_CTL(offset) \ | ||
56 | CVMX_ADD_IO_SEG(0x00011800E0000100ull + (((offset) & 1) * 2048)) | ||
57 | #define CVMX_AGL_GMX_RXX_DECISION(offset) \ | ||
58 | CVMX_ADD_IO_SEG(0x00011800E0000040ull + (((offset) & 1) * 2048)) | ||
59 | #define CVMX_AGL_GMX_RXX_FRM_CHK(offset) \ | ||
60 | CVMX_ADD_IO_SEG(0x00011800E0000020ull + (((offset) & 1) * 2048)) | ||
61 | #define CVMX_AGL_GMX_RXX_FRM_CTL(offset) \ | ||
62 | CVMX_ADD_IO_SEG(0x00011800E0000018ull + (((offset) & 1) * 2048)) | ||
63 | #define CVMX_AGL_GMX_RXX_FRM_MAX(offset) \ | ||
64 | CVMX_ADD_IO_SEG(0x00011800E0000030ull + (((offset) & 1) * 2048)) | ||
65 | #define CVMX_AGL_GMX_RXX_FRM_MIN(offset) \ | ||
66 | CVMX_ADD_IO_SEG(0x00011800E0000028ull + (((offset) & 1) * 2048)) | ||
67 | #define CVMX_AGL_GMX_RXX_IFG(offset) \ | ||
68 | CVMX_ADD_IO_SEG(0x00011800E0000058ull + (((offset) & 1) * 2048)) | ||
69 | #define CVMX_AGL_GMX_RXX_INT_EN(offset) \ | ||
70 | CVMX_ADD_IO_SEG(0x00011800E0000008ull + (((offset) & 1) * 2048)) | ||
71 | #define CVMX_AGL_GMX_RXX_INT_REG(offset) \ | ||
72 | CVMX_ADD_IO_SEG(0x00011800E0000000ull + (((offset) & 1) * 2048)) | ||
73 | #define CVMX_AGL_GMX_RXX_JABBER(offset) \ | ||
74 | CVMX_ADD_IO_SEG(0x00011800E0000038ull + (((offset) & 1) * 2048)) | ||
75 | #define CVMX_AGL_GMX_RXX_PAUSE_DROP_TIME(offset) \ | ||
76 | CVMX_ADD_IO_SEG(0x00011800E0000068ull + (((offset) & 1) * 2048)) | ||
77 | #define CVMX_AGL_GMX_RXX_STATS_CTL(offset) \ | ||
78 | CVMX_ADD_IO_SEG(0x00011800E0000050ull + (((offset) & 1) * 2048)) | ||
79 | #define CVMX_AGL_GMX_RXX_STATS_OCTS(offset) \ | ||
80 | CVMX_ADD_IO_SEG(0x00011800E0000088ull + (((offset) & 1) * 2048)) | ||
81 | #define CVMX_AGL_GMX_RXX_STATS_OCTS_CTL(offset) \ | ||
82 | CVMX_ADD_IO_SEG(0x00011800E0000098ull + (((offset) & 1) * 2048)) | ||
83 | #define CVMX_AGL_GMX_RXX_STATS_OCTS_DMAC(offset) \ | ||
84 | CVMX_ADD_IO_SEG(0x00011800E00000A8ull + (((offset) & 1) * 2048)) | ||
85 | #define CVMX_AGL_GMX_RXX_STATS_OCTS_DRP(offset) \ | ||
86 | CVMX_ADD_IO_SEG(0x00011800E00000B8ull + (((offset) & 1) * 2048)) | ||
87 | #define CVMX_AGL_GMX_RXX_STATS_PKTS(offset) \ | ||
88 | CVMX_ADD_IO_SEG(0x00011800E0000080ull + (((offset) & 1) * 2048)) | ||
89 | #define CVMX_AGL_GMX_RXX_STATS_PKTS_BAD(offset) \ | ||
90 | CVMX_ADD_IO_SEG(0x00011800E00000C0ull + (((offset) & 1) * 2048)) | ||
91 | #define CVMX_AGL_GMX_RXX_STATS_PKTS_CTL(offset) \ | ||
92 | CVMX_ADD_IO_SEG(0x00011800E0000090ull + (((offset) & 1) * 2048)) | ||
93 | #define CVMX_AGL_GMX_RXX_STATS_PKTS_DMAC(offset) \ | ||
94 | CVMX_ADD_IO_SEG(0x00011800E00000A0ull + (((offset) & 1) * 2048)) | ||
95 | #define CVMX_AGL_GMX_RXX_STATS_PKTS_DRP(offset) \ | ||
96 | CVMX_ADD_IO_SEG(0x00011800E00000B0ull + (((offset) & 1) * 2048)) | ||
97 | #define CVMX_AGL_GMX_RXX_UDD_SKP(offset) \ | ||
98 | CVMX_ADD_IO_SEG(0x00011800E0000048ull + (((offset) & 1) * 2048)) | ||
99 | #define CVMX_AGL_GMX_RX_BP_DROPX(offset) \ | ||
100 | CVMX_ADD_IO_SEG(0x00011800E0000420ull + (((offset) & 1) * 8)) | ||
101 | #define CVMX_AGL_GMX_RX_BP_OFFX(offset) \ | ||
102 | CVMX_ADD_IO_SEG(0x00011800E0000460ull + (((offset) & 1) * 8)) | ||
103 | #define CVMX_AGL_GMX_RX_BP_ONX(offset) \ | ||
104 | CVMX_ADD_IO_SEG(0x00011800E0000440ull + (((offset) & 1) * 8)) | ||
105 | #define CVMX_AGL_GMX_RX_PRT_INFO \ | ||
106 | CVMX_ADD_IO_SEG(0x00011800E00004E8ull) | ||
107 | #define CVMX_AGL_GMX_RX_TX_STATUS \ | ||
108 | CVMX_ADD_IO_SEG(0x00011800E00007E8ull) | ||
109 | #define CVMX_AGL_GMX_SMACX(offset) \ | ||
110 | CVMX_ADD_IO_SEG(0x00011800E0000230ull + (((offset) & 1) * 2048)) | ||
111 | #define CVMX_AGL_GMX_STAT_BP \ | ||
112 | CVMX_ADD_IO_SEG(0x00011800E0000520ull) | ||
113 | #define CVMX_AGL_GMX_TXX_APPEND(offset) \ | ||
114 | CVMX_ADD_IO_SEG(0x00011800E0000218ull + (((offset) & 1) * 2048)) | ||
115 | #define CVMX_AGL_GMX_TXX_CTL(offset) \ | ||
116 | CVMX_ADD_IO_SEG(0x00011800E0000270ull + (((offset) & 1) * 2048)) | ||
117 | #define CVMX_AGL_GMX_TXX_MIN_PKT(offset) \ | ||
118 | CVMX_ADD_IO_SEG(0x00011800E0000240ull + (((offset) & 1) * 2048)) | ||
119 | #define CVMX_AGL_GMX_TXX_PAUSE_PKT_INTERVAL(offset) \ | ||
120 | CVMX_ADD_IO_SEG(0x00011800E0000248ull + (((offset) & 1) * 2048)) | ||
121 | #define CVMX_AGL_GMX_TXX_PAUSE_PKT_TIME(offset) \ | ||
122 | CVMX_ADD_IO_SEG(0x00011800E0000238ull + (((offset) & 1) * 2048)) | ||
123 | #define CVMX_AGL_GMX_TXX_PAUSE_TOGO(offset) \ | ||
124 | CVMX_ADD_IO_SEG(0x00011800E0000258ull + (((offset) & 1) * 2048)) | ||
125 | #define CVMX_AGL_GMX_TXX_PAUSE_ZERO(offset) \ | ||
126 | CVMX_ADD_IO_SEG(0x00011800E0000260ull + (((offset) & 1) * 2048)) | ||
127 | #define CVMX_AGL_GMX_TXX_SOFT_PAUSE(offset) \ | ||
128 | CVMX_ADD_IO_SEG(0x00011800E0000250ull + (((offset) & 1) * 2048)) | ||
129 | #define CVMX_AGL_GMX_TXX_STAT0(offset) \ | ||
130 | CVMX_ADD_IO_SEG(0x00011800E0000280ull + (((offset) & 1) * 2048)) | ||
131 | #define CVMX_AGL_GMX_TXX_STAT1(offset) \ | ||
132 | CVMX_ADD_IO_SEG(0x00011800E0000288ull + (((offset) & 1) * 2048)) | ||
133 | #define CVMX_AGL_GMX_TXX_STAT2(offset) \ | ||
134 | CVMX_ADD_IO_SEG(0x00011800E0000290ull + (((offset) & 1) * 2048)) | ||
135 | #define CVMX_AGL_GMX_TXX_STAT3(offset) \ | ||
136 | CVMX_ADD_IO_SEG(0x00011800E0000298ull + (((offset) & 1) * 2048)) | ||
137 | #define CVMX_AGL_GMX_TXX_STAT4(offset) \ | ||
138 | CVMX_ADD_IO_SEG(0x00011800E00002A0ull + (((offset) & 1) * 2048)) | ||
139 | #define CVMX_AGL_GMX_TXX_STAT5(offset) \ | ||
140 | CVMX_ADD_IO_SEG(0x00011800E00002A8ull + (((offset) & 1) * 2048)) | ||
141 | #define CVMX_AGL_GMX_TXX_STAT6(offset) \ | ||
142 | CVMX_ADD_IO_SEG(0x00011800E00002B0ull + (((offset) & 1) * 2048)) | ||
143 | #define CVMX_AGL_GMX_TXX_STAT7(offset) \ | ||
144 | CVMX_ADD_IO_SEG(0x00011800E00002B8ull + (((offset) & 1) * 2048)) | ||
145 | #define CVMX_AGL_GMX_TXX_STAT8(offset) \ | ||
146 | CVMX_ADD_IO_SEG(0x00011800E00002C0ull + (((offset) & 1) * 2048)) | ||
147 | #define CVMX_AGL_GMX_TXX_STAT9(offset) \ | ||
148 | CVMX_ADD_IO_SEG(0x00011800E00002C8ull + (((offset) & 1) * 2048)) | ||
149 | #define CVMX_AGL_GMX_TXX_STATS_CTL(offset) \ | ||
150 | CVMX_ADD_IO_SEG(0x00011800E0000268ull + (((offset) & 1) * 2048)) | ||
151 | #define CVMX_AGL_GMX_TXX_THRESH(offset) \ | ||
152 | CVMX_ADD_IO_SEG(0x00011800E0000210ull + (((offset) & 1) * 2048)) | ||
153 | #define CVMX_AGL_GMX_TX_BP \ | ||
154 | CVMX_ADD_IO_SEG(0x00011800E00004D0ull) | ||
155 | #define CVMX_AGL_GMX_TX_COL_ATTEMPT \ | ||
156 | CVMX_ADD_IO_SEG(0x00011800E0000498ull) | ||
157 | #define CVMX_AGL_GMX_TX_IFG \ | ||
158 | CVMX_ADD_IO_SEG(0x00011800E0000488ull) | ||
159 | #define CVMX_AGL_GMX_TX_INT_EN \ | ||
160 | CVMX_ADD_IO_SEG(0x00011800E0000508ull) | ||
161 | #define CVMX_AGL_GMX_TX_INT_REG \ | ||
162 | CVMX_ADD_IO_SEG(0x00011800E0000500ull) | ||
163 | #define CVMX_AGL_GMX_TX_JAM \ | ||
164 | CVMX_ADD_IO_SEG(0x00011800E0000490ull) | ||
165 | #define CVMX_AGL_GMX_TX_LFSR \ | ||
166 | CVMX_ADD_IO_SEG(0x00011800E00004F8ull) | ||
167 | #define CVMX_AGL_GMX_TX_OVR_BP \ | ||
168 | CVMX_ADD_IO_SEG(0x00011800E00004C8ull) | ||
169 | #define CVMX_AGL_GMX_TX_PAUSE_PKT_DMAC \ | ||
170 | CVMX_ADD_IO_SEG(0x00011800E00004A0ull) | ||
171 | #define CVMX_AGL_GMX_TX_PAUSE_PKT_TYPE \ | ||
172 | CVMX_ADD_IO_SEG(0x00011800E00004A8ull) | ||
173 | |||
174 | union cvmx_agl_gmx_bad_reg { | ||
175 | uint64_t u64; | ||
176 | struct cvmx_agl_gmx_bad_reg_s { | ||
177 | uint64_t reserved_38_63:26; | ||
178 | uint64_t txpsh1:1; | ||
179 | uint64_t txpop1:1; | ||
180 | uint64_t ovrflw1:1; | ||
181 | uint64_t txpsh:1; | ||
182 | uint64_t txpop:1; | ||
183 | uint64_t ovrflw:1; | ||
184 | uint64_t reserved_27_31:5; | ||
185 | uint64_t statovr:1; | ||
186 | uint64_t reserved_23_25:3; | ||
187 | uint64_t loststat:1; | ||
188 | uint64_t reserved_4_21:18; | ||
189 | uint64_t out_ovr:2; | ||
190 | uint64_t reserved_0_1:2; | ||
191 | } s; | ||
192 | struct cvmx_agl_gmx_bad_reg_s cn52xx; | ||
193 | struct cvmx_agl_gmx_bad_reg_s cn52xxp1; | ||
194 | struct cvmx_agl_gmx_bad_reg_cn56xx { | ||
195 | uint64_t reserved_35_63:29; | ||
196 | uint64_t txpsh:1; | ||
197 | uint64_t txpop:1; | ||
198 | uint64_t ovrflw:1; | ||
199 | uint64_t reserved_27_31:5; | ||
200 | uint64_t statovr:1; | ||
201 | uint64_t reserved_23_25:3; | ||
202 | uint64_t loststat:1; | ||
203 | uint64_t reserved_3_21:19; | ||
204 | uint64_t out_ovr:1; | ||
205 | uint64_t reserved_0_1:2; | ||
206 | } cn56xx; | ||
207 | struct cvmx_agl_gmx_bad_reg_cn56xx cn56xxp1; | ||
208 | }; | ||
209 | |||
210 | union cvmx_agl_gmx_bist { | ||
211 | uint64_t u64; | ||
212 | struct cvmx_agl_gmx_bist_s { | ||
213 | uint64_t reserved_10_63:54; | ||
214 | uint64_t status:10; | ||
215 | } s; | ||
216 | struct cvmx_agl_gmx_bist_s cn52xx; | ||
217 | struct cvmx_agl_gmx_bist_s cn52xxp1; | ||
218 | struct cvmx_agl_gmx_bist_s cn56xx; | ||
219 | struct cvmx_agl_gmx_bist_s cn56xxp1; | ||
220 | }; | ||
221 | |||
222 | union cvmx_agl_gmx_drv_ctl { | ||
223 | uint64_t u64; | ||
224 | struct cvmx_agl_gmx_drv_ctl_s { | ||
225 | uint64_t reserved_49_63:15; | ||
226 | uint64_t byp_en1:1; | ||
227 | uint64_t reserved_45_47:3; | ||
228 | uint64_t pctl1:5; | ||
229 | uint64_t reserved_37_39:3; | ||
230 | uint64_t nctl1:5; | ||
231 | uint64_t reserved_17_31:15; | ||
232 | uint64_t byp_en:1; | ||
233 | uint64_t reserved_13_15:3; | ||
234 | uint64_t pctl:5; | ||
235 | uint64_t reserved_5_7:3; | ||
236 | uint64_t nctl:5; | ||
237 | } s; | ||
238 | struct cvmx_agl_gmx_drv_ctl_s cn52xx; | ||
239 | struct cvmx_agl_gmx_drv_ctl_s cn52xxp1; | ||
240 | struct cvmx_agl_gmx_drv_ctl_cn56xx { | ||
241 | uint64_t reserved_17_63:47; | ||
242 | uint64_t byp_en:1; | ||
243 | uint64_t reserved_13_15:3; | ||
244 | uint64_t pctl:5; | ||
245 | uint64_t reserved_5_7:3; | ||
246 | uint64_t nctl:5; | ||
247 | } cn56xx; | ||
248 | struct cvmx_agl_gmx_drv_ctl_cn56xx cn56xxp1; | ||
249 | }; | ||
250 | |||
251 | union cvmx_agl_gmx_inf_mode { | ||
252 | uint64_t u64; | ||
253 | struct cvmx_agl_gmx_inf_mode_s { | ||
254 | uint64_t reserved_2_63:62; | ||
255 | uint64_t en:1; | ||
256 | uint64_t reserved_0_0:1; | ||
257 | } s; | ||
258 | struct cvmx_agl_gmx_inf_mode_s cn52xx; | ||
259 | struct cvmx_agl_gmx_inf_mode_s cn52xxp1; | ||
260 | struct cvmx_agl_gmx_inf_mode_s cn56xx; | ||
261 | struct cvmx_agl_gmx_inf_mode_s cn56xxp1; | ||
262 | }; | ||
263 | |||
264 | union cvmx_agl_gmx_prtx_cfg { | ||
265 | uint64_t u64; | ||
266 | struct cvmx_agl_gmx_prtx_cfg_s { | ||
267 | uint64_t reserved_6_63:58; | ||
268 | uint64_t tx_en:1; | ||
269 | uint64_t rx_en:1; | ||
270 | uint64_t slottime:1; | ||
271 | uint64_t duplex:1; | ||
272 | uint64_t speed:1; | ||
273 | uint64_t en:1; | ||
274 | } s; | ||
275 | struct cvmx_agl_gmx_prtx_cfg_s cn52xx; | ||
276 | struct cvmx_agl_gmx_prtx_cfg_s cn52xxp1; | ||
277 | struct cvmx_agl_gmx_prtx_cfg_s cn56xx; | ||
278 | struct cvmx_agl_gmx_prtx_cfg_s cn56xxp1; | ||
279 | }; | ||
280 | |||
281 | union cvmx_agl_gmx_rxx_adr_cam0 { | ||
282 | uint64_t u64; | ||
283 | struct cvmx_agl_gmx_rxx_adr_cam0_s { | ||
284 | uint64_t adr:64; | ||
285 | } s; | ||
286 | struct cvmx_agl_gmx_rxx_adr_cam0_s cn52xx; | ||
287 | struct cvmx_agl_gmx_rxx_adr_cam0_s cn52xxp1; | ||
288 | struct cvmx_agl_gmx_rxx_adr_cam0_s cn56xx; | ||
289 | struct cvmx_agl_gmx_rxx_adr_cam0_s cn56xxp1; | ||
290 | }; | ||
291 | |||
292 | union cvmx_agl_gmx_rxx_adr_cam1 { | ||
293 | uint64_t u64; | ||
294 | struct cvmx_agl_gmx_rxx_adr_cam1_s { | ||
295 | uint64_t adr:64; | ||
296 | } s; | ||
297 | struct cvmx_agl_gmx_rxx_adr_cam1_s cn52xx; | ||
298 | struct cvmx_agl_gmx_rxx_adr_cam1_s cn52xxp1; | ||
299 | struct cvmx_agl_gmx_rxx_adr_cam1_s cn56xx; | ||
300 | struct cvmx_agl_gmx_rxx_adr_cam1_s cn56xxp1; | ||
301 | }; | ||
302 | |||
303 | union cvmx_agl_gmx_rxx_adr_cam2 { | ||
304 | uint64_t u64; | ||
305 | struct cvmx_agl_gmx_rxx_adr_cam2_s { | ||
306 | uint64_t adr:64; | ||
307 | } s; | ||
308 | struct cvmx_agl_gmx_rxx_adr_cam2_s cn52xx; | ||
309 | struct cvmx_agl_gmx_rxx_adr_cam2_s cn52xxp1; | ||
310 | struct cvmx_agl_gmx_rxx_adr_cam2_s cn56xx; | ||
311 | struct cvmx_agl_gmx_rxx_adr_cam2_s cn56xxp1; | ||
312 | }; | ||
313 | |||
314 | union cvmx_agl_gmx_rxx_adr_cam3 { | ||
315 | uint64_t u64; | ||
316 | struct cvmx_agl_gmx_rxx_adr_cam3_s { | ||
317 | uint64_t adr:64; | ||
318 | } s; | ||
319 | struct cvmx_agl_gmx_rxx_adr_cam3_s cn52xx; | ||
320 | struct cvmx_agl_gmx_rxx_adr_cam3_s cn52xxp1; | ||
321 | struct cvmx_agl_gmx_rxx_adr_cam3_s cn56xx; | ||
322 | struct cvmx_agl_gmx_rxx_adr_cam3_s cn56xxp1; | ||
323 | }; | ||
324 | |||
325 | union cvmx_agl_gmx_rxx_adr_cam4 { | ||
326 | uint64_t u64; | ||
327 | struct cvmx_agl_gmx_rxx_adr_cam4_s { | ||
328 | uint64_t adr:64; | ||
329 | } s; | ||
330 | struct cvmx_agl_gmx_rxx_adr_cam4_s cn52xx; | ||
331 | struct cvmx_agl_gmx_rxx_adr_cam4_s cn52xxp1; | ||
332 | struct cvmx_agl_gmx_rxx_adr_cam4_s cn56xx; | ||
333 | struct cvmx_agl_gmx_rxx_adr_cam4_s cn56xxp1; | ||
334 | }; | ||
335 | |||
336 | union cvmx_agl_gmx_rxx_adr_cam5 { | ||
337 | uint64_t u64; | ||
338 | struct cvmx_agl_gmx_rxx_adr_cam5_s { | ||
339 | uint64_t adr:64; | ||
340 | } s; | ||
341 | struct cvmx_agl_gmx_rxx_adr_cam5_s cn52xx; | ||
342 | struct cvmx_agl_gmx_rxx_adr_cam5_s cn52xxp1; | ||
343 | struct cvmx_agl_gmx_rxx_adr_cam5_s cn56xx; | ||
344 | struct cvmx_agl_gmx_rxx_adr_cam5_s cn56xxp1; | ||
345 | }; | ||
346 | |||
347 | union cvmx_agl_gmx_rxx_adr_cam_en { | ||
348 | uint64_t u64; | ||
349 | struct cvmx_agl_gmx_rxx_adr_cam_en_s { | ||
350 | uint64_t reserved_8_63:56; | ||
351 | uint64_t en:8; | ||
352 | } s; | ||
353 | struct cvmx_agl_gmx_rxx_adr_cam_en_s cn52xx; | ||
354 | struct cvmx_agl_gmx_rxx_adr_cam_en_s cn52xxp1; | ||
355 | struct cvmx_agl_gmx_rxx_adr_cam_en_s cn56xx; | ||
356 | struct cvmx_agl_gmx_rxx_adr_cam_en_s cn56xxp1; | ||
357 | }; | ||
358 | |||
359 | union cvmx_agl_gmx_rxx_adr_ctl { | ||
360 | uint64_t u64; | ||
361 | struct cvmx_agl_gmx_rxx_adr_ctl_s { | ||
362 | uint64_t reserved_4_63:60; | ||
363 | uint64_t cam_mode:1; | ||
364 | uint64_t mcst:2; | ||
365 | uint64_t bcst:1; | ||
366 | } s; | ||
367 | struct cvmx_agl_gmx_rxx_adr_ctl_s cn52xx; | ||
368 | struct cvmx_agl_gmx_rxx_adr_ctl_s cn52xxp1; | ||
369 | struct cvmx_agl_gmx_rxx_adr_ctl_s cn56xx; | ||
370 | struct cvmx_agl_gmx_rxx_adr_ctl_s cn56xxp1; | ||
371 | }; | ||
372 | |||
373 | union cvmx_agl_gmx_rxx_decision { | ||
374 | uint64_t u64; | ||
375 | struct cvmx_agl_gmx_rxx_decision_s { | ||
376 | uint64_t reserved_5_63:59; | ||
377 | uint64_t cnt:5; | ||
378 | } s; | ||
379 | struct cvmx_agl_gmx_rxx_decision_s cn52xx; | ||
380 | struct cvmx_agl_gmx_rxx_decision_s cn52xxp1; | ||
381 | struct cvmx_agl_gmx_rxx_decision_s cn56xx; | ||
382 | struct cvmx_agl_gmx_rxx_decision_s cn56xxp1; | ||
383 | }; | ||
384 | |||
385 | union cvmx_agl_gmx_rxx_frm_chk { | ||
386 | uint64_t u64; | ||
387 | struct cvmx_agl_gmx_rxx_frm_chk_s { | ||
388 | uint64_t reserved_9_63:55; | ||
389 | uint64_t skperr:1; | ||
390 | uint64_t rcverr:1; | ||
391 | uint64_t lenerr:1; | ||
392 | uint64_t alnerr:1; | ||
393 | uint64_t fcserr:1; | ||
394 | uint64_t jabber:1; | ||
395 | uint64_t maxerr:1; | ||
396 | uint64_t reserved_1_1:1; | ||
397 | uint64_t minerr:1; | ||
398 | } s; | ||
399 | struct cvmx_agl_gmx_rxx_frm_chk_s cn52xx; | ||
400 | struct cvmx_agl_gmx_rxx_frm_chk_s cn52xxp1; | ||
401 | struct cvmx_agl_gmx_rxx_frm_chk_s cn56xx; | ||
402 | struct cvmx_agl_gmx_rxx_frm_chk_s cn56xxp1; | ||
403 | }; | ||
404 | |||
405 | union cvmx_agl_gmx_rxx_frm_ctl { | ||
406 | uint64_t u64; | ||
407 | struct cvmx_agl_gmx_rxx_frm_ctl_s { | ||
408 | uint64_t reserved_10_63:54; | ||
409 | uint64_t pre_align:1; | ||
410 | uint64_t pad_len:1; | ||
411 | uint64_t vlan_len:1; | ||
412 | uint64_t pre_free:1; | ||
413 | uint64_t ctl_smac:1; | ||
414 | uint64_t ctl_mcst:1; | ||
415 | uint64_t ctl_bck:1; | ||
416 | uint64_t ctl_drp:1; | ||
417 | uint64_t pre_strp:1; | ||
418 | uint64_t pre_chk:1; | ||
419 | } s; | ||
420 | struct cvmx_agl_gmx_rxx_frm_ctl_s cn52xx; | ||
421 | struct cvmx_agl_gmx_rxx_frm_ctl_s cn52xxp1; | ||
422 | struct cvmx_agl_gmx_rxx_frm_ctl_s cn56xx; | ||
423 | struct cvmx_agl_gmx_rxx_frm_ctl_s cn56xxp1; | ||
424 | }; | ||
425 | |||
426 | union cvmx_agl_gmx_rxx_frm_max { | ||
427 | uint64_t u64; | ||
428 | struct cvmx_agl_gmx_rxx_frm_max_s { | ||
429 | uint64_t reserved_16_63:48; | ||
430 | uint64_t len:16; | ||
431 | } s; | ||
432 | struct cvmx_agl_gmx_rxx_frm_max_s cn52xx; | ||
433 | struct cvmx_agl_gmx_rxx_frm_max_s cn52xxp1; | ||
434 | struct cvmx_agl_gmx_rxx_frm_max_s cn56xx; | ||
435 | struct cvmx_agl_gmx_rxx_frm_max_s cn56xxp1; | ||
436 | }; | ||
437 | |||
438 | union cvmx_agl_gmx_rxx_frm_min { | ||
439 | uint64_t u64; | ||
440 | struct cvmx_agl_gmx_rxx_frm_min_s { | ||
441 | uint64_t reserved_16_63:48; | ||
442 | uint64_t len:16; | ||
443 | } s; | ||
444 | struct cvmx_agl_gmx_rxx_frm_min_s cn52xx; | ||
445 | struct cvmx_agl_gmx_rxx_frm_min_s cn52xxp1; | ||
446 | struct cvmx_agl_gmx_rxx_frm_min_s cn56xx; | ||
447 | struct cvmx_agl_gmx_rxx_frm_min_s cn56xxp1; | ||
448 | }; | ||
449 | |||
450 | union cvmx_agl_gmx_rxx_ifg { | ||
451 | uint64_t u64; | ||
452 | struct cvmx_agl_gmx_rxx_ifg_s { | ||
453 | uint64_t reserved_4_63:60; | ||
454 | uint64_t ifg:4; | ||
455 | } s; | ||
456 | struct cvmx_agl_gmx_rxx_ifg_s cn52xx; | ||
457 | struct cvmx_agl_gmx_rxx_ifg_s cn52xxp1; | ||
458 | struct cvmx_agl_gmx_rxx_ifg_s cn56xx; | ||
459 | struct cvmx_agl_gmx_rxx_ifg_s cn56xxp1; | ||
460 | }; | ||
461 | |||
462 | union cvmx_agl_gmx_rxx_int_en { | ||
463 | uint64_t u64; | ||
464 | struct cvmx_agl_gmx_rxx_int_en_s { | ||
465 | uint64_t reserved_20_63:44; | ||
466 | uint64_t pause_drp:1; | ||
467 | uint64_t reserved_16_18:3; | ||
468 | uint64_t ifgerr:1; | ||
469 | uint64_t coldet:1; | ||
470 | uint64_t falerr:1; | ||
471 | uint64_t rsverr:1; | ||
472 | uint64_t pcterr:1; | ||
473 | uint64_t ovrerr:1; | ||
474 | uint64_t reserved_9_9:1; | ||
475 | uint64_t skperr:1; | ||
476 | uint64_t rcverr:1; | ||
477 | uint64_t lenerr:1; | ||
478 | uint64_t alnerr:1; | ||
479 | uint64_t fcserr:1; | ||
480 | uint64_t jabber:1; | ||
481 | uint64_t maxerr:1; | ||
482 | uint64_t reserved_1_1:1; | ||
483 | uint64_t minerr:1; | ||
484 | } s; | ||
485 | struct cvmx_agl_gmx_rxx_int_en_s cn52xx; | ||
486 | struct cvmx_agl_gmx_rxx_int_en_s cn52xxp1; | ||
487 | struct cvmx_agl_gmx_rxx_int_en_s cn56xx; | ||
488 | struct cvmx_agl_gmx_rxx_int_en_s cn56xxp1; | ||
489 | }; | ||
490 | |||
491 | union cvmx_agl_gmx_rxx_int_reg { | ||
492 | uint64_t u64; | ||
493 | struct cvmx_agl_gmx_rxx_int_reg_s { | ||
494 | uint64_t reserved_20_63:44; | ||
495 | uint64_t pause_drp:1; | ||
496 | uint64_t reserved_16_18:3; | ||
497 | uint64_t ifgerr:1; | ||
498 | uint64_t coldet:1; | ||
499 | uint64_t falerr:1; | ||
500 | uint64_t rsverr:1; | ||
501 | uint64_t pcterr:1; | ||
502 | uint64_t ovrerr:1; | ||
503 | uint64_t reserved_9_9:1; | ||
504 | uint64_t skperr:1; | ||
505 | uint64_t rcverr:1; | ||
506 | uint64_t lenerr:1; | ||
507 | uint64_t alnerr:1; | ||
508 | uint64_t fcserr:1; | ||
509 | uint64_t jabber:1; | ||
510 | uint64_t maxerr:1; | ||
511 | uint64_t reserved_1_1:1; | ||
512 | uint64_t minerr:1; | ||
513 | } s; | ||
514 | struct cvmx_agl_gmx_rxx_int_reg_s cn52xx; | ||
515 | struct cvmx_agl_gmx_rxx_int_reg_s cn52xxp1; | ||
516 | struct cvmx_agl_gmx_rxx_int_reg_s cn56xx; | ||
517 | struct cvmx_agl_gmx_rxx_int_reg_s cn56xxp1; | ||
518 | }; | ||
519 | |||
520 | union cvmx_agl_gmx_rxx_jabber { | ||
521 | uint64_t u64; | ||
522 | struct cvmx_agl_gmx_rxx_jabber_s { | ||
523 | uint64_t reserved_16_63:48; | ||
524 | uint64_t cnt:16; | ||
525 | } s; | ||
526 | struct cvmx_agl_gmx_rxx_jabber_s cn52xx; | ||
527 | struct cvmx_agl_gmx_rxx_jabber_s cn52xxp1; | ||
528 | struct cvmx_agl_gmx_rxx_jabber_s cn56xx; | ||
529 | struct cvmx_agl_gmx_rxx_jabber_s cn56xxp1; | ||
530 | }; | ||
531 | |||
532 | union cvmx_agl_gmx_rxx_pause_drop_time { | ||
533 | uint64_t u64; | ||
534 | struct cvmx_agl_gmx_rxx_pause_drop_time_s { | ||
535 | uint64_t reserved_16_63:48; | ||
536 | uint64_t status:16; | ||
537 | } s; | ||
538 | struct cvmx_agl_gmx_rxx_pause_drop_time_s cn52xx; | ||
539 | struct cvmx_agl_gmx_rxx_pause_drop_time_s cn52xxp1; | ||
540 | struct cvmx_agl_gmx_rxx_pause_drop_time_s cn56xx; | ||
541 | struct cvmx_agl_gmx_rxx_pause_drop_time_s cn56xxp1; | ||
542 | }; | ||
543 | |||
544 | union cvmx_agl_gmx_rxx_stats_ctl { | ||
545 | uint64_t u64; | ||
546 | struct cvmx_agl_gmx_rxx_stats_ctl_s { | ||
547 | uint64_t reserved_1_63:63; | ||
548 | uint64_t rd_clr:1; | ||
549 | } s; | ||
550 | struct cvmx_agl_gmx_rxx_stats_ctl_s cn52xx; | ||
551 | struct cvmx_agl_gmx_rxx_stats_ctl_s cn52xxp1; | ||
552 | struct cvmx_agl_gmx_rxx_stats_ctl_s cn56xx; | ||
553 | struct cvmx_agl_gmx_rxx_stats_ctl_s cn56xxp1; | ||
554 | }; | ||
555 | |||
556 | union cvmx_agl_gmx_rxx_stats_octs { | ||
557 | uint64_t u64; | ||
558 | struct cvmx_agl_gmx_rxx_stats_octs_s { | ||
559 | uint64_t reserved_48_63:16; | ||
560 | uint64_t cnt:48; | ||
561 | } s; | ||
562 | struct cvmx_agl_gmx_rxx_stats_octs_s cn52xx; | ||
563 | struct cvmx_agl_gmx_rxx_stats_octs_s cn52xxp1; | ||
564 | struct cvmx_agl_gmx_rxx_stats_octs_s cn56xx; | ||
565 | struct cvmx_agl_gmx_rxx_stats_octs_s cn56xxp1; | ||
566 | }; | ||
567 | |||
568 | union cvmx_agl_gmx_rxx_stats_octs_ctl { | ||
569 | uint64_t u64; | ||
570 | struct cvmx_agl_gmx_rxx_stats_octs_ctl_s { | ||
571 | uint64_t reserved_48_63:16; | ||
572 | uint64_t cnt:48; | ||
573 | } s; | ||
574 | struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn52xx; | ||
575 | struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn52xxp1; | ||
576 | struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn56xx; | ||
577 | struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn56xxp1; | ||
578 | }; | ||
579 | |||
580 | union cvmx_agl_gmx_rxx_stats_octs_dmac { | ||
581 | uint64_t u64; | ||
582 | struct cvmx_agl_gmx_rxx_stats_octs_dmac_s { | ||
583 | uint64_t reserved_48_63:16; | ||
584 | uint64_t cnt:48; | ||
585 | } s; | ||
586 | struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn52xx; | ||
587 | struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn52xxp1; | ||
588 | struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn56xx; | ||
589 | struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn56xxp1; | ||
590 | }; | ||
591 | |||
592 | union cvmx_agl_gmx_rxx_stats_octs_drp { | ||
593 | uint64_t u64; | ||
594 | struct cvmx_agl_gmx_rxx_stats_octs_drp_s { | ||
595 | uint64_t reserved_48_63:16; | ||
596 | uint64_t cnt:48; | ||
597 | } s; | ||
598 | struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn52xx; | ||
599 | struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn52xxp1; | ||
600 | struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn56xx; | ||
601 | struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn56xxp1; | ||
602 | }; | ||
603 | |||
604 | union cvmx_agl_gmx_rxx_stats_pkts { | ||
605 | uint64_t u64; | ||
606 | struct cvmx_agl_gmx_rxx_stats_pkts_s { | ||
607 | uint64_t reserved_32_63:32; | ||
608 | uint64_t cnt:32; | ||
609 | } s; | ||
610 | struct cvmx_agl_gmx_rxx_stats_pkts_s cn52xx; | ||
611 | struct cvmx_agl_gmx_rxx_stats_pkts_s cn52xxp1; | ||
612 | struct cvmx_agl_gmx_rxx_stats_pkts_s cn56xx; | ||
613 | struct cvmx_agl_gmx_rxx_stats_pkts_s cn56xxp1; | ||
614 | }; | ||
615 | |||
616 | union cvmx_agl_gmx_rxx_stats_pkts_bad { | ||
617 | uint64_t u64; | ||
618 | struct cvmx_agl_gmx_rxx_stats_pkts_bad_s { | ||
619 | uint64_t reserved_32_63:32; | ||
620 | uint64_t cnt:32; | ||
621 | } s; | ||
622 | struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn52xx; | ||
623 | struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn52xxp1; | ||
624 | struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn56xx; | ||
625 | struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn56xxp1; | ||
626 | }; | ||
627 | |||
628 | union cvmx_agl_gmx_rxx_stats_pkts_ctl { | ||
629 | uint64_t u64; | ||
630 | struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s { | ||
631 | uint64_t reserved_32_63:32; | ||
632 | uint64_t cnt:32; | ||
633 | } s; | ||
634 | struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn52xx; | ||
635 | struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn52xxp1; | ||
636 | struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn56xx; | ||
637 | struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn56xxp1; | ||
638 | }; | ||
639 | |||
640 | union cvmx_agl_gmx_rxx_stats_pkts_dmac { | ||
641 | uint64_t u64; | ||
642 | struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s { | ||
643 | uint64_t reserved_32_63:32; | ||
644 | uint64_t cnt:32; | ||
645 | } s; | ||
646 | struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn52xx; | ||
647 | struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn52xxp1; | ||
648 | struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn56xx; | ||
649 | struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn56xxp1; | ||
650 | }; | ||
651 | |||
652 | union cvmx_agl_gmx_rxx_stats_pkts_drp { | ||
653 | uint64_t u64; | ||
654 | struct cvmx_agl_gmx_rxx_stats_pkts_drp_s { | ||
655 | uint64_t reserved_32_63:32; | ||
656 | uint64_t cnt:32; | ||
657 | } s; | ||
658 | struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn52xx; | ||
659 | struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn52xxp1; | ||
660 | struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn56xx; | ||
661 | struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn56xxp1; | ||
662 | }; | ||
663 | |||
664 | union cvmx_agl_gmx_rxx_udd_skp { | ||
665 | uint64_t u64; | ||
666 | struct cvmx_agl_gmx_rxx_udd_skp_s { | ||
667 | uint64_t reserved_9_63:55; | ||
668 | uint64_t fcssel:1; | ||
669 | uint64_t reserved_7_7:1; | ||
670 | uint64_t len:7; | ||
671 | } s; | ||
672 | struct cvmx_agl_gmx_rxx_udd_skp_s cn52xx; | ||
673 | struct cvmx_agl_gmx_rxx_udd_skp_s cn52xxp1; | ||
674 | struct cvmx_agl_gmx_rxx_udd_skp_s cn56xx; | ||
675 | struct cvmx_agl_gmx_rxx_udd_skp_s cn56xxp1; | ||
676 | }; | ||
677 | |||
678 | union cvmx_agl_gmx_rx_bp_dropx { | ||
679 | uint64_t u64; | ||
680 | struct cvmx_agl_gmx_rx_bp_dropx_s { | ||
681 | uint64_t reserved_6_63:58; | ||
682 | uint64_t mark:6; | ||
683 | } s; | ||
684 | struct cvmx_agl_gmx_rx_bp_dropx_s cn52xx; | ||
685 | struct cvmx_agl_gmx_rx_bp_dropx_s cn52xxp1; | ||
686 | struct cvmx_agl_gmx_rx_bp_dropx_s cn56xx; | ||
687 | struct cvmx_agl_gmx_rx_bp_dropx_s cn56xxp1; | ||
688 | }; | ||
689 | |||
690 | union cvmx_agl_gmx_rx_bp_offx { | ||
691 | uint64_t u64; | ||
692 | struct cvmx_agl_gmx_rx_bp_offx_s { | ||
693 | uint64_t reserved_6_63:58; | ||
694 | uint64_t mark:6; | ||
695 | } s; | ||
696 | struct cvmx_agl_gmx_rx_bp_offx_s cn52xx; | ||
697 | struct cvmx_agl_gmx_rx_bp_offx_s cn52xxp1; | ||
698 | struct cvmx_agl_gmx_rx_bp_offx_s cn56xx; | ||
699 | struct cvmx_agl_gmx_rx_bp_offx_s cn56xxp1; | ||
700 | }; | ||
701 | |||
702 | union cvmx_agl_gmx_rx_bp_onx { | ||
703 | uint64_t u64; | ||
704 | struct cvmx_agl_gmx_rx_bp_onx_s { | ||
705 | uint64_t reserved_9_63:55; | ||
706 | uint64_t mark:9; | ||
707 | } s; | ||
708 | struct cvmx_agl_gmx_rx_bp_onx_s cn52xx; | ||
709 | struct cvmx_agl_gmx_rx_bp_onx_s cn52xxp1; | ||
710 | struct cvmx_agl_gmx_rx_bp_onx_s cn56xx; | ||
711 | struct cvmx_agl_gmx_rx_bp_onx_s cn56xxp1; | ||
712 | }; | ||
713 | |||
714 | union cvmx_agl_gmx_rx_prt_info { | ||
715 | uint64_t u64; | ||
716 | struct cvmx_agl_gmx_rx_prt_info_s { | ||
717 | uint64_t reserved_18_63:46; | ||
718 | uint64_t drop:2; | ||
719 | uint64_t reserved_2_15:14; | ||
720 | uint64_t commit:2; | ||
721 | } s; | ||
722 | struct cvmx_agl_gmx_rx_prt_info_s cn52xx; | ||
723 | struct cvmx_agl_gmx_rx_prt_info_s cn52xxp1; | ||
724 | struct cvmx_agl_gmx_rx_prt_info_cn56xx { | ||
725 | uint64_t reserved_17_63:47; | ||
726 | uint64_t drop:1; | ||
727 | uint64_t reserved_1_15:15; | ||
728 | uint64_t commit:1; | ||
729 | } cn56xx; | ||
730 | struct cvmx_agl_gmx_rx_prt_info_cn56xx cn56xxp1; | ||
731 | }; | ||
732 | |||
733 | union cvmx_agl_gmx_rx_tx_status { | ||
734 | uint64_t u64; | ||
735 | struct cvmx_agl_gmx_rx_tx_status_s { | ||
736 | uint64_t reserved_6_63:58; | ||
737 | uint64_t tx:2; | ||
738 | uint64_t reserved_2_3:2; | ||
739 | uint64_t rx:2; | ||
740 | } s; | ||
741 | struct cvmx_agl_gmx_rx_tx_status_s cn52xx; | ||
742 | struct cvmx_agl_gmx_rx_tx_status_s cn52xxp1; | ||
743 | struct cvmx_agl_gmx_rx_tx_status_cn56xx { | ||
744 | uint64_t reserved_5_63:59; | ||
745 | uint64_t tx:1; | ||
746 | uint64_t reserved_1_3:3; | ||
747 | uint64_t rx:1; | ||
748 | } cn56xx; | ||
749 | struct cvmx_agl_gmx_rx_tx_status_cn56xx cn56xxp1; | ||
750 | }; | ||
751 | |||
752 | union cvmx_agl_gmx_smacx { | ||
753 | uint64_t u64; | ||
754 | struct cvmx_agl_gmx_smacx_s { | ||
755 | uint64_t reserved_48_63:16; | ||
756 | uint64_t smac:48; | ||
757 | } s; | ||
758 | struct cvmx_agl_gmx_smacx_s cn52xx; | ||
759 | struct cvmx_agl_gmx_smacx_s cn52xxp1; | ||
760 | struct cvmx_agl_gmx_smacx_s cn56xx; | ||
761 | struct cvmx_agl_gmx_smacx_s cn56xxp1; | ||
762 | }; | ||
763 | |||
764 | union cvmx_agl_gmx_stat_bp { | ||
765 | uint64_t u64; | ||
766 | struct cvmx_agl_gmx_stat_bp_s { | ||
767 | uint64_t reserved_17_63:47; | ||
768 | uint64_t bp:1; | ||
769 | uint64_t cnt:16; | ||
770 | } s; | ||
771 | struct cvmx_agl_gmx_stat_bp_s cn52xx; | ||
772 | struct cvmx_agl_gmx_stat_bp_s cn52xxp1; | ||
773 | struct cvmx_agl_gmx_stat_bp_s cn56xx; | ||
774 | struct cvmx_agl_gmx_stat_bp_s cn56xxp1; | ||
775 | }; | ||
776 | |||
777 | union cvmx_agl_gmx_txx_append { | ||
778 | uint64_t u64; | ||
779 | struct cvmx_agl_gmx_txx_append_s { | ||
780 | uint64_t reserved_4_63:60; | ||
781 | uint64_t force_fcs:1; | ||
782 | uint64_t fcs:1; | ||
783 | uint64_t pad:1; | ||
784 | uint64_t preamble:1; | ||
785 | } s; | ||
786 | struct cvmx_agl_gmx_txx_append_s cn52xx; | ||
787 | struct cvmx_agl_gmx_txx_append_s cn52xxp1; | ||
788 | struct cvmx_agl_gmx_txx_append_s cn56xx; | ||
789 | struct cvmx_agl_gmx_txx_append_s cn56xxp1; | ||
790 | }; | ||
791 | |||
792 | union cvmx_agl_gmx_txx_ctl { | ||
793 | uint64_t u64; | ||
794 | struct cvmx_agl_gmx_txx_ctl_s { | ||
795 | uint64_t reserved_2_63:62; | ||
796 | uint64_t xsdef_en:1; | ||
797 | uint64_t xscol_en:1; | ||
798 | } s; | ||
799 | struct cvmx_agl_gmx_txx_ctl_s cn52xx; | ||
800 | struct cvmx_agl_gmx_txx_ctl_s cn52xxp1; | ||
801 | struct cvmx_agl_gmx_txx_ctl_s cn56xx; | ||
802 | struct cvmx_agl_gmx_txx_ctl_s cn56xxp1; | ||
803 | }; | ||
804 | |||
805 | union cvmx_agl_gmx_txx_min_pkt { | ||
806 | uint64_t u64; | ||
807 | struct cvmx_agl_gmx_txx_min_pkt_s { | ||
808 | uint64_t reserved_8_63:56; | ||
809 | uint64_t min_size:8; | ||
810 | } s; | ||
811 | struct cvmx_agl_gmx_txx_min_pkt_s cn52xx; | ||
812 | struct cvmx_agl_gmx_txx_min_pkt_s cn52xxp1; | ||
813 | struct cvmx_agl_gmx_txx_min_pkt_s cn56xx; | ||
814 | struct cvmx_agl_gmx_txx_min_pkt_s cn56xxp1; | ||
815 | }; | ||
816 | |||
817 | union cvmx_agl_gmx_txx_pause_pkt_interval { | ||
818 | uint64_t u64; | ||
819 | struct cvmx_agl_gmx_txx_pause_pkt_interval_s { | ||
820 | uint64_t reserved_16_63:48; | ||
821 | uint64_t interval:16; | ||
822 | } s; | ||
823 | struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn52xx; | ||
824 | struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn52xxp1; | ||
825 | struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn56xx; | ||
826 | struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn56xxp1; | ||
827 | }; | ||
828 | |||
829 | union cvmx_agl_gmx_txx_pause_pkt_time { | ||
830 | uint64_t u64; | ||
831 | struct cvmx_agl_gmx_txx_pause_pkt_time_s { | ||
832 | uint64_t reserved_16_63:48; | ||
833 | uint64_t time:16; | ||
834 | } s; | ||
835 | struct cvmx_agl_gmx_txx_pause_pkt_time_s cn52xx; | ||
836 | struct cvmx_agl_gmx_txx_pause_pkt_time_s cn52xxp1; | ||
837 | struct cvmx_agl_gmx_txx_pause_pkt_time_s cn56xx; | ||
838 | struct cvmx_agl_gmx_txx_pause_pkt_time_s cn56xxp1; | ||
839 | }; | ||
840 | |||
841 | union cvmx_agl_gmx_txx_pause_togo { | ||
842 | uint64_t u64; | ||
843 | struct cvmx_agl_gmx_txx_pause_togo_s { | ||
844 | uint64_t reserved_16_63:48; | ||
845 | uint64_t time:16; | ||
846 | } s; | ||
847 | struct cvmx_agl_gmx_txx_pause_togo_s cn52xx; | ||
848 | struct cvmx_agl_gmx_txx_pause_togo_s cn52xxp1; | ||
849 | struct cvmx_agl_gmx_txx_pause_togo_s cn56xx; | ||
850 | struct cvmx_agl_gmx_txx_pause_togo_s cn56xxp1; | ||
851 | }; | ||
852 | |||
853 | union cvmx_agl_gmx_txx_pause_zero { | ||
854 | uint64_t u64; | ||
855 | struct cvmx_agl_gmx_txx_pause_zero_s { | ||
856 | uint64_t reserved_1_63:63; | ||
857 | uint64_t send:1; | ||
858 | } s; | ||
859 | struct cvmx_agl_gmx_txx_pause_zero_s cn52xx; | ||
860 | struct cvmx_agl_gmx_txx_pause_zero_s cn52xxp1; | ||
861 | struct cvmx_agl_gmx_txx_pause_zero_s cn56xx; | ||
862 | struct cvmx_agl_gmx_txx_pause_zero_s cn56xxp1; | ||
863 | }; | ||
864 | |||
865 | union cvmx_agl_gmx_txx_soft_pause { | ||
866 | uint64_t u64; | ||
867 | struct cvmx_agl_gmx_txx_soft_pause_s { | ||
868 | uint64_t reserved_16_63:48; | ||
869 | uint64_t time:16; | ||
870 | } s; | ||
871 | struct cvmx_agl_gmx_txx_soft_pause_s cn52xx; | ||
872 | struct cvmx_agl_gmx_txx_soft_pause_s cn52xxp1; | ||
873 | struct cvmx_agl_gmx_txx_soft_pause_s cn56xx; | ||
874 | struct cvmx_agl_gmx_txx_soft_pause_s cn56xxp1; | ||
875 | }; | ||
876 | |||
877 | union cvmx_agl_gmx_txx_stat0 { | ||
878 | uint64_t u64; | ||
879 | struct cvmx_agl_gmx_txx_stat0_s { | ||
880 | uint64_t xsdef:32; | ||
881 | uint64_t xscol:32; | ||
882 | } s; | ||
883 | struct cvmx_agl_gmx_txx_stat0_s cn52xx; | ||
884 | struct cvmx_agl_gmx_txx_stat0_s cn52xxp1; | ||
885 | struct cvmx_agl_gmx_txx_stat0_s cn56xx; | ||
886 | struct cvmx_agl_gmx_txx_stat0_s cn56xxp1; | ||
887 | }; | ||
888 | |||
889 | union cvmx_agl_gmx_txx_stat1 { | ||
890 | uint64_t u64; | ||
891 | struct cvmx_agl_gmx_txx_stat1_s { | ||
892 | uint64_t scol:32; | ||
893 | uint64_t mcol:32; | ||
894 | } s; | ||
895 | struct cvmx_agl_gmx_txx_stat1_s cn52xx; | ||
896 | struct cvmx_agl_gmx_txx_stat1_s cn52xxp1; | ||
897 | struct cvmx_agl_gmx_txx_stat1_s cn56xx; | ||
898 | struct cvmx_agl_gmx_txx_stat1_s cn56xxp1; | ||
899 | }; | ||
900 | |||
901 | union cvmx_agl_gmx_txx_stat2 { | ||
902 | uint64_t u64; | ||
903 | struct cvmx_agl_gmx_txx_stat2_s { | ||
904 | uint64_t reserved_48_63:16; | ||
905 | uint64_t octs:48; | ||
906 | } s; | ||
907 | struct cvmx_agl_gmx_txx_stat2_s cn52xx; | ||
908 | struct cvmx_agl_gmx_txx_stat2_s cn52xxp1; | ||
909 | struct cvmx_agl_gmx_txx_stat2_s cn56xx; | ||
910 | struct cvmx_agl_gmx_txx_stat2_s cn56xxp1; | ||
911 | }; | ||
912 | |||
913 | union cvmx_agl_gmx_txx_stat3 { | ||
914 | uint64_t u64; | ||
915 | struct cvmx_agl_gmx_txx_stat3_s { | ||
916 | uint64_t reserved_32_63:32; | ||
917 | uint64_t pkts:32; | ||
918 | } s; | ||
919 | struct cvmx_agl_gmx_txx_stat3_s cn52xx; | ||
920 | struct cvmx_agl_gmx_txx_stat3_s cn52xxp1; | ||
921 | struct cvmx_agl_gmx_txx_stat3_s cn56xx; | ||
922 | struct cvmx_agl_gmx_txx_stat3_s cn56xxp1; | ||
923 | }; | ||
924 | |||
925 | union cvmx_agl_gmx_txx_stat4 { | ||
926 | uint64_t u64; | ||
927 | struct cvmx_agl_gmx_txx_stat4_s { | ||
928 | uint64_t hist1:32; | ||
929 | uint64_t hist0:32; | ||
930 | } s; | ||
931 | struct cvmx_agl_gmx_txx_stat4_s cn52xx; | ||
932 | struct cvmx_agl_gmx_txx_stat4_s cn52xxp1; | ||
933 | struct cvmx_agl_gmx_txx_stat4_s cn56xx; | ||
934 | struct cvmx_agl_gmx_txx_stat4_s cn56xxp1; | ||
935 | }; | ||
936 | |||
937 | union cvmx_agl_gmx_txx_stat5 { | ||
938 | uint64_t u64; | ||
939 | struct cvmx_agl_gmx_txx_stat5_s { | ||
940 | uint64_t hist3:32; | ||
941 | uint64_t hist2:32; | ||
942 | } s; | ||
943 | struct cvmx_agl_gmx_txx_stat5_s cn52xx; | ||
944 | struct cvmx_agl_gmx_txx_stat5_s cn52xxp1; | ||
945 | struct cvmx_agl_gmx_txx_stat5_s cn56xx; | ||
946 | struct cvmx_agl_gmx_txx_stat5_s cn56xxp1; | ||
947 | }; | ||
948 | |||
949 | union cvmx_agl_gmx_txx_stat6 { | ||
950 | uint64_t u64; | ||
951 | struct cvmx_agl_gmx_txx_stat6_s { | ||
952 | uint64_t hist5:32; | ||
953 | uint64_t hist4:32; | ||
954 | } s; | ||
955 | struct cvmx_agl_gmx_txx_stat6_s cn52xx; | ||
956 | struct cvmx_agl_gmx_txx_stat6_s cn52xxp1; | ||
957 | struct cvmx_agl_gmx_txx_stat6_s cn56xx; | ||
958 | struct cvmx_agl_gmx_txx_stat6_s cn56xxp1; | ||
959 | }; | ||
960 | |||
961 | union cvmx_agl_gmx_txx_stat7 { | ||
962 | uint64_t u64; | ||
963 | struct cvmx_agl_gmx_txx_stat7_s { | ||
964 | uint64_t hist7:32; | ||
965 | uint64_t hist6:32; | ||
966 | } s; | ||
967 | struct cvmx_agl_gmx_txx_stat7_s cn52xx; | ||
968 | struct cvmx_agl_gmx_txx_stat7_s cn52xxp1; | ||
969 | struct cvmx_agl_gmx_txx_stat7_s cn56xx; | ||
970 | struct cvmx_agl_gmx_txx_stat7_s cn56xxp1; | ||
971 | }; | ||
972 | |||
973 | union cvmx_agl_gmx_txx_stat8 { | ||
974 | uint64_t u64; | ||
975 | struct cvmx_agl_gmx_txx_stat8_s { | ||
976 | uint64_t mcst:32; | ||
977 | uint64_t bcst:32; | ||
978 | } s; | ||
979 | struct cvmx_agl_gmx_txx_stat8_s cn52xx; | ||
980 | struct cvmx_agl_gmx_txx_stat8_s cn52xxp1; | ||
981 | struct cvmx_agl_gmx_txx_stat8_s cn56xx; | ||
982 | struct cvmx_agl_gmx_txx_stat8_s cn56xxp1; | ||
983 | }; | ||
984 | |||
985 | union cvmx_agl_gmx_txx_stat9 { | ||
986 | uint64_t u64; | ||
987 | struct cvmx_agl_gmx_txx_stat9_s { | ||
988 | uint64_t undflw:32; | ||
989 | uint64_t ctl:32; | ||
990 | } s; | ||
991 | struct cvmx_agl_gmx_txx_stat9_s cn52xx; | ||
992 | struct cvmx_agl_gmx_txx_stat9_s cn52xxp1; | ||
993 | struct cvmx_agl_gmx_txx_stat9_s cn56xx; | ||
994 | struct cvmx_agl_gmx_txx_stat9_s cn56xxp1; | ||
995 | }; | ||
996 | |||
997 | union cvmx_agl_gmx_txx_stats_ctl { | ||
998 | uint64_t u64; | ||
999 | struct cvmx_agl_gmx_txx_stats_ctl_s { | ||
1000 | uint64_t reserved_1_63:63; | ||
1001 | uint64_t rd_clr:1; | ||
1002 | } s; | ||
1003 | struct cvmx_agl_gmx_txx_stats_ctl_s cn52xx; | ||
1004 | struct cvmx_agl_gmx_txx_stats_ctl_s cn52xxp1; | ||
1005 | struct cvmx_agl_gmx_txx_stats_ctl_s cn56xx; | ||
1006 | struct cvmx_agl_gmx_txx_stats_ctl_s cn56xxp1; | ||
1007 | }; | ||
1008 | |||
1009 | union cvmx_agl_gmx_txx_thresh { | ||
1010 | uint64_t u64; | ||
1011 | struct cvmx_agl_gmx_txx_thresh_s { | ||
1012 | uint64_t reserved_6_63:58; | ||
1013 | uint64_t cnt:6; | ||
1014 | } s; | ||
1015 | struct cvmx_agl_gmx_txx_thresh_s cn52xx; | ||
1016 | struct cvmx_agl_gmx_txx_thresh_s cn52xxp1; | ||
1017 | struct cvmx_agl_gmx_txx_thresh_s cn56xx; | ||
1018 | struct cvmx_agl_gmx_txx_thresh_s cn56xxp1; | ||
1019 | }; | ||
1020 | |||
1021 | union cvmx_agl_gmx_tx_bp { | ||
1022 | uint64_t u64; | ||
1023 | struct cvmx_agl_gmx_tx_bp_s { | ||
1024 | uint64_t reserved_2_63:62; | ||
1025 | uint64_t bp:2; | ||
1026 | } s; | ||
1027 | struct cvmx_agl_gmx_tx_bp_s cn52xx; | ||
1028 | struct cvmx_agl_gmx_tx_bp_s cn52xxp1; | ||
1029 | struct cvmx_agl_gmx_tx_bp_cn56xx { | ||
1030 | uint64_t reserved_1_63:63; | ||
1031 | uint64_t bp:1; | ||
1032 | } cn56xx; | ||
1033 | struct cvmx_agl_gmx_tx_bp_cn56xx cn56xxp1; | ||
1034 | }; | ||
1035 | |||
1036 | union cvmx_agl_gmx_tx_col_attempt { | ||
1037 | uint64_t u64; | ||
1038 | struct cvmx_agl_gmx_tx_col_attempt_s { | ||
1039 | uint64_t reserved_5_63:59; | ||
1040 | uint64_t limit:5; | ||
1041 | } s; | ||
1042 | struct cvmx_agl_gmx_tx_col_attempt_s cn52xx; | ||
1043 | struct cvmx_agl_gmx_tx_col_attempt_s cn52xxp1; | ||
1044 | struct cvmx_agl_gmx_tx_col_attempt_s cn56xx; | ||
1045 | struct cvmx_agl_gmx_tx_col_attempt_s cn56xxp1; | ||
1046 | }; | ||
1047 | |||
1048 | union cvmx_agl_gmx_tx_ifg { | ||
1049 | uint64_t u64; | ||
1050 | struct cvmx_agl_gmx_tx_ifg_s { | ||
1051 | uint64_t reserved_8_63:56; | ||
1052 | uint64_t ifg2:4; | ||
1053 | uint64_t ifg1:4; | ||
1054 | } s; | ||
1055 | struct cvmx_agl_gmx_tx_ifg_s cn52xx; | ||
1056 | struct cvmx_agl_gmx_tx_ifg_s cn52xxp1; | ||
1057 | struct cvmx_agl_gmx_tx_ifg_s cn56xx; | ||
1058 | struct cvmx_agl_gmx_tx_ifg_s cn56xxp1; | ||
1059 | }; | ||
1060 | |||
1061 | union cvmx_agl_gmx_tx_int_en { | ||
1062 | uint64_t u64; | ||
1063 | struct cvmx_agl_gmx_tx_int_en_s { | ||
1064 | uint64_t reserved_18_63:46; | ||
1065 | uint64_t late_col:2; | ||
1066 | uint64_t reserved_14_15:2; | ||
1067 | uint64_t xsdef:2; | ||
1068 | uint64_t reserved_10_11:2; | ||
1069 | uint64_t xscol:2; | ||
1070 | uint64_t reserved_4_7:4; | ||
1071 | uint64_t undflw:2; | ||
1072 | uint64_t reserved_1_1:1; | ||
1073 | uint64_t pko_nxa:1; | ||
1074 | } s; | ||
1075 | struct cvmx_agl_gmx_tx_int_en_s cn52xx; | ||
1076 | struct cvmx_agl_gmx_tx_int_en_s cn52xxp1; | ||
1077 | struct cvmx_agl_gmx_tx_int_en_cn56xx { | ||
1078 | uint64_t reserved_17_63:47; | ||
1079 | uint64_t late_col:1; | ||
1080 | uint64_t reserved_13_15:3; | ||
1081 | uint64_t xsdef:1; | ||
1082 | uint64_t reserved_9_11:3; | ||
1083 | uint64_t xscol:1; | ||
1084 | uint64_t reserved_3_7:5; | ||
1085 | uint64_t undflw:1; | ||
1086 | uint64_t reserved_1_1:1; | ||
1087 | uint64_t pko_nxa:1; | ||
1088 | } cn56xx; | ||
1089 | struct cvmx_agl_gmx_tx_int_en_cn56xx cn56xxp1; | ||
1090 | }; | ||
1091 | |||
1092 | union cvmx_agl_gmx_tx_int_reg { | ||
1093 | uint64_t u64; | ||
1094 | struct cvmx_agl_gmx_tx_int_reg_s { | ||
1095 | uint64_t reserved_18_63:46; | ||
1096 | uint64_t late_col:2; | ||
1097 | uint64_t reserved_14_15:2; | ||
1098 | uint64_t xsdef:2; | ||
1099 | uint64_t reserved_10_11:2; | ||
1100 | uint64_t xscol:2; | ||
1101 | uint64_t reserved_4_7:4; | ||
1102 | uint64_t undflw:2; | ||
1103 | uint64_t reserved_1_1:1; | ||
1104 | uint64_t pko_nxa:1; | ||
1105 | } s; | ||
1106 | struct cvmx_agl_gmx_tx_int_reg_s cn52xx; | ||
1107 | struct cvmx_agl_gmx_tx_int_reg_s cn52xxp1; | ||
1108 | struct cvmx_agl_gmx_tx_int_reg_cn56xx { | ||
1109 | uint64_t reserved_17_63:47; | ||
1110 | uint64_t late_col:1; | ||
1111 | uint64_t reserved_13_15:3; | ||
1112 | uint64_t xsdef:1; | ||
1113 | uint64_t reserved_9_11:3; | ||
1114 | uint64_t xscol:1; | ||
1115 | uint64_t reserved_3_7:5; | ||
1116 | uint64_t undflw:1; | ||
1117 | uint64_t reserved_1_1:1; | ||
1118 | uint64_t pko_nxa:1; | ||
1119 | } cn56xx; | ||
1120 | struct cvmx_agl_gmx_tx_int_reg_cn56xx cn56xxp1; | ||
1121 | }; | ||
1122 | |||
1123 | union cvmx_agl_gmx_tx_jam { | ||
1124 | uint64_t u64; | ||
1125 | struct cvmx_agl_gmx_tx_jam_s { | ||
1126 | uint64_t reserved_8_63:56; | ||
1127 | uint64_t jam:8; | ||
1128 | } s; | ||
1129 | struct cvmx_agl_gmx_tx_jam_s cn52xx; | ||
1130 | struct cvmx_agl_gmx_tx_jam_s cn52xxp1; | ||
1131 | struct cvmx_agl_gmx_tx_jam_s cn56xx; | ||
1132 | struct cvmx_agl_gmx_tx_jam_s cn56xxp1; | ||
1133 | }; | ||
1134 | |||
1135 | union cvmx_agl_gmx_tx_lfsr { | ||
1136 | uint64_t u64; | ||
1137 | struct cvmx_agl_gmx_tx_lfsr_s { | ||
1138 | uint64_t reserved_16_63:48; | ||
1139 | uint64_t lfsr:16; | ||
1140 | } s; | ||
1141 | struct cvmx_agl_gmx_tx_lfsr_s cn52xx; | ||
1142 | struct cvmx_agl_gmx_tx_lfsr_s cn52xxp1; | ||
1143 | struct cvmx_agl_gmx_tx_lfsr_s cn56xx; | ||
1144 | struct cvmx_agl_gmx_tx_lfsr_s cn56xxp1; | ||
1145 | }; | ||
1146 | |||
1147 | union cvmx_agl_gmx_tx_ovr_bp { | ||
1148 | uint64_t u64; | ||
1149 | struct cvmx_agl_gmx_tx_ovr_bp_s { | ||
1150 | uint64_t reserved_10_63:54; | ||
1151 | uint64_t en:2; | ||
1152 | uint64_t reserved_6_7:2; | ||
1153 | uint64_t bp:2; | ||
1154 | uint64_t reserved_2_3:2; | ||
1155 | uint64_t ign_full:2; | ||
1156 | } s; | ||
1157 | struct cvmx_agl_gmx_tx_ovr_bp_s cn52xx; | ||
1158 | struct cvmx_agl_gmx_tx_ovr_bp_s cn52xxp1; | ||
1159 | struct cvmx_agl_gmx_tx_ovr_bp_cn56xx { | ||
1160 | uint64_t reserved_9_63:55; | ||
1161 | uint64_t en:1; | ||
1162 | uint64_t reserved_5_7:3; | ||
1163 | uint64_t bp:1; | ||
1164 | uint64_t reserved_1_3:3; | ||
1165 | uint64_t ign_full:1; | ||
1166 | } cn56xx; | ||
1167 | struct cvmx_agl_gmx_tx_ovr_bp_cn56xx cn56xxp1; | ||
1168 | }; | ||
1169 | |||
1170 | union cvmx_agl_gmx_tx_pause_pkt_dmac { | ||
1171 | uint64_t u64; | ||
1172 | struct cvmx_agl_gmx_tx_pause_pkt_dmac_s { | ||
1173 | uint64_t reserved_48_63:16; | ||
1174 | uint64_t dmac:48; | ||
1175 | } s; | ||
1176 | struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn52xx; | ||
1177 | struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn52xxp1; | ||
1178 | struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn56xx; | ||
1179 | struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn56xxp1; | ||
1180 | }; | ||
1181 | |||
1182 | union cvmx_agl_gmx_tx_pause_pkt_type { | ||
1183 | uint64_t u64; | ||
1184 | struct cvmx_agl_gmx_tx_pause_pkt_type_s { | ||
1185 | uint64_t reserved_16_63:48; | ||
1186 | uint64_t type:16; | ||
1187 | } s; | ||
1188 | struct cvmx_agl_gmx_tx_pause_pkt_type_s cn52xx; | ||
1189 | struct cvmx_agl_gmx_tx_pause_pkt_type_s cn52xxp1; | ||
1190 | struct cvmx_agl_gmx_tx_pause_pkt_type_s cn56xx; | ||
1191 | struct cvmx_agl_gmx_tx_pause_pkt_type_s cn56xxp1; | ||
1192 | }; | ||
1193 | |||
1194 | #endif | ||
diff --git a/arch/mips/include/asm/octeon/cvmx-mixx-defs.h b/arch/mips/include/asm/octeon/cvmx-mixx-defs.h new file mode 100644 index 000000000000..dab6dca492f9 --- /dev/null +++ b/arch/mips/include/asm/octeon/cvmx-mixx-defs.h | |||
@@ -0,0 +1,248 @@ | |||
1 | /***********************license start*************** | ||
2 | * Author: Cavium Networks | ||
3 | * | ||
4 | * Contact: support@caviumnetworks.com | ||
5 | * This file is part of the OCTEON SDK | ||
6 | * | ||
7 | * Copyright (c) 2003-2008 Cavium Networks | ||
8 | * | ||
9 | * This file is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License, Version 2, as | ||
11 | * published by the Free Software Foundation. | ||
12 | * | ||
13 | * This file is distributed in the hope that it will be useful, but | ||
14 | * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty | ||
15 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or | ||
16 | * NONINFRINGEMENT. See the GNU General Public License for more | ||
17 | * details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this file; if not, write to the Free Software | ||
21 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
22 | * or visit http://www.gnu.org/licenses/. | ||
23 | * | ||
24 | * This file may also be available under a different license from Cavium. | ||
25 | * Contact Cavium Networks for more information | ||
26 | ***********************license end**************************************/ | ||
27 | |||
28 | #ifndef __CVMX_MIXX_DEFS_H__ | ||
29 | #define __CVMX_MIXX_DEFS_H__ | ||
30 | |||
31 | #define CVMX_MIXX_BIST(offset) \ | ||
32 | CVMX_ADD_IO_SEG(0x0001070000100078ull + (((offset) & 1) * 2048)) | ||
33 | #define CVMX_MIXX_CTL(offset) \ | ||
34 | CVMX_ADD_IO_SEG(0x0001070000100020ull + (((offset) & 1) * 2048)) | ||
35 | #define CVMX_MIXX_INTENA(offset) \ | ||
36 | CVMX_ADD_IO_SEG(0x0001070000100050ull + (((offset) & 1) * 2048)) | ||
37 | #define CVMX_MIXX_IRCNT(offset) \ | ||
38 | CVMX_ADD_IO_SEG(0x0001070000100030ull + (((offset) & 1) * 2048)) | ||
39 | #define CVMX_MIXX_IRHWM(offset) \ | ||
40 | CVMX_ADD_IO_SEG(0x0001070000100028ull + (((offset) & 1) * 2048)) | ||
41 | #define CVMX_MIXX_IRING1(offset) \ | ||
42 | CVMX_ADD_IO_SEG(0x0001070000100010ull + (((offset) & 1) * 2048)) | ||
43 | #define CVMX_MIXX_IRING2(offset) \ | ||
44 | CVMX_ADD_IO_SEG(0x0001070000100018ull + (((offset) & 1) * 2048)) | ||
45 | #define CVMX_MIXX_ISR(offset) \ | ||
46 | CVMX_ADD_IO_SEG(0x0001070000100048ull + (((offset) & 1) * 2048)) | ||
47 | #define CVMX_MIXX_ORCNT(offset) \ | ||
48 | CVMX_ADD_IO_SEG(0x0001070000100040ull + (((offset) & 1) * 2048)) | ||
49 | #define CVMX_MIXX_ORHWM(offset) \ | ||
50 | CVMX_ADD_IO_SEG(0x0001070000100038ull + (((offset) & 1) * 2048)) | ||
51 | #define CVMX_MIXX_ORING1(offset) \ | ||
52 | CVMX_ADD_IO_SEG(0x0001070000100000ull + (((offset) & 1) * 2048)) | ||
53 | #define CVMX_MIXX_ORING2(offset) \ | ||
54 | CVMX_ADD_IO_SEG(0x0001070000100008ull + (((offset) & 1) * 2048)) | ||
55 | #define CVMX_MIXX_REMCNT(offset) \ | ||
56 | CVMX_ADD_IO_SEG(0x0001070000100058ull + (((offset) & 1) * 2048)) | ||
57 | |||
58 | union cvmx_mixx_bist { | ||
59 | uint64_t u64; | ||
60 | struct cvmx_mixx_bist_s { | ||
61 | uint64_t reserved_4_63:60; | ||
62 | uint64_t mrqdat:1; | ||
63 | uint64_t ipfdat:1; | ||
64 | uint64_t irfdat:1; | ||
65 | uint64_t orfdat:1; | ||
66 | } s; | ||
67 | struct cvmx_mixx_bist_s cn52xx; | ||
68 | struct cvmx_mixx_bist_s cn52xxp1; | ||
69 | struct cvmx_mixx_bist_s cn56xx; | ||
70 | struct cvmx_mixx_bist_s cn56xxp1; | ||
71 | }; | ||
72 | |||
73 | union cvmx_mixx_ctl { | ||
74 | uint64_t u64; | ||
75 | struct cvmx_mixx_ctl_s { | ||
76 | uint64_t reserved_8_63:56; | ||
77 | uint64_t crc_strip:1; | ||
78 | uint64_t busy:1; | ||
79 | uint64_t en:1; | ||
80 | uint64_t reset:1; | ||
81 | uint64_t lendian:1; | ||
82 | uint64_t nbtarb:1; | ||
83 | uint64_t mrq_hwm:2; | ||
84 | } s; | ||
85 | struct cvmx_mixx_ctl_s cn52xx; | ||
86 | struct cvmx_mixx_ctl_s cn52xxp1; | ||
87 | struct cvmx_mixx_ctl_s cn56xx; | ||
88 | struct cvmx_mixx_ctl_s cn56xxp1; | ||
89 | }; | ||
90 | |||
91 | union cvmx_mixx_intena { | ||
92 | uint64_t u64; | ||
93 | struct cvmx_mixx_intena_s { | ||
94 | uint64_t reserved_7_63:57; | ||
95 | uint64_t orunena:1; | ||
96 | uint64_t irunena:1; | ||
97 | uint64_t data_drpena:1; | ||
98 | uint64_t ithena:1; | ||
99 | uint64_t othena:1; | ||
100 | uint64_t ivfena:1; | ||
101 | uint64_t ovfena:1; | ||
102 | } s; | ||
103 | struct cvmx_mixx_intena_s cn52xx; | ||
104 | struct cvmx_mixx_intena_s cn52xxp1; | ||
105 | struct cvmx_mixx_intena_s cn56xx; | ||
106 | struct cvmx_mixx_intena_s cn56xxp1; | ||
107 | }; | ||
108 | |||
109 | union cvmx_mixx_ircnt { | ||
110 | uint64_t u64; | ||
111 | struct cvmx_mixx_ircnt_s { | ||
112 | uint64_t reserved_20_63:44; | ||
113 | uint64_t ircnt:20; | ||
114 | } s; | ||
115 | struct cvmx_mixx_ircnt_s cn52xx; | ||
116 | struct cvmx_mixx_ircnt_s cn52xxp1; | ||
117 | struct cvmx_mixx_ircnt_s cn56xx; | ||
118 | struct cvmx_mixx_ircnt_s cn56xxp1; | ||
119 | }; | ||
120 | |||
121 | union cvmx_mixx_irhwm { | ||
122 | uint64_t u64; | ||
123 | struct cvmx_mixx_irhwm_s { | ||
124 | uint64_t reserved_40_63:24; | ||
125 | uint64_t ibplwm:20; | ||
126 | uint64_t irhwm:20; | ||
127 | } s; | ||
128 | struct cvmx_mixx_irhwm_s cn52xx; | ||
129 | struct cvmx_mixx_irhwm_s cn52xxp1; | ||
130 | struct cvmx_mixx_irhwm_s cn56xx; | ||
131 | struct cvmx_mixx_irhwm_s cn56xxp1; | ||
132 | }; | ||
133 | |||
134 | union cvmx_mixx_iring1 { | ||
135 | uint64_t u64; | ||
136 | struct cvmx_mixx_iring1_s { | ||
137 | uint64_t reserved_60_63:4; | ||
138 | uint64_t isize:20; | ||
139 | uint64_t reserved_36_39:4; | ||
140 | uint64_t ibase:33; | ||
141 | uint64_t reserved_0_2:3; | ||
142 | } s; | ||
143 | struct cvmx_mixx_iring1_s cn52xx; | ||
144 | struct cvmx_mixx_iring1_s cn52xxp1; | ||
145 | struct cvmx_mixx_iring1_s cn56xx; | ||
146 | struct cvmx_mixx_iring1_s cn56xxp1; | ||
147 | }; | ||
148 | |||
149 | union cvmx_mixx_iring2 { | ||
150 | uint64_t u64; | ||
151 | struct cvmx_mixx_iring2_s { | ||
152 | uint64_t reserved_52_63:12; | ||
153 | uint64_t itlptr:20; | ||
154 | uint64_t reserved_20_31:12; | ||
155 | uint64_t idbell:20; | ||
156 | } s; | ||
157 | struct cvmx_mixx_iring2_s cn52xx; | ||
158 | struct cvmx_mixx_iring2_s cn52xxp1; | ||
159 | struct cvmx_mixx_iring2_s cn56xx; | ||
160 | struct cvmx_mixx_iring2_s cn56xxp1; | ||
161 | }; | ||
162 | |||
163 | union cvmx_mixx_isr { | ||
164 | uint64_t u64; | ||
165 | struct cvmx_mixx_isr_s { | ||
166 | uint64_t reserved_7_63:57; | ||
167 | uint64_t orun:1; | ||
168 | uint64_t irun:1; | ||
169 | uint64_t data_drp:1; | ||
170 | uint64_t irthresh:1; | ||
171 | uint64_t orthresh:1; | ||
172 | uint64_t idblovf:1; | ||
173 | uint64_t odblovf:1; | ||
174 | } s; | ||
175 | struct cvmx_mixx_isr_s cn52xx; | ||
176 | struct cvmx_mixx_isr_s cn52xxp1; | ||
177 | struct cvmx_mixx_isr_s cn56xx; | ||
178 | struct cvmx_mixx_isr_s cn56xxp1; | ||
179 | }; | ||
180 | |||
181 | union cvmx_mixx_orcnt { | ||
182 | uint64_t u64; | ||
183 | struct cvmx_mixx_orcnt_s { | ||
184 | uint64_t reserved_20_63:44; | ||
185 | uint64_t orcnt:20; | ||
186 | } s; | ||
187 | struct cvmx_mixx_orcnt_s cn52xx; | ||
188 | struct cvmx_mixx_orcnt_s cn52xxp1; | ||
189 | struct cvmx_mixx_orcnt_s cn56xx; | ||
190 | struct cvmx_mixx_orcnt_s cn56xxp1; | ||
191 | }; | ||
192 | |||
193 | union cvmx_mixx_orhwm { | ||
194 | uint64_t u64; | ||
195 | struct cvmx_mixx_orhwm_s { | ||
196 | uint64_t reserved_20_63:44; | ||
197 | uint64_t orhwm:20; | ||
198 | } s; | ||
199 | struct cvmx_mixx_orhwm_s cn52xx; | ||
200 | struct cvmx_mixx_orhwm_s cn52xxp1; | ||
201 | struct cvmx_mixx_orhwm_s cn56xx; | ||
202 | struct cvmx_mixx_orhwm_s cn56xxp1; | ||
203 | }; | ||
204 | |||
205 | union cvmx_mixx_oring1 { | ||
206 | uint64_t u64; | ||
207 | struct cvmx_mixx_oring1_s { | ||
208 | uint64_t reserved_60_63:4; | ||
209 | uint64_t osize:20; | ||
210 | uint64_t reserved_36_39:4; | ||
211 | uint64_t obase:33; | ||
212 | uint64_t reserved_0_2:3; | ||
213 | } s; | ||
214 | struct cvmx_mixx_oring1_s cn52xx; | ||
215 | struct cvmx_mixx_oring1_s cn52xxp1; | ||
216 | struct cvmx_mixx_oring1_s cn56xx; | ||
217 | struct cvmx_mixx_oring1_s cn56xxp1; | ||
218 | }; | ||
219 | |||
220 | union cvmx_mixx_oring2 { | ||
221 | uint64_t u64; | ||
222 | struct cvmx_mixx_oring2_s { | ||
223 | uint64_t reserved_52_63:12; | ||
224 | uint64_t otlptr:20; | ||
225 | uint64_t reserved_20_31:12; | ||
226 | uint64_t odbell:20; | ||
227 | } s; | ||
228 | struct cvmx_mixx_oring2_s cn52xx; | ||
229 | struct cvmx_mixx_oring2_s cn52xxp1; | ||
230 | struct cvmx_mixx_oring2_s cn56xx; | ||
231 | struct cvmx_mixx_oring2_s cn56xxp1; | ||
232 | }; | ||
233 | |||
234 | union cvmx_mixx_remcnt { | ||
235 | uint64_t u64; | ||
236 | struct cvmx_mixx_remcnt_s { | ||
237 | uint64_t reserved_52_63:12; | ||
238 | uint64_t iremcnt:20; | ||
239 | uint64_t reserved_20_31:12; | ||
240 | uint64_t oremcnt:20; | ||
241 | } s; | ||
242 | struct cvmx_mixx_remcnt_s cn52xx; | ||
243 | struct cvmx_mixx_remcnt_s cn52xxp1; | ||
244 | struct cvmx_mixx_remcnt_s cn56xx; | ||
245 | struct cvmx_mixx_remcnt_s cn56xxp1; | ||
246 | }; | ||
247 | |||
248 | #endif | ||
diff --git a/arch/mips/include/asm/octeon/cvmx-smix-defs.h b/arch/mips/include/asm/octeon/cvmx-smix-defs.h new file mode 100644 index 000000000000..9ae45fcbe3e3 --- /dev/null +++ b/arch/mips/include/asm/octeon/cvmx-smix-defs.h | |||
@@ -0,0 +1,178 @@ | |||
1 | /***********************license start*************** | ||
2 | * Author: Cavium Networks | ||
3 | * | ||
4 | * Contact: support@caviumnetworks.com | ||
5 | * This file is part of the OCTEON SDK | ||
6 | * | ||
7 | * Copyright (c) 2003-2008 Cavium Networks | ||
8 | * | ||
9 | * This file is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License, Version 2, as | ||
11 | * published by the Free Software Foundation. | ||
12 | * | ||
13 | * This file is distributed in the hope that it will be useful, but | ||
14 | * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty | ||
15 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or | ||
16 | * NONINFRINGEMENT. See the GNU General Public License for more | ||
17 | * details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this file; if not, write to the Free Software | ||
21 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
22 | * or visit http://www.gnu.org/licenses/. | ||
23 | * | ||
24 | * This file may also be available under a different license from Cavium. | ||
25 | * Contact Cavium Networks for more information | ||
26 | ***********************license end**************************************/ | ||
27 | |||
28 | #ifndef __CVMX_SMIX_DEFS_H__ | ||
29 | #define __CVMX_SMIX_DEFS_H__ | ||
30 | |||
31 | #define CVMX_SMIX_CLK(offset) \ | ||
32 | CVMX_ADD_IO_SEG(0x0001180000001818ull + (((offset) & 1) * 256)) | ||
33 | #define CVMX_SMIX_CMD(offset) \ | ||
34 | CVMX_ADD_IO_SEG(0x0001180000001800ull + (((offset) & 1) * 256)) | ||
35 | #define CVMX_SMIX_EN(offset) \ | ||
36 | CVMX_ADD_IO_SEG(0x0001180000001820ull + (((offset) & 1) * 256)) | ||
37 | #define CVMX_SMIX_RD_DAT(offset) \ | ||
38 | CVMX_ADD_IO_SEG(0x0001180000001810ull + (((offset) & 1) * 256)) | ||
39 | #define CVMX_SMIX_WR_DAT(offset) \ | ||
40 | CVMX_ADD_IO_SEG(0x0001180000001808ull + (((offset) & 1) * 256)) | ||
41 | |||
42 | union cvmx_smix_clk { | ||
43 | uint64_t u64; | ||
44 | struct cvmx_smix_clk_s { | ||
45 | uint64_t reserved_25_63:39; | ||
46 | uint64_t mode:1; | ||
47 | uint64_t reserved_21_23:3; | ||
48 | uint64_t sample_hi:5; | ||
49 | uint64_t sample_mode:1; | ||
50 | uint64_t reserved_14_14:1; | ||
51 | uint64_t clk_idle:1; | ||
52 | uint64_t preamble:1; | ||
53 | uint64_t sample:4; | ||
54 | uint64_t phase:8; | ||
55 | } s; | ||
56 | struct cvmx_smix_clk_cn30xx { | ||
57 | uint64_t reserved_21_63:43; | ||
58 | uint64_t sample_hi:5; | ||
59 | uint64_t reserved_14_15:2; | ||
60 | uint64_t clk_idle:1; | ||
61 | uint64_t preamble:1; | ||
62 | uint64_t sample:4; | ||
63 | uint64_t phase:8; | ||
64 | } cn30xx; | ||
65 | struct cvmx_smix_clk_cn30xx cn31xx; | ||
66 | struct cvmx_smix_clk_cn30xx cn38xx; | ||
67 | struct cvmx_smix_clk_cn30xx cn38xxp2; | ||
68 | struct cvmx_smix_clk_cn50xx { | ||
69 | uint64_t reserved_25_63:39; | ||
70 | uint64_t mode:1; | ||
71 | uint64_t reserved_21_23:3; | ||
72 | uint64_t sample_hi:5; | ||
73 | uint64_t reserved_14_15:2; | ||
74 | uint64_t clk_idle:1; | ||
75 | uint64_t preamble:1; | ||
76 | uint64_t sample:4; | ||
77 | uint64_t phase:8; | ||
78 | } cn50xx; | ||
79 | struct cvmx_smix_clk_s cn52xx; | ||
80 | struct cvmx_smix_clk_cn50xx cn52xxp1; | ||
81 | struct cvmx_smix_clk_s cn56xx; | ||
82 | struct cvmx_smix_clk_cn50xx cn56xxp1; | ||
83 | struct cvmx_smix_clk_cn30xx cn58xx; | ||
84 | struct cvmx_smix_clk_cn30xx cn58xxp1; | ||
85 | }; | ||
86 | |||
87 | union cvmx_smix_cmd { | ||
88 | uint64_t u64; | ||
89 | struct cvmx_smix_cmd_s { | ||
90 | uint64_t reserved_18_63:46; | ||
91 | uint64_t phy_op:2; | ||
92 | uint64_t reserved_13_15:3; | ||
93 | uint64_t phy_adr:5; | ||
94 | uint64_t reserved_5_7:3; | ||
95 | uint64_t reg_adr:5; | ||
96 | } s; | ||
97 | struct cvmx_smix_cmd_cn30xx { | ||
98 | uint64_t reserved_17_63:47; | ||
99 | uint64_t phy_op:1; | ||
100 | uint64_t reserved_13_15:3; | ||
101 | uint64_t phy_adr:5; | ||
102 | uint64_t reserved_5_7:3; | ||
103 | uint64_t reg_adr:5; | ||
104 | } cn30xx; | ||
105 | struct cvmx_smix_cmd_cn30xx cn31xx; | ||
106 | struct cvmx_smix_cmd_cn30xx cn38xx; | ||
107 | struct cvmx_smix_cmd_cn30xx cn38xxp2; | ||
108 | struct cvmx_smix_cmd_s cn50xx; | ||
109 | struct cvmx_smix_cmd_s cn52xx; | ||
110 | struct cvmx_smix_cmd_s cn52xxp1; | ||
111 | struct cvmx_smix_cmd_s cn56xx; | ||
112 | struct cvmx_smix_cmd_s cn56xxp1; | ||
113 | struct cvmx_smix_cmd_cn30xx cn58xx; | ||
114 | struct cvmx_smix_cmd_cn30xx cn58xxp1; | ||
115 | }; | ||
116 | |||
117 | union cvmx_smix_en { | ||
118 | uint64_t u64; | ||
119 | struct cvmx_smix_en_s { | ||
120 | uint64_t reserved_1_63:63; | ||
121 | uint64_t en:1; | ||
122 | } s; | ||
123 | struct cvmx_smix_en_s cn30xx; | ||
124 | struct cvmx_smix_en_s cn31xx; | ||
125 | struct cvmx_smix_en_s cn38xx; | ||
126 | struct cvmx_smix_en_s cn38xxp2; | ||
127 | struct cvmx_smix_en_s cn50xx; | ||
128 | struct cvmx_smix_en_s cn52xx; | ||
129 | struct cvmx_smix_en_s cn52xxp1; | ||
130 | struct cvmx_smix_en_s cn56xx; | ||
131 | struct cvmx_smix_en_s cn56xxp1; | ||
132 | struct cvmx_smix_en_s cn58xx; | ||
133 | struct cvmx_smix_en_s cn58xxp1; | ||
134 | }; | ||
135 | |||
136 | union cvmx_smix_rd_dat { | ||
137 | uint64_t u64; | ||
138 | struct cvmx_smix_rd_dat_s { | ||
139 | uint64_t reserved_18_63:46; | ||
140 | uint64_t pending:1; | ||
141 | uint64_t val:1; | ||
142 | uint64_t dat:16; | ||
143 | } s; | ||
144 | struct cvmx_smix_rd_dat_s cn30xx; | ||
145 | struct cvmx_smix_rd_dat_s cn31xx; | ||
146 | struct cvmx_smix_rd_dat_s cn38xx; | ||
147 | struct cvmx_smix_rd_dat_s cn38xxp2; | ||
148 | struct cvmx_smix_rd_dat_s cn50xx; | ||
149 | struct cvmx_smix_rd_dat_s cn52xx; | ||
150 | struct cvmx_smix_rd_dat_s cn52xxp1; | ||
151 | struct cvmx_smix_rd_dat_s cn56xx; | ||
152 | struct cvmx_smix_rd_dat_s cn56xxp1; | ||
153 | struct cvmx_smix_rd_dat_s cn58xx; | ||
154 | struct cvmx_smix_rd_dat_s cn58xxp1; | ||
155 | }; | ||
156 | |||
157 | union cvmx_smix_wr_dat { | ||
158 | uint64_t u64; | ||
159 | struct cvmx_smix_wr_dat_s { | ||
160 | uint64_t reserved_18_63:46; | ||
161 | uint64_t pending:1; | ||
162 | uint64_t val:1; | ||
163 | uint64_t dat:16; | ||
164 | } s; | ||
165 | struct cvmx_smix_wr_dat_s cn30xx; | ||
166 | struct cvmx_smix_wr_dat_s cn31xx; | ||
167 | struct cvmx_smix_wr_dat_s cn38xx; | ||
168 | struct cvmx_smix_wr_dat_s cn38xxp2; | ||
169 | struct cvmx_smix_wr_dat_s cn50xx; | ||
170 | struct cvmx_smix_wr_dat_s cn52xx; | ||
171 | struct cvmx_smix_wr_dat_s cn52xxp1; | ||
172 | struct cvmx_smix_wr_dat_s cn56xx; | ||
173 | struct cvmx_smix_wr_dat_s cn56xxp1; | ||
174 | struct cvmx_smix_wr_dat_s cn58xx; | ||
175 | struct cvmx_smix_wr_dat_s cn58xxp1; | ||
176 | }; | ||
177 | |||
178 | #endif | ||
diff --git a/arch/mips/include/asm/octeon/octeon.h b/arch/mips/include/asm/octeon/octeon.h index cac9b1a206fc..4d0a8c61fc3e 100644 --- a/arch/mips/include/asm/octeon/octeon.h +++ b/arch/mips/include/asm/octeon/octeon.h | |||
@@ -47,6 +47,7 @@ struct octeon_cop2_state; | |||
47 | extern unsigned long octeon_crypto_enable(struct octeon_cop2_state *state); | 47 | extern unsigned long octeon_crypto_enable(struct octeon_cop2_state *state); |
48 | extern void octeon_crypto_disable(struct octeon_cop2_state *state, | 48 | extern void octeon_crypto_disable(struct octeon_cop2_state *state, |
49 | unsigned long flags); | 49 | unsigned long flags); |
50 | extern asmlinkage void octeon_cop2_restore(struct octeon_cop2_state *task); | ||
50 | 51 | ||
51 | extern void octeon_init_cvmcount(void); | 52 | extern void octeon_init_cvmcount(void); |
52 | 53 | ||
diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h index d6eb6134abec..1854336e56a2 100644 --- a/arch/mips/include/asm/pgtable.h +++ b/arch/mips/include/asm/pgtable.h | |||
@@ -390,6 +390,19 @@ static inline int io_remap_pfn_range(struct vm_area_struct *vma, | |||
390 | #include <asm-generic/pgtable.h> | 390 | #include <asm-generic/pgtable.h> |
391 | 391 | ||
392 | /* | 392 | /* |
393 | * uncached accelerated TLB map for video memory access | ||
394 | */ | ||
395 | #ifdef CONFIG_CPU_SUPPORTS_UNCACHED_ACCELERATED | ||
396 | #define __HAVE_PHYS_MEM_ACCESS_PROT | ||
397 | |||
398 | struct file; | ||
399 | pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, | ||
400 | unsigned long size, pgprot_t vma_prot); | ||
401 | int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, | ||
402 | unsigned long size, pgprot_t *vma_prot); | ||
403 | #endif | ||
404 | |||
405 | /* | ||
393 | * We provide our own get_unmapped area to cope with the virtual aliasing | 406 | * We provide our own get_unmapped area to cope with the virtual aliasing |
394 | * constraints placed on us by the cache architecture. | 407 | * constraints placed on us by the cache architecture. |
395 | */ | 408 | */ |
diff --git a/arch/mips/include/asm/sgialib.h b/arch/mips/include/asm/sgialib.h index bfce5c786f1c..63741ca1e422 100644 --- a/arch/mips/include/asm/sgialib.h +++ b/arch/mips/include/asm/sgialib.h | |||
@@ -85,8 +85,7 @@ extern void prom_identify_arch(void); | |||
85 | extern PCHAR ArcGetEnvironmentVariable(PCHAR name); | 85 | extern PCHAR ArcGetEnvironmentVariable(PCHAR name); |
86 | extern LONG ArcSetEnvironmentVariable(PCHAR name, PCHAR value); | 86 | extern LONG ArcSetEnvironmentVariable(PCHAR name, PCHAR value); |
87 | 87 | ||
88 | /* ARCS command line acquisition and parsing. */ | 88 | /* ARCS command line parsing. */ |
89 | extern char *prom_getcmdline(void); | ||
90 | extern void prom_init_cmdline(void); | 89 | extern void prom_init_cmdline(void); |
91 | 90 | ||
92 | /* Acquiring info about the current time, etc. */ | 91 | /* Acquiring info about the current time, etc. */ |
diff --git a/arch/mips/include/asm/stackframe.h b/arch/mips/include/asm/stackframe.h index db0fa7b5aeaf..3b6da3330e32 100644 --- a/arch/mips/include/asm/stackframe.h +++ b/arch/mips/include/asm/stackframe.h | |||
@@ -51,9 +51,6 @@ | |||
51 | LONG_S v1, PT_ACX(sp) | 51 | LONG_S v1, PT_ACX(sp) |
52 | #else | 52 | #else |
53 | mfhi v1 | 53 | mfhi v1 |
54 | LONG_S v1, PT_HI(sp) | ||
55 | mflo v1 | ||
56 | LONG_S v1, PT_LO(sp) | ||
57 | #endif | 54 | #endif |
58 | #ifdef CONFIG_32BIT | 55 | #ifdef CONFIG_32BIT |
59 | LONG_S $8, PT_R8(sp) | 56 | LONG_S $8, PT_R8(sp) |
@@ -62,10 +59,17 @@ | |||
62 | LONG_S $10, PT_R10(sp) | 59 | LONG_S $10, PT_R10(sp) |
63 | LONG_S $11, PT_R11(sp) | 60 | LONG_S $11, PT_R11(sp) |
64 | LONG_S $12, PT_R12(sp) | 61 | LONG_S $12, PT_R12(sp) |
62 | #ifndef CONFIG_CPU_HAS_SMARTMIPS | ||
63 | LONG_S v1, PT_HI(sp) | ||
64 | mflo v1 | ||
65 | #endif | ||
65 | LONG_S $13, PT_R13(sp) | 66 | LONG_S $13, PT_R13(sp) |
66 | LONG_S $14, PT_R14(sp) | 67 | LONG_S $14, PT_R14(sp) |
67 | LONG_S $15, PT_R15(sp) | 68 | LONG_S $15, PT_R15(sp) |
68 | LONG_S $24, PT_R24(sp) | 69 | LONG_S $24, PT_R24(sp) |
70 | #ifndef CONFIG_CPU_HAS_SMARTMIPS | ||
71 | LONG_S v1, PT_LO(sp) | ||
72 | #endif | ||
69 | .endm | 73 | .endm |
70 | 74 | ||
71 | .macro SAVE_STATIC | 75 | .macro SAVE_STATIC |
@@ -83,15 +87,19 @@ | |||
83 | #ifdef CONFIG_SMP | 87 | #ifdef CONFIG_SMP |
84 | #ifdef CONFIG_MIPS_MT_SMTC | 88 | #ifdef CONFIG_MIPS_MT_SMTC |
85 | #define PTEBASE_SHIFT 19 /* TCBIND */ | 89 | #define PTEBASE_SHIFT 19 /* TCBIND */ |
90 | #define CPU_ID_REG CP0_TCBIND | ||
91 | #define CPU_ID_MFC0 mfc0 | ||
92 | #elif defined(CONFIG_MIPS_PGD_C0_CONTEXT) | ||
93 | #define PTEBASE_SHIFT 48 /* XCONTEXT */ | ||
94 | #define CPU_ID_REG CP0_XCONTEXT | ||
95 | #define CPU_ID_MFC0 MFC0 | ||
86 | #else | 96 | #else |
87 | #define PTEBASE_SHIFT 23 /* CONTEXT */ | 97 | #define PTEBASE_SHIFT 23 /* CONTEXT */ |
98 | #define CPU_ID_REG CP0_CONTEXT | ||
99 | #define CPU_ID_MFC0 MFC0 | ||
88 | #endif | 100 | #endif |
89 | .macro get_saved_sp /* SMP variation */ | 101 | .macro get_saved_sp /* SMP variation */ |
90 | #ifdef CONFIG_MIPS_MT_SMTC | 102 | CPU_ID_MFC0 k0, CPU_ID_REG |
91 | mfc0 k0, CP0_TCBIND | ||
92 | #else | ||
93 | MFC0 k0, CP0_CONTEXT | ||
94 | #endif | ||
95 | #if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32) | 103 | #if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32) |
96 | lui k1, %hi(kernelsp) | 104 | lui k1, %hi(kernelsp) |
97 | #else | 105 | #else |
@@ -107,11 +115,7 @@ | |||
107 | .endm | 115 | .endm |
108 | 116 | ||
109 | .macro set_saved_sp stackp temp temp2 | 117 | .macro set_saved_sp stackp temp temp2 |
110 | #ifdef CONFIG_MIPS_MT_SMTC | 118 | CPU_ID_MFC0 \temp, CPU_ID_REG |
111 | mfc0 \temp, CP0_TCBIND | ||
112 | #else | ||
113 | MFC0 \temp, CP0_CONTEXT | ||
114 | #endif | ||
115 | LONG_SRL \temp, PTEBASE_SHIFT | 119 | LONG_SRL \temp, PTEBASE_SHIFT |
116 | LONG_S \stackp, kernelsp(\temp) | 120 | LONG_S \stackp, kernelsp(\temp) |
117 | .endm | 121 | .endm |
@@ -166,7 +170,6 @@ | |||
166 | LONG_S $0, PT_R0(sp) | 170 | LONG_S $0, PT_R0(sp) |
167 | mfc0 v1, CP0_STATUS | 171 | mfc0 v1, CP0_STATUS |
168 | LONG_S $2, PT_R2(sp) | 172 | LONG_S $2, PT_R2(sp) |
169 | LONG_S v1, PT_STATUS(sp) | ||
170 | #ifdef CONFIG_MIPS_MT_SMTC | 173 | #ifdef CONFIG_MIPS_MT_SMTC |
171 | /* | 174 | /* |
172 | * Ideally, these instructions would be shuffled in | 175 | * Ideally, these instructions would be shuffled in |
@@ -178,20 +181,21 @@ | |||
178 | LONG_S v1, PT_TCSTATUS(sp) | 181 | LONG_S v1, PT_TCSTATUS(sp) |
179 | #endif /* CONFIG_MIPS_MT_SMTC */ | 182 | #endif /* CONFIG_MIPS_MT_SMTC */ |
180 | LONG_S $4, PT_R4(sp) | 183 | LONG_S $4, PT_R4(sp) |
181 | mfc0 v1, CP0_CAUSE | ||
182 | LONG_S $5, PT_R5(sp) | 184 | LONG_S $5, PT_R5(sp) |
183 | LONG_S v1, PT_CAUSE(sp) | 185 | LONG_S v1, PT_STATUS(sp) |
186 | mfc0 v1, CP0_CAUSE | ||
184 | LONG_S $6, PT_R6(sp) | 187 | LONG_S $6, PT_R6(sp) |
185 | MFC0 v1, CP0_EPC | ||
186 | LONG_S $7, PT_R7(sp) | 188 | LONG_S $7, PT_R7(sp) |
189 | LONG_S v1, PT_CAUSE(sp) | ||
190 | MFC0 v1, CP0_EPC | ||
187 | #ifdef CONFIG_64BIT | 191 | #ifdef CONFIG_64BIT |
188 | LONG_S $8, PT_R8(sp) | 192 | LONG_S $8, PT_R8(sp) |
189 | LONG_S $9, PT_R9(sp) | 193 | LONG_S $9, PT_R9(sp) |
190 | #endif | 194 | #endif |
191 | LONG_S v1, PT_EPC(sp) | ||
192 | LONG_S $25, PT_R25(sp) | 195 | LONG_S $25, PT_R25(sp) |
193 | LONG_S $28, PT_R28(sp) | 196 | LONG_S $28, PT_R28(sp) |
194 | LONG_S $31, PT_R31(sp) | 197 | LONG_S $31, PT_R31(sp) |
198 | LONG_S v1, PT_EPC(sp) | ||
195 | ori $28, sp, _THREAD_MASK | 199 | ori $28, sp, _THREAD_MASK |
196 | xori $28, _THREAD_MASK | 200 | xori $28, _THREAD_MASK |
197 | #ifdef CONFIG_CPU_CAVIUM_OCTEON | 201 | #ifdef CONFIG_CPU_CAVIUM_OCTEON |