summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm63xx-2.6/patches/000-arch_mips.patch
blob: bcb3469769fb014bee88b8bd8c1ba52cb6252f8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
diff -Naurp -x brcm-boards -x pci linux-2.6.16.7-generic-patched/arch/mips/Kconfig linux-2.6.16.7-patched/arch/mips/Kconfig
--- linux-2.6.16.7-generic-patched/arch/mips/Kconfig	2006-04-17 23:53:25.000000000 +0200
+++ linux-2.6.16.7-patched/arch/mips/Kconfig	2006-07-05 15:21:58.000000000 +0200
@@ -10,7 +10,16 @@ menu "Machine selection"
 
 choice
 	prompt "System type"
-	default SGI_IP22
+	default MIPS_BRCM
+
+config MIPS_BRCM
+	bool "Support for the Broadcom boards"
+	select SYS_SUPPORTS_32BIT_KERNEL
+	select SYS_SUPPORTS_BIG_ENDIAN
+	select SYS_HAS_CPU_MIPS32_R1
+	select IRQ_CPU
+	help
+	 This is a fmaily of boards based on the Broadcom MIPS32
 
 config MIPS_MTX1
 	bool "Support for 4G Systems MTX-1 board"
@@ -777,6 +786,7 @@ config TOSHIBA_RBTX4938
 
 endchoice
 
+source "arch/mips/brcm-boards/bcm963xx/Kconfig"
 source "arch/mips/ddb5xxx/Kconfig"
 source "arch/mips/gt64120/ev64120/Kconfig"
 source "arch/mips/jazz/Kconfig"
@@ -1046,7 +1056,7 @@ menu "CPU selection"
 
 choice
 	prompt "CPU type"
-	default CPU_R4X00
+	default CPU_MIPS32_R1
 
 config CPU_MIPS32_R1
 	bool "MIPS32 Release 1"
diff -Naurp -x brcm-boards -x pci linux-2.6.16.7-generic-patched/arch/mips/Makefile linux-2.6.16.7-patched/arch/mips/Makefile
--- linux-2.6.16.7-generic-patched/arch/mips/Makefile	2006-04-17 23:53:25.000000000 +0200
+++ linux-2.6.16.7-patched/arch/mips/Makefile	2006-07-05 15:21:58.000000000 +0200
@@ -279,6 +279,20 @@ libs-$(CONFIG_SIBYTE_CFE)	+= arch/mips/s
 #
 
 #
+# Broadcom board
+#
+core-$(CONFIG_MIPS_BRCM)	+= arch/mips/brcm-boards/generic/ arch/mips/brcm-boards/bcm963xx/
+core-$(CONFIG_MIPS_BRCM)	+= bcmdrivers/opensource/char/serial/impl1/
+#core-$(CONFIG_MIPS_BRCM)	+= bcmdrivers/opensource/char/board/bcm963xx/impl1/
+#core-$(CONFIG_MIPS_BRCM)	+= boardparms/bcm963xx/
+cflags-$(CONFIG_MIPS_BRCM)     	+= -Iinclude/asm-mips/mach-bcm963xx
+cflags-$(CONFIG_MIPS_BRCM)     	+= -Iarch/mips/brcm-boards/generic/include
+cflags-$(CONFIG_MIPS_BRCM)     	+= -Ibcmdrivers/opensource/include/bcm963xx
+cflags-$(CONFIG_MIPS_BRCM)     	+= -Iboardparms/bcm963xx
+load-$(CONFIG_MIPS_BRCM)	+= 0xffffffff80010000
+
+
+#
 # Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
 #
 core-$(CONFIG_MACH_JAZZ)	+= arch/mips/jazz/
diff -Naurp -x brcm-boards -x pci linux-2.6.16.7-generic-patched/arch/mips/kernel/cpu-probe.c linux-2.6.16.7-patched/arch/mips/kernel/cpu-probe.c
--- linux-2.6.16.7-generic-patched/arch/mips/kernel/cpu-probe.c	2006-04-17 23:53:25.000000000 +0200
+++ linux-2.6.16.7-patched/arch/mips/kernel/cpu-probe.c	2006-07-05 15:21:58.000000000 +0200
@@ -558,6 +558,25 @@ static inline void decode_configs(struct
 		return;
 }
 
+static inline void cpu_probe_broadcom(struct cpuinfo_mips *c)
+{
+	decode_configs(c);
+	switch (c->processor_id & 0xff00) {
+	case PRID_IMP_BCM6338:          
+		c->cputype = CPU_BCM6338;
+		break;
+	case PRID_IMP_BCM6345:
+		c->cputype = CPU_BCM6345;
+		break;
+	case PRID_IMP_BCM6348:
+		c->cputype = CPU_BCM6348;
+		break;
+	default:
+		c->cputype = CPU_UNKNOWN;
+		break;
+	}
+}
+
 static inline void cpu_probe_mips(struct cpuinfo_mips *c)
 {
 	decode_configs(c);
@@ -691,6 +710,9 @@ __init void cpu_probe(void)
 	case PRID_COMP_LEGACY:
 		cpu_probe_legacy(c);
 		break;
+	case PRID_COMP_BROADCOM:
+		cpu_probe_broadcom(c);
+		break;
 	case PRID_COMP_MIPS:
 		cpu_probe_mips(c);
 		break;
diff -Naurp -x brcm-boards -x pci linux-2.6.16.7-generic-patched/arch/mips/kernel/proc.c linux-2.6.16.7-patched/arch/mips/kernel/proc.c
--- linux-2.6.16.7-generic-patched/arch/mips/kernel/proc.c	2006-04-17 23:53:25.000000000 +0200
+++ linux-2.6.16.7-patched/arch/mips/kernel/proc.c	2006-07-05 15:21:58.000000000 +0200
@@ -81,6 +81,9 @@ static const char *cpu_name[] = {
 	[CPU_VR4133]	= "NEC VR4133",
 	[CPU_VR4181]	= "NEC VR4181",
 	[CPU_VR4181A]	= "NEC VR4181A",
+	[CPU_BCM6338]   = "BCM6338",
+	[CPU_BCM6345]   = "BCM6345",
+	[CPU_BCM6348]   = "BCM6348",
 	[CPU_SR71000]	= "Sandcraft SR71000",
 	[CPU_PR4450]	= "Philips PR4450",
 };
diff -Naurp -x brcm-boards -x pci linux-2.6.16.7-generic-patched/arch/mips/mm/c-r4k.c linux-2.6.16.7-patched/arch/mips/mm/c-r4k.c
--- linux-2.6.16.7-generic-patched/arch/mips/mm/c-r4k.c	2006-04-17 23:53:25.000000000 +0200
+++ linux-2.6.16.7-patched/arch/mips/mm/c-r4k.c	2006-07-05 15:21:58.000000000 +0200
@@ -889,6 +889,12 @@ static void __init probe_pcache(void)
 		if (!(config & MIPS_CONF_M))
 			panic("Don't know how to probe P-caches on this cpu.");
 
+        	if (c->cputype == CPU_BCM6338 || c->cputype == CPU_BCM6345 || c->cputype == CPU_BCM6348){
+			printk("brcm mips: enabling icache and dcache...\n");
+        	        /* Enable caches */
+        	        write_c0_diag(read_c0_diag() | 0xC0000000);
+        	}
+
 		/*
 		 * So we seem to be a MIPS32 or MIPS64 CPU
 		 * So let's probe the I-cache ...
diff -Naurp -x brcm-boards -x pci linux-2.6.16.7-generic-patched/arch/mips/mm/tlbex.c linux-2.6.16.7-patched/arch/mips/mm/tlbex.c
--- linux-2.6.16.7-generic-patched/arch/mips/mm/tlbex.c	2006-04-17 23:53:25.000000000 +0200
+++ linux-2.6.16.7-patched/arch/mips/mm/tlbex.c	2006-07-05 15:21:58.000000000 +0200
@@ -858,6 +858,9 @@ static __init void build_tlb_write_entry
 	case CPU_4KSC:
 	case CPU_20KC:
 	case CPU_25KF:
+	case CPU_BCM6338:
+	case CPU_BCM6345:
+	case CPU_BCM6348:
 		tlbw(p);
 		break;