bcm47xx compile fix for .21, thanks to noz
[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 @@ -240,6 +240,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 @@ -711,6 +711,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 @@ -733,6 +755,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 @@ -576,6 +576,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 RM
113  #
114  core-$(CONFIG_SNI_RM)          += 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 @@ -892,6 +892,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 @@ -81,3 +81,4 @@
143  obj-$(CONFIG_DMA_ENGINE)       += dma/
144  obj-$(CONFIG_HID)              += hid/
145  obj-$(CONFIG_PPC_PS3)          += ps3/
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 @@ -213,6 +213,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 @@ -1981,6 +1981,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