[brcm47xx] refresh 2.6.23 patches
[openwrt/svn-archive/archive.git] / target / linux / brcm47xx / patches-2.6.23 / 100-board_support.patch
1 --- a/arch/mips/Kconfig
2 +++ b/arch/mips/Kconfig
3 @@ -4,6 +4,10 @@
4 # Horrible source of confusion. Die, die, die ...
5 select EMBEDDED
6
7 +config CFE
8 + bool
9 + # Common Firmware Environment
10 +
11 mainmenu "Linux/MIPS Kernel Configuration"
12
13 menu "Machine selection"
14 @@ -44,6 +48,23 @@
15 note that a kernel built with this option selected will not be
16 able to run on normal units.
17
18 +config BCM947XX
19 + bool "Support for BCM947xx based boards"
20 + select DMA_NONCOHERENT
21 + select HW_HAS_PCI
22 + select IRQ_CPU
23 + select SYS_HAS_CPU_MIPS32_R1
24 + select SYS_SUPPORTS_32BIT_KERNEL
25 + select SYS_SUPPORTS_LITTLE_ENDIAN
26 + select SSB
27 + select SSB_SERIAL
28 + select SSB_DRIVER_PCICORE
29 + select SSB_PCICORE_HOSTMODE
30 + select CFE
31 + select GENERIC_GPIO
32 + help
33 + Support for BCM947xx based boards
34 +
35 config MIPS_COBALT
36 bool "Cobalt Server"
37 select DMA_NONCOHERENT
38 --- a/arch/mips/kernel/cpu-probe.c
39 +++ b/arch/mips/kernel/cpu-probe.c
40 @@ -793,6 +793,28 @@
41 }
42
43
44 +static inline void cpu_probe_broadcom(struct cpuinfo_mips *c)
45 +{
46 + decode_config1(c);
47 + switch (c->processor_id & 0xff00) {
48 + case PRID_IMP_BCM3302:
49 + c->cputype = CPU_BCM3302;
50 + c->isa_level = MIPS_CPU_ISA_M32R1;
51 + c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
52 + MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER;
53 + break;
54 + case PRID_IMP_BCM4710:
55 + c->cputype = CPU_BCM4710;
56 + c->isa_level = MIPS_CPU_ISA_M32R1;
57 + c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
58 + MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER;
59 + break;
60 + default:
61 + c->cputype = CPU_UNKNOWN;
62 + break;
63 + }
64 +}
65 +
66 __init void cpu_probe(void)
67 {
68 struct cpuinfo_mips *c = &current_cpu_data;
69 @@ -815,6 +837,9 @@
70 case PRID_COMP_SIBYTE:
71 cpu_probe_sibyte(c);
72 break;
73 + case PRID_COMP_BROADCOM:
74 + cpu_probe_broadcom(c);
75 + break;
76 case PRID_COMP_SANDCRAFT:
77 cpu_probe_sandcraft(c);
78 break;
79 --- a/arch/mips/kernel/proc.c
80 +++ b/arch/mips/kernel/proc.c
81 @@ -82,6 +82,8 @@
82 [CPU_VR4181] = "NEC VR4181",
83 [CPU_VR4181A] = "NEC VR4181A",
84 [CPU_SR71000] = "Sandcraft SR71000",
85 + [CPU_BCM3302] = "Broadcom BCM3302",
86 + [CPU_BCM4710] = "Broadcom BCM4710",
87 [CPU_PR4450] = "Philips PR4450",
88 [CPU_LOONGSON2] = "ICT Loongson-2",
89 };
90 --- a/arch/mips/Makefile
91 +++ b/arch/mips/Makefile
92 @@ -533,6 +533,18 @@
93 load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000
94
95 #
96 +# Broadcom BCM47XX boards
97 +#
98 +core-$(CONFIG_BCM947XX) += arch/mips/bcm947xx/
99 +cflags-$(CONFIG_BCM947XX) += -Iarch/mips/bcm947xx/include -Iinclude/asm-mips/mach-bcm947xx
100 +load-$(CONFIG_BCM947XX) := 0xffffffff80001000
101 +
102 +#
103 +# Common Firmware Environment
104 +#
105 +core-$(CONFIG_CFE) += arch/mips/cfe/
106 +
107 +#
108 # SNI RM
109 #
110 core-$(CONFIG_SNI_RM) += arch/mips/sni/
111 --- a/arch/mips/mm/tlbex.c
112 +++ b/arch/mips/mm/tlbex.c
113 @@ -895,6 +895,8 @@
114 case CPU_AU1550:
115 case CPU_AU1200:
116 case CPU_PR4450:
117 + case CPU_BCM3302:
118 + case CPU_BCM4710:
119 i_nop(p);
120 tlbw(p);
121 break;
122 --- a/drivers/Kconfig
123 +++ b/drivers/Kconfig
124 @@ -60,6 +60,8 @@
125
126 source "drivers/hwmon/Kconfig"
127
128 +source "drivers/ssb/Kconfig"
129 +
130 source "drivers/mfd/Kconfig"
131
132 source "drivers/media/Kconfig"
133 --- a/include/asm-mips/bootinfo.h
134 +++ b/include/asm-mips/bootinfo.h
135 @@ -208,6 +208,12 @@
136 #define MACH_GROUP_WINDRIVER 28 /* Windriver boards */
137 #define MACH_WRPPMC 1
138
139 +/*
140 + * Valid machtype for group Broadcom
141 + */
142 +#define MACH_GROUP_BRCM 23 /* Broadcom */
143 +#define MACH_BCM47XX 1 /* Broadcom BCM47xx */
144 +
145 #define CL_SIZE COMMAND_LINE_SIZE
146
147 const char *get_system_type(void);
148 --- a/include/asm-mips/cpu.h
149 +++ b/include/asm-mips/cpu.h
150 @@ -106,6 +106,13 @@
151 #define PRID_IMP_SR71000 0x0400
152
153 /*
154 + * These are the PRID's for when 23:16 == PRID_COMP_BROADCOM
155 + */
156 +
157 +#define PRID_IMP_BCM4710 0x4000
158 +#define PRID_IMP_BCM3302 0x9000
159 +
160 +/*
161 * Definitions for 7:0 on legacy processors
162 */
163
164 @@ -217,8 +224,10 @@
165 #define CPU_R14000 64
166 #define CPU_LOONGSON1 65
167 #define CPU_LOONGSON2 66
168 +#define CPU_BCM3302 67
169 +#define CPU_BCM4710 68
170
171 -#define CPU_LAST 66
172 +#define CPU_LAST 68
173
174 /*
175 * ISA Level encodings
176 --- a/drivers/Makefile
177 +++ b/drivers/Makefile
178 @@ -89,3 +89,5 @@
179 obj-$(CONFIG_HID) += hid/
180 obj-$(CONFIG_PPC_PS3) += ps3/
181 obj-$(CONFIG_OF) += of/
182 +obj-$(CONFIG_SSB) += ssb/
183 +
184 --- a/include/linux/pci_ids.h
185 +++ b/include/linux/pci_ids.h
186 @@ -1980,6 +1980,7 @@
187 #define PCI_DEVICE_ID_TIGON3_5906M 0x1713
188 #define PCI_DEVICE_ID_BCM4401 0x4401
189 #define PCI_DEVICE_ID_BCM4401B0 0x4402
190 +#define PCI_DEVICE_ID_BCM4713 0x4713
191
192 #define PCI_VENDOR_ID_TOPIC 0x151f
193 #define PCI_DEVICE_ID_TOPIC_TP560 0x0000