add initial 2.6.28 support for brcm47xx target
[openwrt.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