Use the generic GPIO api for bcm947xx and ar7 (for now), thanks to Gabor Juhos
[openwrt/openwrt.git] / target / linux / brcm47xx-2.6 / patches / 100-board_support.patch
1 diff -urN linux.old/arch/mips/Kconfig linux.dev/arch/mips/Kconfig
2 --- linux.old/arch/mips/Kconfig 2007-01-26 00:51:33.000000000 +0100
3 +++ linux.dev/arch/mips/Kconfig 2007-01-26 00:51:18.000000000 +0100
4 @@ -4,6 +4,10 @@
5 # Horrible source of confusion. Die, die, die ...
6 select EMBEDDED
7
8 +config CFE
9 + bool
10 + # Common Firmware Environment
11 +
12 mainmenu "Linux/MIPS Kernel Configuration"
13
14 menu "Machine selection"
15 @@ -222,6 +226,23 @@
16 Members include the Acer PICA, MIPS Magnum 4000, MIPS Millenium and
17 Olivetti M700-10 workstations.
18
19 +config BCM947XX
20 + bool "Support for BCM947xx based boards"
21 + select DMA_NONCOHERENT
22 + select HW_HAS_PCI
23 + select IRQ_CPU
24 + select SYS_HAS_CPU_MIPS32_R1
25 + select SYS_SUPPORTS_32BIT_KERNEL
26 + select SYS_SUPPORTS_LITTLE_ENDIAN
27 + select SSB
28 + select SSB_SERIAL
29 + select SSB_DRIVER_PCICORE
30 + select SSB_PCICORE_HOSTMODE
31 + select CFE
32 + select GENERIC_GPIO
33 + help
34 + Support for BCM947xx based boards
35 +
36 config LASAT
37 bool "LASAT Networks platforms"
38 select DMA_NONCOHERENT
39 diff -urN linux.old/arch/mips/kernel/cpu-probe.c linux.dev/arch/mips/kernel/cpu-probe.c
40 --- linux.old/arch/mips/kernel/cpu-probe.c 2007-01-26 00:51:33.000000000 +0100
41 +++ linux.dev/arch/mips/kernel/cpu-probe.c 2007-01-25 23:34:01.000000000 +0100
42 @@ -723,6 +723,28 @@
43 }
44
45
46 +static inline void cpu_probe_broadcom(struct cpuinfo_mips *c)
47 +{
48 + decode_config1(c);
49 + switch (c->processor_id & 0xff00) {
50 + case PRID_IMP_BCM3302:
51 + c->cputype = CPU_BCM3302;
52 + c->isa_level = MIPS_CPU_ISA_M32R1;
53 + c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
54 + MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER;
55 + break;
56 + case PRID_IMP_BCM4710:
57 + c->cputype = CPU_BCM4710;
58 + c->isa_level = MIPS_CPU_ISA_M32R1;
59 + c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX |
60 + MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER;
61 + break;
62 + default:
63 + c->cputype = CPU_UNKNOWN;
64 + break;
65 + }
66 +}
67 +
68 __init void cpu_probe(void)
69 {
70 struct cpuinfo_mips *c = &current_cpu_data;
71 @@ -745,6 +767,9 @@
72 case PRID_COMP_SIBYTE:
73 cpu_probe_sibyte(c);
74 break;
75 + case PRID_COMP_BROADCOM:
76 + cpu_probe_broadcom(c);
77 + break;
78 case PRID_COMP_SANDCRAFT:
79 cpu_probe_sandcraft(c);
80 break;
81 diff -urN linux.old/arch/mips/kernel/proc.c linux.dev/arch/mips/kernel/proc.c
82 --- linux.old/arch/mips/kernel/proc.c 2007-01-26 00:51:33.000000000 +0100
83 +++ linux.dev/arch/mips/kernel/proc.c 2007-01-25 23:34:01.000000000 +0100
84 @@ -83,6 +83,8 @@
85 [CPU_VR4181] = "NEC VR4181",
86 [CPU_VR4181A] = "NEC VR4181A",
87 [CPU_SR71000] = "Sandcraft SR71000",
88 + [CPU_BCM3302] = "Broadcom BCM3302",
89 + [CPU_BCM4710] = "Broadcom BCM4710",
90 [CPU_PR4450] = "Philips PR4450",
91 };
92
93 diff -urN linux.old/arch/mips/Makefile linux.dev/arch/mips/Makefile
94 --- linux.old/arch/mips/Makefile 2007-01-26 00:51:33.000000000 +0100
95 +++ linux.dev/arch/mips/Makefile 2007-01-25 23:34:01.000000000 +0100
96 @@ -571,6 +571,18 @@
97 load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000
98
99 #
100 +# Broadcom BCM47XX boards
101 +#
102 +core-$(CONFIG_BCM947XX) += arch/mips/bcm947xx/
103 +cflags-$(CONFIG_BCM947XX) += -Iarch/mips/bcm947xx/include -Iinclude/asm-mips/mach-bcm947xx
104 +load-$(CONFIG_BCM947XX) := 0xffffffff80001000
105 +
106 +#
107 +# Common Firmware Environment
108 +#
109 +core-$(CONFIG_CFE) += arch/mips/cfe/
110 +
111 +#
112 # SNI RM200 PCI
113 #
114 core-$(CONFIG_SNI_RM200_PCI) += arch/mips/sni/
115 diff -urN linux.old/arch/mips/mm/tlbex.c linux.dev/arch/mips/mm/tlbex.c
116 --- linux.old/arch/mips/mm/tlbex.c 2007-01-26 00:51:33.000000000 +0100
117 +++ linux.dev/arch/mips/mm/tlbex.c 2007-01-25 23:34:01.000000000 +0100
118 @@ -880,6 +880,8 @@
119 case CPU_4KSC:
120 case CPU_20KC:
121 case CPU_25KF:
122 + case CPU_BCM3302:
123 + case CPU_BCM4710:
124 tlbw(p);
125 break;
126
127 diff -urN linux.old/drivers/Kconfig linux.dev/drivers/Kconfig
128 --- linux.old/drivers/Kconfig 2007-01-26 00:51:33.000000000 +0100
129 +++ linux.dev/drivers/Kconfig 2007-01-25 23:34:01.000000000 +0100
130 @@ -56,6 +56,8 @@
131
132 source "drivers/hwmon/Kconfig"
133
134 +source "drivers/ssb/Kconfig"
135 +
136 source "drivers/mfd/Kconfig"
137
138 source "drivers/media/Kconfig"
139 diff -urN linux.old/drivers/Makefile linux.dev/drivers/Makefile
140 --- linux.old/drivers/Makefile 2007-01-26 00:51:33.000000000 +0100
141 +++ linux.dev/drivers/Makefile 2007-01-25 23:34:01.000000000 +0100
142 @@ -77,3 +77,4 @@
143 obj-$(CONFIG_SUPERH) += sh/
144 obj-$(CONFIG_GENERIC_TIME) += clocksource/
145 obj-$(CONFIG_DMA_ENGINE) += dma/
146 +obj-$(CONFIG_SSB) += ssb/
147 diff -urN linux.old/include/asm-mips/bootinfo.h linux.dev/include/asm-mips/bootinfo.h
148 --- linux.old/include/asm-mips/bootinfo.h 2007-01-26 00:51:33.000000000 +0100
149 +++ linux.dev/include/asm-mips/bootinfo.h 2007-01-25 23:34:01.000000000 +0100
150 @@ -212,6 +212,12 @@
151 #define MACH_GROUP_NEC_EMMA2RH 25 /* NEC EMMA2RH (was 23) */
152 #define MACH_NEC_MARKEINS 0 /* NEC EMMA2RH Mark-eins */
153
154 +/*
155 + * Valid machtype for group Broadcom
156 + */
157 +#define MACH_GROUP_BRCM 23 /* Broadcom */
158 +#define MACH_BCM47XX 1 /* Broadcom BCM47xx */
159 +
160 #define CL_SIZE COMMAND_LINE_SIZE
161
162 const char *get_system_type(void);
163 diff -urN linux.old/include/asm-mips/cpu.h linux.dev/include/asm-mips/cpu.h
164 --- linux.old/include/asm-mips/cpu.h 2007-01-26 00:51:33.000000000 +0100
165 +++ linux.dev/include/asm-mips/cpu.h 2007-01-25 23:34:01.000000000 +0100
166 @@ -104,6 +104,13 @@
167 #define PRID_IMP_SR71000 0x0400
168
169 /*
170 + * These are the PRID's for when 23:16 == PRID_COMP_BROADCOM
171 + */
172 +
173 +#define PRID_IMP_BCM4710 0x4000
174 +#define PRID_IMP_BCM3302 0x9000
175 +
176 +/*
177 * Definitions for 7:0 on legacy processors
178 */
179
180 @@ -200,7 +207,9 @@
181 #define CPU_SB1A 62
182 #define CPU_74K 63
183 #define CPU_R14000 64
184 -#define CPU_LAST 64
185 +#define CPU_BCM3302 65
186 +#define CPU_BCM4710 66
187 +#define CPU_LAST 66
188
189 /*
190 * ISA Level encodings
191 diff -urN linux.old/include/linux/pci_ids.h linux.dev/include/linux/pci_ids.h
192 --- linux.old/include/linux/pci_ids.h 2007-01-26 00:51:33.000000000 +0100
193 +++ linux.dev/include/linux/pci_ids.h 2007-01-25 23:34:01.000000000 +0100
194 @@ -1950,6 +1950,7 @@
195 #define PCI_DEVICE_ID_TIGON3_5906M 0x1713
196 #define PCI_DEVICE_ID_BCM4401 0x4401
197 #define PCI_DEVICE_ID_BCM4401B0 0x4402
198 +#define PCI_DEVICE_ID_BCM4713 0x4713
199
200 #define PCI_VENDOR_ID_TOPIC 0x151f
201 #define PCI_DEVICE_ID_TOPIC_TP560 0x0000
202