aboutsummaryrefslogtreecommitdiffstats
path: root/linux/openslug-kernel-2.6.9/nslu2_2.6.9.patch
blob: 9f569baabf4d5e30243f6f159622072381752ef9 (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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
diff -purN linux-2.6.9/arch/arm/mach-ixp4xx/Kconfig linux-2.6.9-new/arch/arm/mach-ixp4xx/Kconfig
--- linux-2.6.9/arch/arm/mach-ixp4xx/Kconfig	2004-06-15 22:19:01.000000000 -0700
+++ linux-2.6.9-new/arch/arm/mach-ixp4xx/Kconfig	2004-09-14 03:59:28.000000000 -0700
@@ -29,6 +29,13 @@ config ARCH_IXDP425
 	  IXDP425 Development Platform (Also known as Richfield).  
 	  For more information on this platform, see Documentation/arm/IXP4xx.
 
+config ARCH_NSLU2
+	bool "NSLU2"
+	help
+	  Say 'Y' here if you want your kernel to support Linksys's 
+	  NSLU2 NAS device. For more information on this platform, 
+	  see http://www.nslu2-linux.org
+
 #
 # IXCDP1100 is the exact same HW as IXDP425, but with a different machine 
 # number from the bootloader due to marketing monkeys, so we just enable it
--- linux-2.6.9.orig/arch/arm/mach-ixp4xx/Makefile	2004-06-16 01:18:59.000000000 -0400
+++ linux-2.6.9/arch/arm/mach-ixp4xx/Makefile	2004-09-24 01:35:22.051627330 -0400
@@ -4,7 +4,6 @@
 
 obj-y	+= common.o common-pci.o 
 
-obj-$(CONFIG_ARCH_IXDP4XX)	+= ixdp425-pci.o ixdp425-setup.o
 obj-$(CONFIG_ARCH_ADI_COYOTE)	+= coyote-pci.o coyote-setup.o
 obj-$(CONFIG_ARCH_PRPMC1100)	+= prpmc1100-pci.o prpmc1100-setup.o
-
+obj-$(CONFIG_ARCH_NSLU2)	+= nslu2-pci.o nslu2-setup.o nslu2-part.o nslu2-io.o
diff -purN linux-2.6.9/drivers/mtd/maps/ixp4xx.c linux-2.6.9-new/drivers/mtd/maps/ixp4xx.c
--- linux-2.6.9/drivers/mtd/maps/ixp4xx.c	2004-06-15 22:18:38.000000000 -0700
+++ linux-2.6.9-new/drivers/mtd/maps/ixp4xx.c	2004-09-14 03:59:28.000000000 -0700
@@ -82,7 +82,11 @@ struct ixp4xx_flash_info {
 	struct resource *res;
 };
 
+#ifdef CONFIG_ARCH_NSLU2
+static const char *probes[] = { "cmdlinepart", "RedBoot", "NSLU2", NULL };
+#else
 static const char *probes[] = { "RedBoot", "cmdlinepart", NULL };
+#endif
 
 static int
 ixp4xx_flash_remove(struct device *_dev)
diff -purN linux-2.6.9/include/asm-arm/arch-ixp4xx/hardware.h linux-2.6.9-new/include/asm-arm/arch-ixp4xx/hardware.h
--- linux-2.6.9/include/asm-arm/arch-ixp4xx/hardware.h	2004-06-15 22:19:02.000000000 -0700
+++ linux-2.6.9-new/include/asm-arm/arch-ixp4xx/hardware.h	2004-09-14 03:59:28.000000000 -0700
@@ -37,5 +37,6 @@
 #include "ixdp425.h"
 #include "coyote.h"
 #include "prpmc1100.h"
+#include "nslu2.h"
 
 #endif  /* _ASM_ARCH_HARDWARE_H */
diff -purN linux-2.6.9/include/asm-arm/arch-ixp4xx/irqs.h linux-2.6.9-new/include/asm-arm/arch-ixp4xx/irqs.h
--- linux-2.6.9/include/asm-arm/arch-ixp4xx/irqs.h	2004-06-15 22:19:37.000000000 -0700
+++ linux-2.6.9-new/include/asm-arm/arch-ixp4xx/irqs.h	2004-09-14 03:59:28.000000000 -0700
@@ -75,4 +75,12 @@
 #define	IRQ_COYOTE_PCI_SLOT1	IRQ_IXP4XX_GPIO11
 #define	IRQ_COYOTE_IDE		IRQ_IXP4XX_GPIO5
 
+/*
+ * NSLU2 board IRQs
+ */
+#define	IRQ_NSLU2_PCI_INTA	IRQ_IXP4XX_GPIO11
+#define	IRQ_NSLU2_PCI_INTB	IRQ_IXP4XX_GPIO10
+#define	IRQ_NSLU2_PCI_INTC	IRQ_IXP4XX_GPIO9
+
+
 #endif
diff -Nru linux-2.6.9/arch/arm/mach-ixp4xx/common-pci.c linux-2.6.9/arch/arm/mach-ixp4xx/common-pci.c
--- linux-2.6.9/arch/arm/mach-ixp4xx/common-pci.c	2004-10-08 13:59:23 -07:00
+++ linux-2.6.9/arch/arm/mach-ixp4xx/common-pci.c	2004-10-08 13:59:23 -07:00
@@ -239,9 +239,10 @@
 	return 0xffffffff;
 }
 
-static int read_config(u8 bus_num, u16 devfn, int where, int size, u32 *value)
+static int ixp4xx_pci_read_config(struct pci_bus *bus, u16 devfn, int where, int size, u32 *value)
 {
 	u32 n, byte_enables, addr, data;
+	u8 bus_num = bus->number;
 
 	pr_debug("read_config from %d size %d dev %d:%d:%d\n", where, size,
 		bus_num, PCI_SLOT(devfn), PCI_FUNC(devfn));
@@ -261,9 +262,10 @@
 	return PCIBIOS_SUCCESSFUL;
 }
 
-static int write_config(u8 bus_num, u16 devfn, int where, int size, u32 value)
+static int ixp4xx_pci_write_config(struct pci_bus *bus,  u16 devfn, int where, int size, u32 value)
 {
 	u32 n, byte_enables, addr, data;
+	u8 bus_num = bus->number;
 
 	pr_debug("write_config_byte %#x to %d size %d dev %d:%d:%d\n", value, where,
 		size, bus_num, PCI_SLOT(devfn), PCI_FUNC(devfn));
@@ -281,30 +283,10 @@
 	return PCIBIOS_SUCCESSFUL;
 }
 
-/*
- *	Generalized PCI config access functions.
- */
-static int ixp4xx_read_config(struct pci_bus *bus, unsigned int devfn,
-	int where, int size, u32 *value)
-{
-	if (bus->number && !PCI_SLOT(devfn))
-		return local_read_config(where, size, value);
-	return read_config(bus->number, devfn, where, size, value);
-}
-
-static int ixp4xx_write_config(struct pci_bus *bus, unsigned int devfn,
-	int where, int size, u32 value)
-{
-	if (bus->number && !PCI_SLOT(devfn))
-		return local_write_config(where, size, value);
-	return write_config(bus->number, devfn, where, size, value);
-}
-
 struct pci_ops ixp4xx_ops = {
-	.read =  ixp4xx_read_config,
-	.write = ixp4xx_write_config,
+	.read =  ixp4xx_pci_read_config,
+	.write = ixp4xx_pci_write_config,
 };
-
 
 /*
  * PCI abort handler
diff -Nru linux-2.6.9/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h linux-2.6.9/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h
--- linux-2.6.9/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h	2004-10-08 13:59:23 -07:00
+++ linux-2.6.9/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h	2004-10-08 13:59:23 -07:00
@@ -55,7 +55,7 @@
  * PCI Config registers
  */
 #define IXP4XX_PCI_CFG_BASE_PHYS	(0xC0000000)
-#define	IXP4XX_PCI_CFG_BASE_VIRT	(0xFFBFD000)
+#define	IXP4XX_PCI_CFG_BASE_VIRT	(0xFFBFE000)
 #define IXP4XX_PCI_CFG_REGION_SIZE	(0x00001000)
 
 /*
--- linux-2.6.9/drivers/i2c/chips/Kconfig.orig	2004-06-16 01:19:35.000000000 -0400
+++ linux-2.6.9/drivers/i2c/chips/Kconfig	2004-09-22 18:09:48.454794342 -0400
@@ -240,6 +240,16 @@
 	  This driver can also be built as a module.  If so, the module
 	  will be called pcf8591.
 
+config SENSORS_X1205
+ 	tristate "Xicor X1205 RTC chip"
+ 	depends on I2C && EXPERIMENTAL
+ 	select I2C_SENSOR
+ 	help
+ 	  If you say yes here you get support for the Xicor x1205 RTC chip.
+ 
+ 	  This driver can also be built as a module.  If so, the module
+ 	  will be called x1205-rtc
+
 config SENSORS_RTC8564
 	tristate "Epson 8564 RTC chip"
 	depends on I2C && EXPERIMENTA
--- linux-2.6.9/drivers/i2c/chips/Makefile.old	2004-06-16 01:20:26.000000000 -0400
+++ linux-2.6.9/drivers/i2c/chips/Makefile	2004-09-22 16:48:06.435580334 -0400
@@ -25,6 +25,7 @@
 obj-$(CONFIG_SENSORS_RTC8564)	+= rtc8564.o
 obj-$(CONFIG_SENSORS_VIA686A)	+= via686a.o
 obj-$(CONFIG_SENSORS_W83L785TS)	+= w83l785ts.o
+obj-$(CONFIG_SENSORS_X1205)     += x1205-rtc.o
 obj-$(CONFIG_ISP1301_OMAP)	+= isp1301_omap.o
 
 ifeq ($(CONFIG_I2C_DEBUG_CHIP),y)

--- linux-2.6.9/arch/arm/mach-ixp4xx/common.c.orig	2004-10-18 17:54:25.000000000 -0400
+++ linux-2.6.9/arch/arm/mach-ixp4xx/common.c	2004-10-21 14:22:40.766271419 -0400
@@ -227,10 +227,10 @@
 	/*
 	 * Catch up with the real idea of time
 	 */
-	do {	
+	while((*IXP4XX_OSTS - last_jiffy_time) > LATCH) {
 		timer_tick(regs);
 		last_jiffy_time += LATCH;
-	} while((*IXP4XX_OSTS - last_jiffy_time) > LATCH);
+	};
 
 	return IRQ_HANDLED;
 }
--- linux-2.6.9/include/linux/i2c-id.h.orig	2004-10-18 17:53:10.000000000 -0400
+++ linux-2.6.9/include/linux/i2c-id.h	2004-10-21 14:14:17.115262597 -0400
@@ -109,7 +109,7 @@
 #define I2C_DRIVERID_OVCAMCHIP	61	/* OmniVision CMOS image sens.	*/
 #define I2C_DRIVERID_TDA7313	62	/* TDA7313 audio processor	*/
 #define I2C_DRIVERID_MAX6900	63	/* MAX6900 real-time clock	*/
-
+#define I2C_DRIVERID_X1205	0xF0
 
 #define I2C_DRIVERID_EXP0	0xF0	/* experimental use id's	*/
 #define I2C_DRIVERID_EXP1	0xF1
diff -Nru a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
--- a/arch/arm/kernel/entry-header.S	2004-10-08 13:59:23 -07:00
+++ b/arch/arm/kernel/entry-header.S	2004-10-08 13:59:23 -07:00
@@ -4,8 +4,9 @@
 #include <asm/assembler.h>
 #include <asm/constants.h>
 #include <asm/errno.h>
 #include <asm/hardware.h>
 #include <asm/arch/irqs.h>
+#include <asm/arch/entry-macro.S>
 
 #ifndef MODE_SVC
 #define MODE_SVC 0x13
diff -Nru a/include/asm-arm/arch-ixp4xx/entry-macro.S b/include/asm-arm/arch-ixp4xx/entry-macro.S
--- /dev/null	Wed Dec 31 16:00:00 1969
+++ b/include/asm-arm/arch-ixp4xx/entry-macro.S	Thu Sep 16 13:15:46 2004
@@ -0,0 +1,25 @@
+/*
+ * include/asm-arm/arch-ixp4xx/entry-macro.S
+ *
+ * Low-level IRQ helper macros for IXP4xx-based platforms
+ * 
+ * This file is licensed under  the terms of the GNU General Public 
+ * License version 2. This program is licensed "as is" without any 
+ * warranty of any kind, whether express or implied.
+ */
+
+		.macro	disable_fiq
+		.endm
+
+		.macro	get_irqnr_and_base, irqnr, irqstat, base, tmp
+
+		ldr	\irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP_OFFSET)
+		ldr	\irqstat, [\irqstat]		@ get interrupts
+		cmp	\irqstat, #0
+		beq	1001f
+		clz     \irqnr, \irqstat
+		mov     \base, #31
+		subs    \irqnr, \base, \irqnr
+		
+1001:
+		.endm

diff -purN linux-2.6.9.orig/arch/arm/boot/compressed/head.S linux-2.6.9/arch/arm/boot/compressed/head.S
--- linux-2.6.9.orig/arch/arm/boot/compressed/head.S	2004-10-18 17:55:07.000000000 -0400
+++ linux-2.6.9/arch/arm/boot/compressed/head.S	2004-10-31 03:05:25.011878371 -0500
@@ -79,6 +79,7 @@
 		.endm
 		.macro	writeb, rb
 		str	\rb, [r3, #0]
+		.endm
 #elif defined(CONFIG_ARCH_IXP2000)
 		.macro	loadsp, rb
 		mov	\rb, #0xc0000000
diff -purN linux-2.6.9.orig/arch/arm/boot/compressed/head-xscale.S linux-2.6.9/arch/arm/boot/compressed/head-xscale.S
--- linux-2.6.9.orig/arch/arm/boot/compressed/head-xscale.S	2004-10-18 17:53:45.000000000 -0400
+++ linux-2.6.9/arch/arm/boot/compressed/head-xscale.S	2004-10-31 03:05:25.013878040 -0500
@@ -56,3 +56,7 @@ __XScale_start:
 		mov	r7, #MACH_TYPE_COTULLA_IDP
 #endif
 
+#ifdef CONFIG_ARCH_NSLU2
+		mov	r7, #(MACH_TYPE_NSLU2 & 0xff)
+		orr	r7, r7, #(MACH_TYPE_NSLU2 & 0xff00)
+#endif
--- linux-2.6.9.orig/arch/arm/tools/mach-types	2004-10-18 17:54:08.000000000 -0400
+++ linux-2.6.9/arch/arm/tools/mach-types	2004-10-31 03:05:25.006879199 -0500
@@ -6,7 +6,7 @@
 # To add an entry into this database, please see Documentation/arm/README,
 # or contact rmk@arm.linux.org.uk
 #
-# Last update: Thu Sep 30 15:23:21 2004
+# Last update: Mon Oct 25 04:14:24 2004
 #
 # machine_is_xxx	CONFIG_xxxx		MACH_TYPE_xxx		number
 #
@@ -595,8 +595,8 @@ pxa_dnp2110		MACH_PXA_DNP2110	PXA_DNP211
 xaeniax			MACH_XAENIAX		XAENIAX			585
 somn4250		MACH_SOMN4250		SOMN4250		586
 pleb2			MACH_PLEB2		PLEB2			587
-cwl			MACH_CWL		CWL			588
-gd			MACH_GD			GD			589
+cornwallis		MACH_CORNWALLIS		CORNWALLIS		588
+gurney_drv		MACH_GURNEY_DRV		GURNEY_DRV		589
 chaffee			MACH_CHAFFEE		CHAFFEE			590
 rms101			MACH_RMS101		RMS101			591
 rx3715			MACH_RX3715		RX3715			592
@@ -604,7 +604,7 @@ swift			MACH_SWIFT		SWIFT			593
 roverp7			MACH_ROVERP7		ROVERP7			594
 pr818s			MACH_PR818S		PR818S			595
 trxpro			MACH_TRXPRO		TRXPRO			596
-nslu2			MACH_NSLU2		NSLU2			597
+nslu2			ARCH_NSLU2		NSLU2			597
 e400			MACH_E400		E400			598
 trab			MACH_TRAB		TRAB			599
 cmc_pu2			MACH_CMC_PU2		CMC_PU2			600
@@ -615,3 +615,18 @@ ixdpg425		MACH_IXDPG425		IXDPG425		604
 tomtomgo		MACH_TOMTOMGO		TOMTOMGO		605
 versatile_ab		MACH_VERSATILE_AB	VERSATILE_AB		606
 edb9307			MACH_EDB9307		EDB9307			607
+sg565			MACH_SG565		SG565			608
+lpd79524		MACH_LPD79524		LPD79524		609
+lpd79525		MACH_LPD79525		LPD79525		610
+rms100			MACH_RMS100		RMS100			611
+kb9200			MACH_KB9200		KB9200			612
+sx1			MACH_SX1		SX1			613
+hms39c7092		MACH_HMS39C7092		HMS39C7092		614
+armadillo		MACH_ARMADILLO		ARMADILLO		615
+ipcu			MACH_IPCU		IPCU			616
+loox720			MACH_LOOX720		LOOX720			617
+ixdp465			MACH_IXDP465		IXDP465			618
+ixdp2351		MACH_IXDP2351		IXDP2351		619
+adsvix			MACH_ADSVIX		ADSVIX			620
+dm270			MACH_DM270		DM270			621
+