-diff -Nur linux-2.4.29/Makefile linux-mips/Makefile
---- linux-2.4.29/Makefile 2005-01-19 15:10:14.000000000 +0100
-+++ linux-mips/Makefile 2005-01-20 03:19:21.000000000 +0100
-@@ -5,7 +5,7 @@
-
- KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
-
--ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
-+ARCH = mips
- KERNELPATH=kernel-$(shell echo $(KERNELRELEASE) | sed -e "s/-//g")
-
- CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
-@@ -462,10 +462,11 @@
- $(MAKE) -C Documentation/DocBook mrproper
-
- distclean: mrproper
-- rm -f core `find . \( -not -type d \) -and \
-- \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
-- -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
-- -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -type f -print` TAGS tags
-+ find . \( -not -type d \) -and \
-+ \( -name core -o -name '*.orig' -o -name '*.rej' \
-+ -o -name '*~' -o -name '*.bak' -o -name '#*#' \
-+ -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \
-+ -o -name TAGS -o -name tags \) -print | env -i xargs rm -f
-
- backup: mrproper
- cd .. && tar cf - linux/ | gzip -9 > backup.gz
-@@ -492,7 +493,7 @@
- $(MAKE) -C Documentation/DocBook man
-
- sums:
-- find . -type f -print | sort | xargs sum > .SUMS
-+ find . -type f -print | sort | env -i xargs sum > .SUMS
-
- dep-files: scripts/mkdep archdep include/linux/version.h
- rm -f .depend .hdepend
-diff -Nur linux-2.4.29/arch/mips/Makefile linux-mips/arch/mips/Makefile
---- linux-2.4.29/arch/mips/Makefile 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/Makefile 2005-01-31 12:59:28.000000000 +0100
-@@ -211,7 +211,7 @@
- endif
-
- #
--# Au1000 (Alchemy Semi PB1000) eval board
-+# Au1x AMD Alchemy eval boards
- #
- ifdef CONFIG_MIPS_PB1000
- LIBS += arch/mips/au1000/pb1000/pb1000.o \
-@@ -220,9 +220,6 @@
- LOADADDR := 0x80100000
- endif
-
--#
--# Au1100 (Alchemy Semi PB1100) eval board
--#
- ifdef CONFIG_MIPS_PB1100
- LIBS += arch/mips/au1000/pb1100/pb1100.o \
- arch/mips/au1000/common/au1000.o
-@@ -230,9 +227,6 @@
- LOADADDR += 0x80100000
- endif
-
--#
--# Au1500 (Alchemy Semi PB1500) eval board
--#
- ifdef CONFIG_MIPS_PB1500
- LIBS += arch/mips/au1000/pb1500/pb1500.o \
- arch/mips/au1000/common/au1000.o
-@@ -240,9 +234,6 @@
- LOADADDR := 0x80100000
- endif
-
--#
--# Au1x00 (AMD/Alchemy) eval boards
--#
- ifdef CONFIG_MIPS_DB1000
- LIBS += arch/mips/au1000/db1x00/db1x00.o \
- arch/mips/au1000/common/au1000.o
-@@ -313,6 +304,27 @@
- LOADADDR += 0x80100000
- endif
-
-+ifdef CONFIG_MIPS_PB1200
-+LIBS += arch/mips/au1000/pb1200/pb1200.o \
-+ arch/mips/au1000/common/au1000.o
-+SUBDIRS += arch/mips/au1000/pb1200 arch/mips/au1000/common
-+LOADADDR += 0x80100000
-+endif
-+
-+ifdef CONFIG_MIPS_DB1200
-+LIBS += arch/mips/au1000/pb1200/pb1200.o \
-+ arch/mips/au1000/common/au1000.o
-+SUBDIRS += arch/mips/au1000/pb1200 arch/mips/au1000/common
-+LOADADDR += 0x80100000
-+endif
-+
-+ifdef CONFIG_MIPS_FICMMP
-+LIBS += arch/mips/au1000/ficmmp/ficmmp.o \
-+ arch/mips/au1000/common/au1000.o
-+SUBDIRS += arch/mips/au1000/ficmmp arch/mips/au1000/common
-+LOADADDR += 0x80100000
-+endif
-+
-
- #
- # Cogent CSB250
-diff -Nur linux-2.4.29/arch/mips/au1000/common/Makefile linux-mips/arch/mips/au1000/common/Makefile
---- linux-2.4.29/arch/mips/au1000/common/Makefile 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/common/Makefile 2005-01-31 12:59:30.000000000 +0100
-@@ -19,9 +19,9 @@
- export-objs = prom.o clocks.o power.o usbdev.o
-
- obj-y := prom.o int-handler.o irq.o puts.o time.o reset.o cputable.o \
-- au1xxx_irqmap.o clocks.o power.o setup.o sleeper.o dma.o dbdma.o
-+ au1xxx_irqmap.o clocks.o power.o setup.o sleeper.o dma.o dbdma.o gpio.o
-
--export-objs += dma.o dbdma.o
-+export-objs += dma.o dbdma.o gpio.o
-
- obj-$(CONFIG_AU1X00_USB_DEVICE) += usbdev.o
- obj-$(CONFIG_KGDB) += dbg_io.o
diff -Nur linux-2.4.29/arch/mips/au1000/common/au1xxx_irqmap.c linux-mips/arch/mips/au1000/common/au1xxx_irqmap.c
--- linux-2.4.29/arch/mips/au1000/common/au1xxx_irqmap.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/common/au1xxx_irqmap.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/common/au1xxx_irqmap.c 2005-01-30 09:01:27.000000000 +0100
@@ -172,14 +172,14 @@
{ AU1550_PSC1_INT, INTC_INT_HIGH_LEVEL, 0},
{ AU1550_PSC2_INT, INTC_INT_HIGH_LEVEL, 0},
{ AU1200_LCD_INT, INTC_INT_HIGH_LEVEL, 0},
diff -Nur linux-2.4.29/arch/mips/au1000/common/cputable.c linux-mips/arch/mips/au1000/common/cputable.c
--- linux-2.4.29/arch/mips/au1000/common/cputable.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/common/cputable.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/common/cputable.c 2005-01-30 09:01:27.000000000 +0100
@@ -39,7 +39,8 @@
{ 0xffffffff, 0x02030203, "Au1100 BD", 0, 1 },
{ 0xffffffff, 0x02030204, "Au1100 BE", 0, 1 },
diff -Nur linux-2.4.29/arch/mips/au1000/common/dbdma.c linux-mips/arch/mips/au1000/common/dbdma.c
--- linux-2.4.29/arch/mips/au1000/common/dbdma.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/common/dbdma.c 2005-02-12 04:05:28.000000000 +0100
++++ linux-mips/arch/mips/au1000/common/dbdma.c 2005-02-08 07:28:37.000000000 +0100
@@ -41,6 +41,8 @@
#include <asm/au1xxx_dbdma.h>
#include <asm/system.h>
+EXPORT_SYMBOL(au1xxx_gpio_read);
diff -Nur linux-2.4.29/arch/mips/au1000/common/irq.c linux-mips/arch/mips/au1000/common/irq.c
--- linux-2.4.29/arch/mips/au1000/common/irq.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/common/irq.c 2005-01-31 12:59:30.000000000 +0100
-@@ -508,6 +508,7 @@
++++ linux-mips/arch/mips/au1000/common/irq.c 2005-03-13 08:56:57.000000000 +0100
+@@ -303,8 +303,30 @@
+ };
+
+ #ifdef CONFIG_PM
+-void startup_match20_interrupt(void)
++void startup_match20_interrupt(void (*handler)(int, void *, struct pt_regs *))
+ {
++ static struct irqaction action;
++ /* This is a big problem.... since we didn't use request_irq
++ when kernel/irq.c calls probe_irq_xxx this interrupt will
++ be probed for usage. This will end up disabling the device :(
++
++ Give it a bogus "action" pointer -- this will keep it from
++ getting auto-probed!
++
++ By setting the status to match that of request_irq() we
++ can avoid it. --cgray
++ */
++ action.dev_id = handler;
++ action.flags = 0;
++ action.mask = 0;
++ action.name = "Au1xxx TOY";
++ action.handler = handler;
++ action.next = NULL;
++
++ irq_desc[AU1000_TOY_MATCH2_INT].action = &action;
++ irq_desc[AU1000_TOY_MATCH2_INT].status
++ &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS);
++
+ local_enable_irq(AU1000_TOY_MATCH2_INT);
+ }
+ #endif
+@@ -508,6 +530,7 @@
if (!intc0_req0) return;
/*
* Because of the tight timing of SETUP token to reply
* transactions, the USB devices-side packet complete
-@@ -518,6 +519,7 @@
+@@ -518,6 +541,7 @@
do_IRQ(AU1000_USB_DEV_REQ_INT, regs);
return;
}
irq = au_ffs(intc0_req0) - 1;
intc0_req0 &= ~(1<<irq);
+@@ -536,17 +560,7 @@
+
+ irq = au_ffs(intc0_req1) - 1;
+ intc0_req1 &= ~(1<<irq);
+-#ifdef CONFIG_PM
+- if (irq == AU1000_TOY_MATCH2_INT) {
+- mask_and_ack_rise_edge_irq(irq);
+- counter0_irq(irq, NULL, regs);
+- local_enable_irq(irq);
+- }
+- else
+-#endif
+- {
+- do_IRQ(irq, regs);
+- }
++ do_IRQ(irq, regs);
+ }
+
+
+diff -Nur linux-2.4.29/arch/mips/au1000/common/Makefile linux-mips/arch/mips/au1000/common/Makefile
+--- linux-2.4.29/arch/mips/au1000/common/Makefile 2005-01-19 15:09:26.000000000 +0100
++++ linux-mips/arch/mips/au1000/common/Makefile 2005-01-30 09:01:27.000000000 +0100
+@@ -19,9 +19,9 @@
+ export-objs = prom.o clocks.o power.o usbdev.o
+
+ obj-y := prom.o int-handler.o irq.o puts.o time.o reset.o cputable.o \
+- au1xxx_irqmap.o clocks.o power.o setup.o sleeper.o dma.o dbdma.o
++ au1xxx_irqmap.o clocks.o power.o setup.o sleeper.o dma.o dbdma.o gpio.o
+
+-export-objs += dma.o dbdma.o
++export-objs += dma.o dbdma.o gpio.o
+
+ obj-$(CONFIG_AU1X00_USB_DEVICE) += usbdev.o
+ obj-$(CONFIG_KGDB) += dbg_io.o
diff -Nur linux-2.4.29/arch/mips/au1000/common/pci_fixup.c linux-mips/arch/mips/au1000/common/pci_fixup.c
--- linux-2.4.29/arch/mips/au1000/common/pci_fixup.c 2005-01-19 15:09:26.000000000 +0100
+++ linux-mips/arch/mips/au1000/common/pci_fixup.c 2004-12-03 09:00:32.000000000 +0100
diff -Nur linux-2.4.29/arch/mips/au1000/common/pci_ops.c linux-mips/arch/mips/au1000/common/pci_ops.c
--- linux-2.4.29/arch/mips/au1000/common/pci_ops.c 2004-02-18 14:36:30.000000000 +0100
-+++ linux-mips/arch/mips/au1000/common/pci_ops.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/common/pci_ops.c 2005-02-27 23:14:24.000000000 +0100
@@ -162,6 +162,7 @@
static int config_access(unsigned char access_type, struct pci_dev *dev,
unsigned char where, u32 * data)
unsigned long entryLo0, entryLo1;
if (device > 19) {
-@@ -271,8 +271,11 @@
+@@ -205,9 +205,8 @@
+ last_entryLo0 = last_entryLo1 = 0xffffffff;
+ }
+
+- /* Since the Au1xxx doesn't do the idsel timing exactly to spec,
+- * many board vendors implement their own off-chip idsel, so call
+- * it now. If it doesn't succeed, may as well bail out at this point.
++ /* Allow board vendors to implement their own off-chip idsel.
++ * If it doesn't succeed, may as well bail out at this point.
+ */
+ if (board_pci_idsel) {
+ if (board_pci_idsel(device, 1) == 0) {
+@@ -271,8 +270,11 @@
}
local_irq_restore(flags);
diff -Nur linux-2.4.29/arch/mips/au1000/common/power.c linux-mips/arch/mips/au1000/common/power.c
--- linux-2.4.29/arch/mips/au1000/common/power.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/common/power.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/common/power.c 2005-01-30 09:01:27.000000000 +0100
@@ -50,7 +50,6 @@
static void calibrate_delay(void);
{0}
};
+diff -Nur linux-2.4.29/arch/mips/au1000/common/reset.c linux-mips/arch/mips/au1000/common/reset.c
+--- linux-2.4.29/arch/mips/au1000/common/reset.c 2005-01-19 15:09:26.000000000 +0100
++++ linux-mips/arch/mips/au1000/common/reset.c 2005-02-27 23:11:54.000000000 +0100
+@@ -144,6 +144,26 @@
+ au_writel(0x00, 0xb1900064); /* sys_auxpll */
+ au_writel(0x00, 0xb1900100); /* sys_pininputen */
+ break;
++ case 0x04000000: /* Au1200 */
++ au_writel(0x00, 0xb400300c); /* ddma */
++ au_writel(0x00, 0xb1a00004); /* psc 0 */
++ au_writel(0x00, 0xb1b00004); /* psc 1 */
++ au_writel(0x00d02000, 0xb4020004); /* ehci, ohci, udc, otg */
++ au_writel(0x00, 0xb5000004); /* lcd */
++ au_writel(0x00, 0xb060000c); /* sd0 */
++ au_writel(0x00, 0xb068000c); /* sd1 */
++ au_writel(0x00, 0xb1100100); /* swcnt */
++ au_writel(0x00, 0xb0300000); /* aes */
++ au_writel(0x00, 0xb4004000); /* cim */
++ au_writel(0x00, 0xb1100100); /* uart0_enable */
++ au_writel(0x00, 0xb1200100); /* uart1_enable */
++ au_writel(0x00, 0xb1900020); /* sys_freqctrl0 */
++ au_writel(0x00, 0xb1900024); /* sys_freqctrl1 */
++ au_writel(0x00, 0xb1900028); /* sys_clksrc */
++ au_writel(0x10, 0xb1900060); /* sys_cpupll */
++ au_writel(0x00, 0xb1900064); /* sys_auxpll */
++ au_writel(0x00, 0xb1900100); /* sys_pininputen */
++ break;
+
+ default:
+ break;
diff -Nur linux-2.4.29/arch/mips/au1000/common/setup.c linux-mips/arch/mips/au1000/common/setup.c
--- linux-2.4.29/arch/mips/au1000/common/setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/common/setup.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/common/setup.c 2005-01-30 09:01:27.000000000 +0100
@@ -174,6 +174,40 @@
initrd_end = (unsigned long)&__rd_end;
#endif
#endif
diff -Nur linux-2.4.29/arch/mips/au1000/common/sleeper.S linux-mips/arch/mips/au1000/common/sleeper.S
--- linux-2.4.29/arch/mips/au1000/common/sleeper.S 2004-02-18 14:36:30.000000000 +0100
-+++ linux-mips/arch/mips/au1000/common/sleeper.S 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/common/sleeper.S 2005-01-30 09:01:27.000000000 +0100
@@ -15,17 +15,48 @@
#include <asm/addrspace.h>
#include <asm/regdef.h>
+
diff -Nur linux-2.4.29/arch/mips/au1000/common/time.c linux-mips/arch/mips/au1000/common/time.c
--- linux-2.4.29/arch/mips/au1000/common/time.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/common/time.c 2005-01-31 12:59:30.000000000 +0100
-@@ -437,9 +437,6 @@
++++ linux-mips/arch/mips/au1000/common/time.c 2005-03-13 08:56:57.000000000 +0100
+@@ -50,7 +50,6 @@
+ #include <linux/mc146818rtc.h>
+ #include <linux/timex.h>
+
+-extern void startup_match20_interrupt(void);
+ extern void do_softirq(void);
+ extern volatile unsigned long wall_jiffies;
+ unsigned long missed_heart_beats = 0;
+@@ -66,7 +65,7 @@
+
+ #ifdef CONFIG_PM
+ #define MATCH20_INC 328
+-extern void startup_match20_interrupt(void);
++extern void startup_match20_interrupt(void (*handler)(int, void *, struct pt_regs *));
+ static unsigned long last_pc0, last_match20;
+ #endif
+
+@@ -437,9 +436,6 @@
au_writel(0, SYS_TOYWRITE);
while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C0S);
while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20);
/* setup match20 to interrupt once every 10ms */
-diff -Nur linux-2.4.29/arch/mips/au1000/db1x00/Makefile linux-mips/arch/mips/au1000/db1x00/Makefile
---- linux-2.4.29/arch/mips/au1000/db1x00/Makefile 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/db1x00/Makefile 2005-01-31 12:59:30.000000000 +0100
-@@ -17,4 +17,11 @@
- obj-y := init.o board_setup.o irqmap.o
- obj-$(CONFIG_WM97XX_COMODULE) += mirage_ts.o
+@@ -447,7 +443,7 @@
+ au_writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2);
+ au_sync();
+ while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20);
+- startup_match20_interrupt();
++ startup_match20_interrupt(counter0_irq);
+
+ do_gettimeoffset = do_fast_pm_gettimeoffset;
-+ifdef CONFIG_MIPS_DB1100
-+ifdef CONFIG_MMC
-+obj-y += mmc_support.o
-+export-objs += mmc_support.o
-+endif
-+endif
-+
- include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/arch/mips/au1000/db1x00/board_setup.c linux-mips/arch/mips/au1000/db1x00/board_setup.c
--- linux-2.4.29/arch/mips/au1000/db1x00/board_setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/db1x00/board_setup.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/db1x00/board_setup.c 2005-01-30 09:06:19.000000000 +0100
@@ -46,10 +46,22 @@
#include <asm/au1000.h>
#include <asm/db1x00.h>
#endif
diff -Nur linux-2.4.29/arch/mips/au1000/db1x00/irqmap.c linux-mips/arch/mips/au1000/db1x00/irqmap.c
--- linux-2.4.29/arch/mips/au1000/db1x00/irqmap.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/db1x00/irqmap.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/db1x00/irqmap.c 2005-01-30 09:06:19.000000000 +0100
@@ -53,6 +53,7 @@
#ifdef CONFIG_MIPS_DB1550
{ AU1000_GPIO_3, INTC_INT_LOW_LEVEL, 0 }, // PCMCIA Card 0 IRQ#
#else
{ AU1000_GPIO_0, INTC_INT_LOW_LEVEL, 0 }, // PCMCIA Card 0 Fully_Interted#
{ AU1000_GPIO_1, INTC_INT_LOW_LEVEL, 0 }, // PCMCIA Card 0 STSCHG#
+diff -Nur linux-2.4.29/arch/mips/au1000/db1x00/Makefile linux-mips/arch/mips/au1000/db1x00/Makefile
+--- linux-2.4.29/arch/mips/au1000/db1x00/Makefile 2005-01-19 15:09:26.000000000 +0100
++++ linux-mips/arch/mips/au1000/db1x00/Makefile 2005-01-30 09:06:19.000000000 +0100
+@@ -17,4 +17,11 @@
+ obj-y := init.o board_setup.o irqmap.o
+ obj-$(CONFIG_WM97XX_COMODULE) += mirage_ts.o
+
++ifdef CONFIG_MIPS_DB1100
++ifdef CONFIG_MMC
++obj-y += mmc_support.o
++export-objs += mmc_support.o
++endif
++endif
++
+ include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/arch/mips/au1000/db1x00/mmc_support.c linux-mips/arch/mips/au1000/db1x00/mmc_support.c
--- linux-2.4.29/arch/mips/au1000/db1x00/mmc_support.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-mips/arch/mips/au1000/db1x00/mmc_support.c 2005-01-30 09:07:01.000000000 +0100
+EXPORT_SYMBOL(mmc_power_on);
+EXPORT_SYMBOL(mmc_power_off);
+
-diff -Nur linux-2.4.29/arch/mips/au1000/ficmmp/Makefile linux-mips/arch/mips/au1000/ficmmp/Makefile
---- linux-2.4.29/arch/mips/au1000/ficmmp/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/arch/mips/au1000/ficmmp/Makefile 2005-01-30 09:01:27.000000000 +0100
-@@ -0,0 +1,25 @@
-+#
-+# Copyright 2000 MontaVista Software Inc.
-+# Author: MontaVista Software, Inc.
-+# ppopov@mvista.com or source@mvista.com
-+#
-+# Makefile for the Alchemy Semiconductor FIC board.
-+#
-+# Note! Dependencies are done automagically by 'make dep', which also
-+# removes any old dependencies. DON'T put your own dependencies here
-+# unless it's something special (ie not a .c file).
-+#
-+
-+USE_STANDARD_AS_RULE := true
-+
-+O_TARGET := ficmmp.o
-+
-+obj-y := init.o board_setup.o irqmap.o au1200_ibutton.o au1xxx_dock.o
-+
-+ifdef CONFIG_MMC
-+obj-y += mmc_support.o
-+export-objs +=mmc_support.o
-+endif
-+
-+
-+include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/arch/mips/au1000/ficmmp/au1200_ibutton.c linux-mips/arch/mips/au1000/ficmmp/au1200_ibutton.c
--- linux-2.4.29/arch/mips/au1000/ficmmp/au1200_ibutton.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-mips/arch/mips/au1000/ficmmp/au1200_ibutton.c 2005-02-03 07:35:29.000000000 +0100
+module_exit(au1xxx_dock_exit);
diff -Nur linux-2.4.29/arch/mips/au1000/ficmmp/board_setup.c linux-mips/arch/mips/au1000/ficmmp/board_setup.c
--- linux-2.4.29/arch/mips/au1000/ficmmp/board_setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/arch/mips/au1000/ficmmp/board_setup.c 2005-01-30 09:01:27.000000000 +0100
-@@ -0,0 +1,191 @@
++++ linux-mips/arch/mips/au1000/ficmmp/board_setup.c 2005-03-13 09:04:16.000000000 +0100
+@@ -0,0 +1,222 @@
+/*
+ *
+ * BRIEF MODULE DESCRIPTION
+
+#ifdef CONFIG_FB_AU1200
+ argptr = prom_getcmdline();
-+ strcat(argptr, " video=au1200fb:panel:s11");
++ strcat(argptr, " video=au1200fb:");
+#endif
+
+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
+ printk("B190002C: %X\n", *((volatile u32*)0xB190002C));
+}
+
++int
++board_au1200fb_panel (void)
++{
++ au1xxx_gpio_tristate(6);
++
++ if (au1xxx_gpio_read(12) == 0)
++ return 9; /* FS453_640x480 (Composite/S-Video) */
++ else
++ return 7; /* Sharp 320x240 TFT */
++}
++
++int
++board_au1200fb_panel_init (void)
++{
++ /*Enable data buffers*/
++ ficmmp_config_clear(FICMMP_CONFIG_LCMDATAOUT);
++ /*Take LCD out of reset*/
++ ficmmp_config_set(FICMMP_CONFIG_LCMPWREN | FICMMP_CONFIG_LCMEN);
++ return 0;
++}
++
++int
++board_au1200fb_panel_shutdown (void)
++{
++ /*Disable data buffers*/
++ ficmmp_config_set(FICMMP_CONFIG_LCMDATAOUT);
++ /*Put LCD in reset, remove power*/
++ ficmmp_config_clear(FICMMP_CONFIG_LCMEN | FICMMP_CONFIG_LCMPWREN);
++ return 0;
++}
++
diff -Nur linux-2.4.29/arch/mips/au1000/ficmmp/init.c linux-mips/arch/mips/au1000/ficmmp/init.c
--- linux-2.4.29/arch/mips/au1000/ficmmp/init.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-mips/arch/mips/au1000/ficmmp/init.c 2005-01-30 09:01:27.000000000 +0100
+
+int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
+
-diff -Nur linux-2.4.29/arch/mips/au1000/hydrogen3/Makefile linux-mips/arch/mips/au1000/hydrogen3/Makefile
---- linux-2.4.29/arch/mips/au1000/hydrogen3/Makefile 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/hydrogen3/Makefile 2005-02-12 04:05:28.000000000 +0100
-@@ -14,6 +14,11 @@
-
- O_TARGET := hydrogen3.o
-
--obj-y := init.o board_setup.o irqmap.o
-+obj-y := init.o board_setup.o irqmap.o buttons.o
-+
-+ifdef CONFIG_MMC
-+obj-y += mmc_support.o
-+export-objs +=mmc_support.o
+diff -Nur linux-2.4.29/arch/mips/au1000/ficmmp/Makefile linux-mips/arch/mips/au1000/ficmmp/Makefile
+--- linux-2.4.29/arch/mips/au1000/ficmmp/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-mips/arch/mips/au1000/ficmmp/Makefile 2005-01-30 09:01:27.000000000 +0100
+@@ -0,0 +1,25 @@
++#
++# Copyright 2000 MontaVista Software Inc.
++# Author: MontaVista Software, Inc.
++# ppopov@mvista.com or source@mvista.com
++#
++# Makefile for the Alchemy Semiconductor FIC board.
++#
++# Note! Dependencies are done automagically by 'make dep', which also
++# removes any old dependencies. DON'T put your own dependencies here
++# unless it's something special (ie not a .c file).
++#
++
++USE_STANDARD_AS_RULE := true
++
++O_TARGET := ficmmp.o
++
++obj-y := init.o board_setup.o irqmap.o au1200_ibutton.o au1xxx_dock.o
++
++ifdef CONFIG_MMC
++obj-y += mmc_support.o
++export-objs +=mmc_support.o
+endif
-
- include $(TOPDIR)/Rules.make
++
++
++include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/arch/mips/au1000/hydrogen3/board_setup.c linux-mips/arch/mips/au1000/hydrogen3/board_setup.c
--- linux-2.4.29/arch/mips/au1000/hydrogen3/board_setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/hydrogen3/board_setup.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/hydrogen3/board_setup.c 2005-01-30 09:07:57.000000000 +0100
@@ -57,6 +57,9 @@
rtc_ops = &no_rtc_ops;
+
+module_init(hydrogen3_buttons_init);
+module_exit(hydrogen3_buttons_exit);
+diff -Nur linux-2.4.29/arch/mips/au1000/hydrogen3/Makefile linux-mips/arch/mips/au1000/hydrogen3/Makefile
+--- linux-2.4.29/arch/mips/au1000/hydrogen3/Makefile 2005-01-19 15:09:26.000000000 +0100
++++ linux-mips/arch/mips/au1000/hydrogen3/Makefile 2005-02-11 22:09:55.000000000 +0100
+@@ -14,6 +14,11 @@
+
+ O_TARGET := hydrogen3.o
+
+-obj-y := init.o board_setup.o irqmap.o
++obj-y := init.o board_setup.o irqmap.o buttons.o
++
++ifdef CONFIG_MMC
++obj-y += mmc_support.o
++export-objs +=mmc_support.o
++endif
+
+ include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/arch/mips/au1000/hydrogen3/mmc_support.c linux-mips/arch/mips/au1000/hydrogen3/mmc_support.c
--- linux-2.4.29/arch/mips/au1000/hydrogen3/mmc_support.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-mips/arch/mips/au1000/hydrogen3/mmc_support.c 2005-02-02 05:27:06.000000000 +0100
return PCI_IRQ_TABLE_LOOKUP;
diff -Nur linux-2.4.29/arch/mips/au1000/pb1100/Makefile linux-mips/arch/mips/au1000/pb1100/Makefile
--- linux-2.4.29/arch/mips/au1000/pb1100/Makefile 2003-08-25 13:44:39.000000000 +0200
-+++ linux-mips/arch/mips/au1000/pb1100/Makefile 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/pb1100/Makefile 2005-01-30 09:10:29.000000000 +0100
@@ -16,4 +16,10 @@
obj-y := init.o board_setup.o irqmap.o
+EXPORT_SYMBOL(mmc_power_on);
+EXPORT_SYMBOL(mmc_power_off);
+
-diff -Nur linux-2.4.29/arch/mips/au1000/pb1200/Makefile linux-mips/arch/mips/au1000/pb1200/Makefile
---- linux-2.4.29/arch/mips/au1000/pb1200/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/arch/mips/au1000/pb1200/Makefile 2005-01-30 09:01:27.000000000 +0100
-@@ -0,0 +1,25 @@
-+#
-+# Copyright 2000 MontaVista Software Inc.
-+# Author: MontaVista Software, Inc.
-+# ppopov@mvista.com or source@mvista.com
-+#
-+# Makefile for the Alchemy Semiconductor PB1000 board.
-+#
-+# Note! Dependencies are done automagically by 'make dep', which also
-+# removes any old dependencies. DON'T put your own dependencies here
-+# unless it's something special (ie not a .c file).
-+#
-+
-+USE_STANDARD_AS_RULE := true
-+
-+O_TARGET := pb1200.o
-+
-+obj-y := init.o board_setup.o irqmap.o
-+
-+ifdef CONFIG_MMC
-+obj-y += mmc_support.o
-+export-objs +=mmc_support.o
-+endif
-+
-+
-+include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/arch/mips/au1000/pb1200/board_setup.c linux-mips/arch/mips/au1000/pb1200/board_setup.c
--- linux-2.4.29/arch/mips/au1000/pb1200/board_setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/arch/mips/au1000/pb1200/board_setup.c 2005-01-30 09:01:28.000000000 +0100
-@@ -0,0 +1,190 @@
++++ linux-mips/arch/mips/au1000/pb1200/board_setup.c 2005-03-13 09:04:16.000000000 +0100
+@@ -0,0 +1,216 @@
+/*
+ *
+ * BRIEF MODULE DESCRIPTION
+
+#ifdef CONFIG_FB_AU1200
+ argptr = prom_getcmdline();
-+#ifdef CONFIG_MIPS_PB1200
-+ strcat(argptr, " video=au1200fb:panel:s11");
-+#endif
-+#ifdef CONFIG_MIPS_DB1200
-+ strcat(argptr, " video=au1200fb:panel:s7");
-+#endif
++ strcat(argptr, " video=au1200fb:");
+#endif
+
+#if defined(CONFIG_BLK_DEV_IDE_AU1XXX)
+ board_init_irq = _board_init_irq;
+ }
+}
++
++int
++board_au1200fb_panel (void)
++{
++ BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
++ int p;
++
++ p = bcsr->switches;
++ p >>= 8;
++ p &= 0x0F;
++ return p;
++}
++
++int
++board_au1200fb_panel_init (void)
++{
++ /* Apply power */
++ BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
++ bcsr->board |= (BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL);
++ return 0;
++}
++
++int
++board_au1200fb_panel_shutdown (void)
++{
++ /* Remove power */
++ BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
++ bcsr->board &= ~(BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL);
++ return 0;
++}
++
diff -Nur linux-2.4.29/arch/mips/au1000/pb1200/init.c linux-mips/arch/mips/au1000/pb1200/init.c
--- linux-2.4.29/arch/mips/au1000/pb1200/init.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-mips/arch/mips/au1000/pb1200/init.c 2005-01-30 09:01:28.000000000 +0100
+ request of any source attached to the cascade */
+}
+
+diff -Nur linux-2.4.29/arch/mips/au1000/pb1200/Makefile linux-mips/arch/mips/au1000/pb1200/Makefile
+--- linux-2.4.29/arch/mips/au1000/pb1200/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-mips/arch/mips/au1000/pb1200/Makefile 2005-01-30 09:01:27.000000000 +0100
+@@ -0,0 +1,25 @@
++#
++# Copyright 2000 MontaVista Software Inc.
++# Author: MontaVista Software, Inc.
++# ppopov@mvista.com or source@mvista.com
++#
++# Makefile for the Alchemy Semiconductor PB1000 board.
++#
++# Note! Dependencies are done automagically by 'make dep', which also
++# removes any old dependencies. DON'T put your own dependencies here
++# unless it's something special (ie not a .c file).
++#
++
++USE_STANDARD_AS_RULE := true
++
++O_TARGET := pb1200.o
++
++obj-y := init.o board_setup.o irqmap.o
++
++ifdef CONFIG_MMC
++obj-y += mmc_support.o
++export-objs +=mmc_support.o
++endif
++
++
++include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/arch/mips/au1000/pb1200/mmc_support.c linux-mips/arch/mips/au1000/pb1200/mmc_support.c
--- linux-2.4.29/arch/mips/au1000/pb1200/mmc_support.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-mips/arch/mips/au1000/pb1200/mmc_support.c 2005-01-30 09:01:28.000000000 +0100
+
diff -Nur linux-2.4.29/arch/mips/au1000/pb1550/board_setup.c linux-mips/arch/mips/au1000/pb1550/board_setup.c
--- linux-2.4.29/arch/mips/au1000/pb1550/board_setup.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/pb1550/board_setup.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/pb1550/board_setup.c 2005-01-30 09:01:28.000000000 +0100
@@ -48,6 +48,16 @@
extern struct rtc_ops no_rtc_ops;
}
diff -Nur linux-2.4.29/arch/mips/au1000/pb1550/irqmap.c linux-mips/arch/mips/au1000/pb1550/irqmap.c
--- linux-2.4.29/arch/mips/au1000/pb1550/irqmap.c 2005-01-19 15:09:26.000000000 +0100
-+++ linux-mips/arch/mips/au1000/pb1550/irqmap.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/au1000/pb1550/irqmap.c 2005-01-30 09:01:28.000000000 +0100
@@ -50,6 +50,9 @@
au1xxx_irq_map_t au1xxx_irq_map[] = {
{ AU1000_GPIO_0, INTC_INT_LOW_LEVEL, 0 },
int au1xxx_nr_irqs = sizeof(au1xxx_irq_map)/sizeof(au1xxx_irq_map_t);
diff -Nur linux-2.4.29/arch/mips/config-shared.in linux-mips/arch/mips/config-shared.in
--- linux-2.4.29/arch/mips/config-shared.in 2005-01-19 15:09:27.000000000 +0100
-+++ linux-mips/arch/mips/config-shared.in 2005-01-31 12:59:28.000000000 +0100
++++ linux-mips/arch/mips/config-shared.in 2005-01-30 09:01:26.000000000 +0100
@@ -21,16 +21,19 @@
comment 'Machine selection'
dep_bool 'Support for Acer PICA 1 chipset (EXPERIMENTAL)' CONFIG_ACER_PICA_61 $CONFIG_EXPERIMENTAL
# CONFIG_SCSI_SATA_NV is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-bosporus linux-mips/arch/mips/defconfig-bosporus
--- linux-2.4.29/arch/mips/defconfig-bosporus 2005-01-19 15:09:27.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-bosporus 2005-01-31 12:59:28.000000000 +0100
++++ linux-mips/arch/mips/defconfig-bosporus 2005-01-30 09:01:26.000000000 +0100
@@ -373,11 +373,6 @@
#
# CONFIG_IPX is not set
# CONFIG_X25 is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-db1000 linux-mips/arch/mips/defconfig-db1000
--- linux-2.4.29/arch/mips/defconfig-db1000 2005-01-19 15:09:28.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-db1000 2005-02-12 04:05:27.000000000 +0100
++++ linux-mips/arch/mips/defconfig-db1000 2005-02-03 07:35:29.000000000 +0100
@@ -22,16 +22,19 @@
#
# CONFIG_ACER_PICA_61 is not set
# CONFIG_X25 is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-db1100 linux-mips/arch/mips/defconfig-db1100
--- linux-2.4.29/arch/mips/defconfig-db1100 2005-01-19 15:09:28.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-db1100 2005-02-12 04:05:27.000000000 +0100
++++ linux-mips/arch/mips/defconfig-db1100 2005-02-03 07:35:29.000000000 +0100
@@ -22,16 +22,19 @@
#
# CONFIG_ACER_PICA_61 is not set
+# CONFIG_FW_LOADER is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-db1500 linux-mips/arch/mips/defconfig-db1500
--- linux-2.4.29/arch/mips/defconfig-db1500 2005-01-19 15:09:28.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-db1500 2005-02-12 04:05:27.000000000 +0100
++++ linux-mips/arch/mips/defconfig-db1500 2005-02-03 07:35:29.000000000 +0100
@@ -22,16 +22,19 @@
#
# CONFIG_ACER_PICA_61 is not set
# CONFIG_X25 is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-db1550 linux-mips/arch/mips/defconfig-db1550
--- linux-2.4.29/arch/mips/defconfig-db1550 2005-01-19 15:09:28.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-db1550 2005-02-12 04:05:27.000000000 +0100
++++ linux-mips/arch/mips/defconfig-db1550 2005-02-03 07:35:29.000000000 +0100
@@ -22,16 +22,19 @@
#
# CONFIG_ACER_PICA_61 is not set
# CONFIG_X25 is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-ficmmp linux-mips/arch/mips/defconfig-ficmmp
--- linux-2.4.29/arch/mips/defconfig-ficmmp 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-ficmmp 2005-02-12 04:05:27.000000000 +0100
++++ linux-mips/arch/mips/defconfig-ficmmp 2005-02-03 07:35:29.000000000 +0100
@@ -0,0 +1,880 @@
+#
+# Automatically generated make config: don't edit
# CONFIG_X25 is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-hydrogen3 linux-mips/arch/mips/defconfig-hydrogen3
--- linux-2.4.29/arch/mips/defconfig-hydrogen3 2005-01-19 15:09:28.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-hydrogen3 2005-01-31 12:59:29.000000000 +0100
++++ linux-mips/arch/mips/defconfig-hydrogen3 2005-01-30 09:01:26.000000000 +0100
@@ -22,6 +22,7 @@
#
# CONFIG_ACER_PICA_61 is not set
# CONFIG_SCSI_SATA_NV is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-mirage linux-mips/arch/mips/defconfig-mirage
--- linux-2.4.29/arch/mips/defconfig-mirage 2005-01-19 15:09:28.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-mirage 2005-01-31 12:59:29.000000000 +0100
++++ linux-mips/arch/mips/defconfig-mirage 2005-01-30 09:01:26.000000000 +0100
@@ -335,11 +335,6 @@
#
# CONFIG_IPX is not set
# CONFIG_X25 is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-pb1000 linux-mips/arch/mips/defconfig-pb1000
--- linux-2.4.29/arch/mips/defconfig-pb1000 2005-01-19 15:09:28.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-pb1000 2005-02-12 04:05:27.000000000 +0100
++++ linux-mips/arch/mips/defconfig-pb1000 2005-02-03 07:35:29.000000000 +0100
@@ -22,16 +22,19 @@
#
# CONFIG_ACER_PICA_61 is not set
#
diff -Nur linux-2.4.29/arch/mips/defconfig-pb1100 linux-mips/arch/mips/defconfig-pb1100
--- linux-2.4.29/arch/mips/defconfig-pb1100 2005-01-19 15:09:28.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-pb1100 2005-02-12 04:05:28.000000000 +0100
++++ linux-mips/arch/mips/defconfig-pb1100 2005-02-03 07:35:29.000000000 +0100
@@ -22,16 +22,19 @@
#
# CONFIG_ACER_PICA_61 is not set
+# CONFIG_FW_LOADER is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-pb1500 linux-mips/arch/mips/defconfig-pb1500
--- linux-2.4.29/arch/mips/defconfig-pb1500 2005-01-19 15:09:28.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-pb1500 2005-02-12 04:05:28.000000000 +0100
++++ linux-mips/arch/mips/defconfig-pb1500 2005-02-03 07:35:29.000000000 +0100
@@ -22,16 +22,19 @@
#
# CONFIG_ACER_PICA_61 is not set
# CONFIG_X25 is not set
diff -Nur linux-2.4.29/arch/mips/defconfig-pb1550 linux-mips/arch/mips/defconfig-pb1550
--- linux-2.4.29/arch/mips/defconfig-pb1550 2005-01-19 15:09:29.000000000 +0100
-+++ linux-mips/arch/mips/defconfig-pb1550 2005-02-12 04:05:28.000000000 +0100
++++ linux-mips/arch/mips/defconfig-pb1550 2005-02-03 07:35:29.000000000 +0100
@@ -22,16 +22,19 @@
#
# CONFIG_ACER_PICA_61 is not set
# CONFIG_SCSI_SATA_NV is not set
diff -Nur linux-2.4.29/arch/mips/kernel/cpu-probe.c linux-mips/arch/mips/kernel/cpu-probe.c
--- linux-2.4.29/arch/mips/kernel/cpu-probe.c 2005-01-19 15:09:29.000000000 +0100
-+++ linux-mips/arch/mips/kernel/cpu-probe.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips/kernel/cpu-probe.c 2005-01-30 09:01:28.000000000 +0100
@@ -105,6 +105,7 @@
case CPU_AU1100:
case CPU_AU1500:
diff -Nur linux-2.4.29/arch/mips/kernel/scall_o32.S linux-mips/arch/mips/kernel/scall_o32.S
--- linux-2.4.29/arch/mips/kernel/scall_o32.S 2005-01-19 15:09:29.000000000 +0100
-+++ linux-mips/arch/mips/kernel/scall_o32.S 2005-02-12 04:05:33.000000000 +0100
++++ linux-mips/arch/mips/kernel/scall_o32.S 2005-02-07 22:21:53.000000000 +0100
@@ -121,15 +121,14 @@
trace_a_syscall:
};
-
-EXPORT_SYMBOL(rtc_ops);
-diff -Nur linux-2.4.29/arch/mips/mm/c-r4k.c linux-mips/arch/mips/mm/c-r4k.c
---- linux-2.4.29/arch/mips/mm/c-r4k.c 2005-01-19 15:09:29.000000000 +0100
-+++ linux-mips/arch/mips/mm/c-r4k.c 2005-02-12 04:05:35.000000000 +0100
-@@ -867,9 +867,16 @@
- * normally they'd suffer from aliases but magic in the hardware deals
- * with that for us so we don't need to take care ourselves.
- */
-- if (c->cputype != CPU_R10000 && c->cputype != CPU_R12000)
-- if (c->dcache.waysize > PAGE_SIZE)
-- c->dcache.flags |= MIPS_CACHE_ALIASES;
-+ switch (c->cputype) {
-+ case CPU_R10000:
-+ case CPU_R12000:
-+ break;
-+ case CPU_24K:
-+ if (!(read_c0_config7() & (1 << 16)))
-+ default:
-+ if (c->dcache.waysize > PAGE_SIZE)
-+ c->dcache.flags |= MIPS_CACHE_ALIASES;
-+ }
+diff -Nur linux-2.4.29/arch/mips/Makefile linux-mips/arch/mips/Makefile
+--- linux-2.4.29/arch/mips/Makefile 2005-01-19 15:09:26.000000000 +0100
++++ linux-mips/arch/mips/Makefile 2005-01-30 09:01:26.000000000 +0100
+@@ -211,7 +211,7 @@
+ endif
- switch (c->cputype) {
- case CPU_20KC:
-@@ -1069,9 +1076,6 @@
- probe_pcache();
- setup_scache();
+ #
+-# Au1000 (Alchemy Semi PB1000) eval board
++# Au1x AMD Alchemy eval boards
+ #
+ ifdef CONFIG_MIPS_PB1000
+ LIBS += arch/mips/au1000/pb1000/pb1000.o \
+@@ -220,9 +220,6 @@
+ LOADADDR := 0x80100000
+ endif
-- if (c->dcache.sets * c->dcache.ways > PAGE_SIZE)
-- c->dcache.flags |= MIPS_CACHE_ALIASES;
--
- r4k_blast_dcache_page_setup();
- r4k_blast_dcache_page_indexed_setup();
- r4k_blast_dcache_setup();
+-#
+-# Au1100 (Alchemy Semi PB1100) eval board
+-#
+ ifdef CONFIG_MIPS_PB1100
+ LIBS += arch/mips/au1000/pb1100/pb1100.o \
+ arch/mips/au1000/common/au1000.o
+@@ -230,9 +227,6 @@
+ LOADADDR += 0x80100000
+ endif
+
+-#
+-# Au1500 (Alchemy Semi PB1500) eval board
+-#
+ ifdef CONFIG_MIPS_PB1500
+ LIBS += arch/mips/au1000/pb1500/pb1500.o \
+ arch/mips/au1000/common/au1000.o
+@@ -240,9 +234,6 @@
+ LOADADDR := 0x80100000
+ endif
+
+-#
+-# Au1x00 (AMD/Alchemy) eval boards
+-#
+ ifdef CONFIG_MIPS_DB1000
+ LIBS += arch/mips/au1000/db1x00/db1x00.o \
+ arch/mips/au1000/common/au1000.o
+@@ -313,6 +304,27 @@
+ LOADADDR += 0x80100000
+ endif
+
++ifdef CONFIG_MIPS_PB1200
++LIBS += arch/mips/au1000/pb1200/pb1200.o \
++ arch/mips/au1000/common/au1000.o
++SUBDIRS += arch/mips/au1000/pb1200 arch/mips/au1000/common
++LOADADDR += 0x80100000
++endif
++
++ifdef CONFIG_MIPS_DB1200
++LIBS += arch/mips/au1000/pb1200/pb1200.o \
++ arch/mips/au1000/common/au1000.o
++SUBDIRS += arch/mips/au1000/pb1200 arch/mips/au1000/common
++LOADADDR += 0x80100000
++endif
++
++ifdef CONFIG_MIPS_FICMMP
++LIBS += arch/mips/au1000/ficmmp/ficmmp.o \
++ arch/mips/au1000/common/au1000.o
++SUBDIRS += arch/mips/au1000/ficmmp arch/mips/au1000/common
++LOADADDR += 0x80100000
++endif
++
+
+ #
+ # Cogent CSB250
diff -Nur linux-2.4.29/arch/mips/mm/cerr-sb1.c linux-mips/arch/mips/mm/cerr-sb1.c
--- linux-2.4.29/arch/mips/mm/cerr-sb1.c 2004-02-18 14:36:30.000000000 +0100
+++ linux-mips/arch/mips/mm/cerr-sb1.c 2004-12-13 18:37:23.000000000 +0100
if (way == 0) {
lru = (taghi >> 14) & 0xff;
prom_printf("[Bank %d Set 0x%02x] LRU > %d %d %d %d > MRU\n",
-diff -Nur linux-2.4.29/arch/mips/mm/tlb-r4k.c linux-mips/arch/mips/mm/tlb-r4k.c
---- linux-2.4.29/arch/mips/mm/tlb-r4k.c 2005-01-19 15:09:29.000000000 +0100
-+++ linux-mips/arch/mips/mm/tlb-r4k.c 2004-11-25 23:18:38.000000000 +0100
-@@ -3,17 +3,12 @@
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
-- * r4xx0.c: R4000 processor variant specific MMU/Cache routines.
-- *
- * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
- * Copyright (C) 1997, 1998, 1999, 2000 Ralf Baechle ralf@gnu.org
-- *
-- * To do:
-- *
-- * - this code is a overbloated pig
-- * - many of the bug workarounds are not efficient at all, but at
-- * least they are functional ...
-+ * Carsten Langgaard, carstenl@mips.com
-+ * Copyright (C) 2002 MIPS Technologies, Inc. All rights reserved.
- */
-+#include <linux/config.h>
- #include <linux/init.h>
- #include <linux/sched.h>
- #include <linux/mm.h>
-@@ -25,9 +20,6 @@
- #include <asm/pgtable.h>
- #include <asm/system.h>
-
--#undef DEBUG_TLB
--#undef DEBUG_TLBUPDATE
+diff -Nur linux-2.4.29/arch/mips/mm/c-r4k.c linux-mips/arch/mips/mm/c-r4k.c
+--- linux-2.4.29/arch/mips/mm/c-r4k.c 2005-01-19 15:09:29.000000000 +0100
++++ linux-mips/arch/mips/mm/c-r4k.c 2005-02-06 22:55:42.000000000 +0100
+@@ -867,9 +867,16 @@
+ * normally they'd suffer from aliases but magic in the hardware deals
+ * with that for us so we don't need to take care ourselves.
+ */
+- if (c->cputype != CPU_R10000 && c->cputype != CPU_R12000)
+- if (c->dcache.waysize > PAGE_SIZE)
+- c->dcache.flags |= MIPS_CACHE_ALIASES;
++ switch (c->cputype) {
++ case CPU_R10000:
++ case CPU_R12000:
++ break;
++ case CPU_24K:
++ if (!(read_c0_config7() & (1 << 16)))
++ default:
++ if (c->dcache.waysize > PAGE_SIZE)
++ c->dcache.flags |= MIPS_CACHE_ALIASES;
++ }
+
+ switch (c->cputype) {
+ case CPU_20KC:
+@@ -1069,9 +1076,6 @@
+ probe_pcache();
+ setup_scache();
+
+- if (c->dcache.sets * c->dcache.ways > PAGE_SIZE)
+- c->dcache.flags |= MIPS_CACHE_ALIASES;
+-
+ r4k_blast_dcache_page_setup();
+ r4k_blast_dcache_page_indexed_setup();
+ r4k_blast_dcache_setup();
+diff -Nur linux-2.4.29/arch/mips/mm/tlbex-mips32.S linux-mips/arch/mips/mm/tlbex-mips32.S
+--- linux-2.4.29/arch/mips/mm/tlbex-mips32.S 2004-02-18 14:36:30.000000000 +0100
++++ linux-mips/arch/mips/mm/tlbex-mips32.S 2004-11-29 00:33:15.000000000 +0100
+@@ -196,7 +196,7 @@
+ .set noat; \
+ SAVE_ALL; \
+ mfc0 a2, CP0_BADVADDR; \
+- STI; \
++ KMODE; \
+ .set at; \
+ move a0, sp; \
+ jal do_page_fault; \
+diff -Nur linux-2.4.29/arch/mips/mm/tlbex-r4k.S linux-mips/arch/mips/mm/tlbex-r4k.S
+--- linux-2.4.29/arch/mips/mm/tlbex-r4k.S 2004-02-18 14:36:30.000000000 +0100
++++ linux-mips/arch/mips/mm/tlbex-r4k.S 2004-11-25 23:18:38.000000000 +0100
+@@ -184,13 +184,10 @@
+ P_MTC0 k0, CP0_ENTRYLO0 # load it
+ PTE_SRL k1, k1, 6 # convert to entrylo1
+ P_MTC0 k1, CP0_ENTRYLO1 # load it
+- b 1f
+- rm9000_tlb_hazard
++ mtc0_tlbw_hazard
+ tlbwr # write random tlb entry
+-1:
+- nop
+- rm9000_tlb_hazard
+- eret # return from trap
++ tlbw_eret_hazard
++ eret
+ END(except_vec0_r4000)
+
+ /* TLB refill, EXL == 0, R4600 version */
+@@ -468,13 +465,10 @@
+ PTE_PRESENT(k0, k1, nopage_tlbl)
+ PTE_MAKEVALID(k0, k1)
+ PTE_RELOAD(k1, k0)
+- rm9000_tlb_hazard
+- nop
+- b 1f
+- tlbwi
+-1:
++ mtc0_tlbw_hazard
++ tlbwi
+ nop
+- rm9000_tlb_hazard
++ tlbw_eret_hazard
+ .set mips3
+ eret
+ .set mips0
+@@ -496,13 +490,10 @@
+ PTE_WRITABLE(k0, k1, nopage_tlbs)
+ PTE_MAKEWRITE(k0, k1)
+ PTE_RELOAD(k1, k0)
+- rm9000_tlb_hazard
+- nop
+- b 1f
+- tlbwi
+-1:
++ mtc0_tlbw_hazard
++ tlbwi
+ nop
+- rm9000_tlb_hazard
++ tlbw_eret_hazard
+ .set mips3
+ eret
+ .set mips0
+@@ -529,13 +520,10 @@
+
+ /* Now reload the entry into the tlb. */
+ PTE_RELOAD(k1, k0)
+- rm9000_tlb_hazard
+- nop
+- b 1f
+- tlbwi
+-1:
+- rm9000_tlb_hazard
++ mtc0_tlbw_hazard
++ tlbwi
+ nop
++ tlbw_eret_hazard
+ .set mips3
+ eret
+ .set mips0
+diff -Nur linux-2.4.29/arch/mips/mm/tlb-r4k.c linux-mips/arch/mips/mm/tlb-r4k.c
+--- linux-2.4.29/arch/mips/mm/tlb-r4k.c 2005-01-19 15:09:29.000000000 +0100
++++ linux-mips/arch/mips/mm/tlb-r4k.c 2004-11-25 23:18:38.000000000 +0100
+@@ -3,17 +3,12 @@
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+- * r4xx0.c: R4000 processor variant specific MMU/Cache routines.
+- *
+ * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
+ * Copyright (C) 1997, 1998, 1999, 2000 Ralf Baechle ralf@gnu.org
+- *
+- * To do:
+- *
+- * - this code is a overbloated pig
+- * - many of the bug workarounds are not efficient at all, but at
+- * least they are functional ...
++ * Carsten Langgaard, carstenl@mips.com
++ * Copyright (C) 2002 MIPS Technologies, Inc. All rights reserved.
+ */
++#include <linux/config.h>
+ #include <linux/init.h>
+ #include <linux/sched.h>
+ #include <linux/mm.h>
+@@ -25,9 +20,6 @@
+ #include <asm/pgtable.h>
+ #include <asm/system.h>
+
+-#undef DEBUG_TLB
+-#undef DEBUG_TLBUPDATE
-
extern char except_vec0_nevada, except_vec0_r4000, except_vec0_r4600;
/*
* You should never change this register:
-diff -Nur linux-2.4.29/arch/mips/mm/tlbex-mips32.S linux-mips/arch/mips/mm/tlbex-mips32.S
---- linux-2.4.29/arch/mips/mm/tlbex-mips32.S 2004-02-18 14:36:30.000000000 +0100
-+++ linux-mips/arch/mips/mm/tlbex-mips32.S 2004-11-29 00:33:15.000000000 +0100
-@@ -196,7 +196,7 @@
- .set noat; \
- SAVE_ALL; \
- mfc0 a2, CP0_BADVADDR; \
-- STI; \
-+ KMODE; \
- .set at; \
- move a0, sp; \
- jal do_page_fault; \
-diff -Nur linux-2.4.29/arch/mips/mm/tlbex-r4k.S linux-mips/arch/mips/mm/tlbex-r4k.S
---- linux-2.4.29/arch/mips/mm/tlbex-r4k.S 2004-02-18 14:36:30.000000000 +0100
-+++ linux-mips/arch/mips/mm/tlbex-r4k.S 2004-11-25 23:18:38.000000000 +0100
-@@ -184,13 +184,10 @@
- P_MTC0 k0, CP0_ENTRYLO0 # load it
- PTE_SRL k1, k1, 6 # convert to entrylo1
- P_MTC0 k1, CP0_ENTRYLO1 # load it
-- b 1f
-- rm9000_tlb_hazard
-+ mtc0_tlbw_hazard
- tlbwr # write random tlb entry
--1:
-- nop
-- rm9000_tlb_hazard
-- eret # return from trap
-+ tlbw_eret_hazard
-+ eret
- END(except_vec0_r4000)
-
- /* TLB refill, EXL == 0, R4600 version */
-@@ -468,13 +465,10 @@
- PTE_PRESENT(k0, k1, nopage_tlbl)
- PTE_MAKEVALID(k0, k1)
- PTE_RELOAD(k1, k0)
-- rm9000_tlb_hazard
-- nop
-- b 1f
-- tlbwi
--1:
-+ mtc0_tlbw_hazard
-+ tlbwi
- nop
-- rm9000_tlb_hazard
-+ tlbw_eret_hazard
- .set mips3
- eret
- .set mips0
-@@ -496,13 +490,10 @@
- PTE_WRITABLE(k0, k1, nopage_tlbs)
- PTE_MAKEWRITE(k0, k1)
- PTE_RELOAD(k1, k0)
-- rm9000_tlb_hazard
-- nop
-- b 1f
-- tlbwi
--1:
-+ mtc0_tlbw_hazard
-+ tlbwi
- nop
-- rm9000_tlb_hazard
-+ tlbw_eret_hazard
- .set mips3
- eret
- .set mips0
-@@ -529,13 +520,10 @@
-
- /* Now reload the entry into the tlb. */
- PTE_RELOAD(k1, k0)
-- rm9000_tlb_hazard
-- nop
-- b 1f
-- tlbwi
--1:
-- rm9000_tlb_hazard
-+ mtc0_tlbw_hazard
-+ tlbwi
- nop
-+ tlbw_eret_hazard
- .set mips3
- eret
- .set mips0
diff -Nur linux-2.4.29/arch/mips64/defconfig linux-mips/arch/mips64/defconfig
--- linux-2.4.29/arch/mips64/defconfig 2005-01-19 15:09:30.000000000 +0100
+++ linux-mips/arch/mips64/defconfig 2005-01-20 03:19:22.000000000 +0100
# CONFIG_X25 is not set
diff -Nur linux-2.4.29/arch/mips64/kernel/binfmt_elfn32.c linux-mips/arch/mips64/kernel/binfmt_elfn32.c
--- linux-2.4.29/arch/mips64/kernel/binfmt_elfn32.c 2003-08-25 13:44:40.000000000 +0200
-+++ linux-mips/arch/mips64/kernel/binfmt_elfn32.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips64/kernel/binfmt_elfn32.c 2005-01-26 03:40:47.000000000 +0100
@@ -116,4 +116,7 @@
#undef MODULE_DESCRIPTION
#undef MODULE_AUTHOR
#include "../../../fs/binfmt_elf.c"
diff -Nur linux-2.4.29/arch/mips64/kernel/binfmt_elfo32.c linux-mips/arch/mips64/kernel/binfmt_elfo32.c
--- linux-2.4.29/arch/mips64/kernel/binfmt_elfo32.c 2003-08-25 13:44:40.000000000 +0200
-+++ linux-mips/arch/mips64/kernel/binfmt_elfo32.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips64/kernel/binfmt_elfo32.c 2005-01-26 03:40:47.000000000 +0100
@@ -137,4 +137,7 @@
#undef MODULE_DESCRIPTION
#undef MODULE_AUTHOR
diff -Nur linux-2.4.29/arch/mips64/kernel/ioctl32.c linux-mips/arch/mips64/kernel/ioctl32.c
--- linux-2.4.29/arch/mips64/kernel/ioctl32.c 2005-01-19 15:09:31.000000000 +0100
-+++ linux-mips/arch/mips64/kernel/ioctl32.c 2005-01-31 12:59:30.000000000 +0100
++++ linux-mips/arch/mips64/kernel/ioctl32.c 2005-01-26 03:36:17.000000000 +0100
@@ -2352,7 +2352,7 @@
IOCTL32_HANDLER(AUTOFS_IOC_SETTIMEOUT32, ioc_settimeout),
IOCTL32_DEFAULT(AUTOFS_IOC_EXPIRE),
IOCTL32_DEFAULT(AUTOFS_IOC_ASKUMOUNT),
diff -Nur linux-2.4.29/arch/mips64/kernel/scall_64.S linux-mips/arch/mips64/kernel/scall_64.S
--- linux-2.4.29/arch/mips64/kernel/scall_64.S 2005-01-19 15:09:32.000000000 +0100
-+++ linux-mips/arch/mips64/kernel/scall_64.S 2005-02-12 04:05:40.000000000 +0100
++++ linux-mips/arch/mips64/kernel/scall_64.S 2005-02-07 22:21:54.000000000 +0100
@@ -102,15 +102,14 @@
trace_a_syscall:
sltu t0, t0, v0
diff -Nur linux-2.4.29/arch/mips64/kernel/scall_n32.S linux-mips/arch/mips64/kernel/scall_n32.S
--- linux-2.4.29/arch/mips64/kernel/scall_n32.S 2005-01-19 15:09:32.000000000 +0100
-+++ linux-mips/arch/mips64/kernel/scall_n32.S 2005-02-12 04:05:40.000000000 +0100
++++ linux-mips/arch/mips64/kernel/scall_n32.S 2005-02-07 22:21:54.000000000 +0100
@@ -106,15 +106,14 @@
trace_a_syscall:
sltu t0, t0, v0
diff -Nur linux-2.4.29/arch/mips64/kernel/scall_o32.S linux-mips/arch/mips64/kernel/scall_o32.S
--- linux-2.4.29/arch/mips64/kernel/scall_o32.S 2005-01-19 15:09:32.000000000 +0100
-+++ linux-mips/arch/mips64/kernel/scall_o32.S 2005-02-12 04:05:41.000000000 +0100
++++ linux-mips/arch/mips64/kernel/scall_o32.S 2005-02-14 04:52:57.000000000 +0100
@@ -118,9 +118,8 @@
sd a6, PT_R10(sp)
sd a7, PT_R11(sp)
li t0, -EMAXERRNO - 1 # error?
sltu t0, t0, v0
+@@ -576,6 +575,8 @@
+ sys_call_table:
+ syscalltable
+
++ .purgem sys
++
+ .macro sys function, nargs
+ .byte \nargs
+ .endm
diff -Nur linux-2.4.29/arch/mips64/kernel/setup.c linux-mips/arch/mips64/kernel/setup.c
--- linux-2.4.29/arch/mips64/kernel/setup.c 2005-01-19 15:09:32.000000000 +0100
+++ linux-mips/arch/mips64/kernel/setup.c 2004-11-22 14:38:26.000000000 +0100
diff -Nur linux-2.4.29/arch/mips64/kernel/signal_n32.c linux-mips/arch/mips64/kernel/signal_n32.c
--- linux-2.4.29/arch/mips64/kernel/signal_n32.c 2005-01-19 15:09:33.000000000 +0100
-+++ linux-mips/arch/mips64/kernel/signal_n32.c 2005-02-12 04:05:41.000000000 +0100
++++ linux-mips/arch/mips64/kernel/signal_n32.c 2005-02-07 22:10:53.000000000 +0100
@@ -68,7 +68,7 @@
};
- current->active_mm = &init_mm;
+ per_cpu_trap_init();
}
+diff -Nur linux-2.4.29/arch/mips64/mm/cerr-sb1.c linux-mips/arch/mips64/mm/cerr-sb1.c
+--- linux-2.4.29/arch/mips64/mm/cerr-sb1.c 2004-02-18 14:36:30.000000000 +0100
++++ linux-mips/arch/mips64/mm/cerr-sb1.c 2004-12-13 18:37:26.000000000 +0100
+@@ -252,14 +252,14 @@
+
+ /* Masks to select bits for Hamming parity, mask_72_64[i] for bit[i] */
+ static const uint64_t mask_72_64[8] = {
+- 0x0738C808099264FFL,
+- 0x38C808099264FF07L,
+- 0xC808099264FF0738L,
+- 0x08099264FF0738C8L,
+- 0x099264FF0738C808L,
+- 0x9264FF0738C80809L,
+- 0x64FF0738C8080992L,
+- 0xFF0738C808099264L
++ 0x0738C808099264FFULL,
++ 0x38C808099264FF07ULL,
++ 0xC808099264FF0738ULL,
++ 0x08099264FF0738C8ULL,
++ 0x099264FF0738C808ULL,
++ 0x9264FF0738C80809ULL,
++ 0x64FF0738C8080992ULL,
++ 0xFF0738C808099264ULL
+ };
+
+ /* Calculate the parity on a range of bits */
+@@ -331,9 +331,9 @@
+ ((lru >> 4) & 0x3),
+ ((lru >> 6) & 0x3));
+ }
+- va = (taglo & 0xC0000FFFFFFFE000) | addr;
++ va = (taglo & 0xC0000FFFFFFFE000ULL) | addr;
+ if ((taglo & (1 << 31)) && (((taglo >> 62) & 0x3) == 3))
+- va |= 0x3FFFF00000000000;
++ va |= 0x3FFFF00000000000ULL;
+ valid = ((taghi >> 29) & 1);
+ if (valid) {
+ tlo_tmp = taglo & 0xfff3ff;
+@@ -474,7 +474,7 @@
+ : "r" ((way << 13) | addr));
+
+ taglo = ((unsigned long long)taglohi << 32) | taglolo;
+- pa = (taglo & 0xFFFFFFE000) | addr;
++ pa = (taglo & 0xFFFFFFE000ULL) | addr;
+ if (way == 0) {
+ lru = (taghi >> 14) & 0xff;
+ prom_printf("[Bank %d Set 0x%02x] LRU > %d %d %d %d > MRU\n",
diff -Nur linux-2.4.29/arch/mips64/mm/c-r4k.c linux-mips/arch/mips64/mm/c-r4k.c
--- linux-2.4.29/arch/mips64/mm/c-r4k.c 2005-01-19 15:09:33.000000000 +0100
-+++ linux-mips/arch/mips64/mm/c-r4k.c 2005-02-12 04:05:41.000000000 +0100
++++ linux-mips/arch/mips64/mm/c-r4k.c 2005-02-06 22:55:42.000000000 +0100
@@ -867,9 +867,16 @@
* normally they'd suffer from aliases but magic in the hardware deals
* with that for us so we don't need to take care ourselves.
r4k_blast_dcache_page_setup();
r4k_blast_dcache_page_indexed_setup();
r4k_blast_dcache_setup();
-diff -Nur linux-2.4.29/arch/mips64/mm/cerr-sb1.c linux-mips/arch/mips64/mm/cerr-sb1.c
---- linux-2.4.29/arch/mips64/mm/cerr-sb1.c 2004-02-18 14:36:30.000000000 +0100
-+++ linux-mips/arch/mips64/mm/cerr-sb1.c 2004-12-13 18:37:26.000000000 +0100
-@@ -252,14 +252,14 @@
+diff -Nur linux-2.4.29/arch/mips64/mm/tlbex-r4k.S linux-mips/arch/mips64/mm/tlbex-r4k.S
+--- linux-2.4.29/arch/mips64/mm/tlbex-r4k.S 2004-02-18 14:36:30.000000000 +0100
++++ linux-mips/arch/mips64/mm/tlbex-r4k.S 2004-11-25 23:18:38.000000000 +0100
+@@ -151,11 +151,9 @@
+ ld k0, 0(k1) # get even pte
+ ld k1, 8(k1) # get odd pte
+ PTE_RELOAD k0 k1
+- rm9000_tlb_hazard
+- b 1f
+- tlbwr
+-1: nop
+- rm9000_tlb_hazard
++ mtc0_tlbw_hazard
++ tlbwr
++1: tlbw_eret_hazard
+ eret
- /* Masks to select bits for Hamming parity, mask_72_64[i] for bit[i] */
- static const uint64_t mask_72_64[8] = {
-- 0x0738C808099264FFL,
-- 0x38C808099264FF07L,
-- 0xC808099264FF0738L,
-- 0x08099264FF0738C8L,
-- 0x099264FF0738C808L,
-- 0x9264FF0738C80809L,
-- 0x64FF0738C8080992L,
-- 0xFF0738C808099264L
-+ 0x0738C808099264FFULL,
-+ 0x38C808099264FF07ULL,
-+ 0xC808099264FF0738ULL,
-+ 0x08099264FF0738C8ULL,
-+ 0x099264FF0738C808ULL,
-+ 0x9264FF0738C80809ULL,
-+ 0x64FF0738C8080992ULL,
-+ 0xFF0738C808099264ULL
- };
+ 9: # handle the vmalloc range
+@@ -163,11 +161,9 @@
+ ld k0, 0(k1) # get even pte
+ ld k1, 8(k1) # get odd pte
+ PTE_RELOAD k0 k1
+- rm9000_tlb_hazard
+- b 1f
+- tlbwr
+-1: nop
+- rm9000_tlb_hazard
++ mtc0_tlbw_hazard
++ tlbwr
++1: tlbw_eret_hazard
+ eret
+ END(handle_vec1_r4k)
- /* Calculate the parity on a range of bits */
-@@ -331,9 +331,9 @@
- ((lru >> 4) & 0x3),
- ((lru >> 6) & 0x3));
- }
-- va = (taglo & 0xC0000FFFFFFFE000) | addr;
-+ va = (taglo & 0xC0000FFFFFFFE000ULL) | addr;
- if ((taglo & (1 << 31)) && (((taglo >> 62) & 0x3) == 3))
-- va |= 0x3FFFF00000000000;
-+ va |= 0x3FFFF00000000000ULL;
- valid = ((taghi >> 29) & 1);
- if (valid) {
- tlo_tmp = taglo & 0xfff3ff;
-@@ -474,7 +474,7 @@
- : "r" ((way << 13) | addr));
+@@ -195,10 +191,9 @@
+ ld k0, 0(k1) # get even pte
+ ld k1, 8(k1) # get odd pte
+ PTE_RELOAD k0 k1
+- rm9000_tlb_hazard
+- nop
++ mtc0_tlbw_hazard
+ tlbwr
+- rm9000_tlb_hazard
++ tlbw_eret_hazard
+ eret
+
+ 9: # handle the vmalloc range
+@@ -206,10 +201,9 @@
+ ld k0, 0(k1) # get even pte
+ ld k1, 8(k1) # get odd pte
+ PTE_RELOAD k0 k1
+- rm9000_tlb_hazard
+- nop
++ mtc0_tlbw_hazard
+ tlbwr
+- rm9000_tlb_hazard
++ tlbw_eret_hazard
+ eret
+ END(handle_vec1_r10k)
- taglo = ((unsigned long long)taglohi << 32) | taglolo;
-- pa = (taglo & 0xFFFFFFE000) | addr;
-+ pa = (taglo & 0xFFFFFFE000ULL) | addr;
- if (way == 0) {
- lru = (taghi >> 14) & 0xff;
- prom_printf("[Bank %d Set 0x%02x] LRU > %d %d %d %d > MRU\n",
diff -Nur linux-2.4.29/arch/mips64/mm/tlb-r4k.c linux-mips/arch/mips64/mm/tlb-r4k.c
--- linux-2.4.29/arch/mips64/mm/tlb-r4k.c 2005-01-19 15:09:33.000000000 +0100
+++ linux-mips/arch/mips64/mm/tlb-r4k.c 2004-11-25 23:18:38.000000000 +0100
probe_tlb(config);
write_c0_pagemask(PM_DEFAULT_MASK);
write_c0_wired(0);
-diff -Nur linux-2.4.29/arch/mips64/mm/tlbex-r4k.S linux-mips/arch/mips64/mm/tlbex-r4k.S
---- linux-2.4.29/arch/mips64/mm/tlbex-r4k.S 2004-02-18 14:36:30.000000000 +0100
-+++ linux-mips/arch/mips64/mm/tlbex-r4k.S 2004-11-25 23:18:38.000000000 +0100
-@@ -151,11 +151,9 @@
- ld k0, 0(k1) # get even pte
- ld k1, 8(k1) # get odd pte
- PTE_RELOAD k0 k1
-- rm9000_tlb_hazard
-- b 1f
-- tlbwr
--1: nop
-- rm9000_tlb_hazard
-+ mtc0_tlbw_hazard
-+ tlbwr
-+1: tlbw_eret_hazard
- eret
-
- 9: # handle the vmalloc range
-@@ -163,11 +161,9 @@
- ld k0, 0(k1) # get even pte
- ld k1, 8(k1) # get odd pte
- PTE_RELOAD k0 k1
-- rm9000_tlb_hazard
-- b 1f
-- tlbwr
--1: nop
-- rm9000_tlb_hazard
-+ mtc0_tlbw_hazard
-+ tlbwr
-+1: tlbw_eret_hazard
- eret
- END(handle_vec1_r4k)
-
-@@ -195,10 +191,9 @@
- ld k0, 0(k1) # get even pte
- ld k1, 8(k1) # get odd pte
- PTE_RELOAD k0 k1
-- rm9000_tlb_hazard
-- nop
-+ mtc0_tlbw_hazard
- tlbwr
-- rm9000_tlb_hazard
-+ tlbw_eret_hazard
- eret
-
- 9: # handle the vmalloc range
-@@ -206,10 +201,9 @@
- ld k0, 0(k1) # get even pte
- ld k1, 8(k1) # get odd pte
- PTE_RELOAD k0 k1
-- rm9000_tlb_hazard
-- nop
-+ mtc0_tlbw_hazard
- tlbwr
-- rm9000_tlb_hazard
-+ tlbw_eret_hazard
- eret
- END(handle_vec1_r10k)
-
-diff -Nur linux-2.4.29/drivers/char/Config.in linux-mips/drivers/char/Config.in
---- linux-2.4.29/drivers/char/Config.in 2004-08-08 01:26:04.000000000 +0200
-+++ linux-mips/drivers/char/Config.in 2005-02-12 04:06:18.000000000 +0100
-@@ -313,14 +313,11 @@
- if [ "$CONFIG_OBSOLETE" = "y" -a "$CONFIG_ALPHA_BOOK1" = "y" ]; then
- bool 'Tadpole ANA H8 Support (OBSOLETE)' CONFIG_H8
- fi
--if [ "$CONFIG_MIPS" = "y" -a "$CONFIG_NEW_TIME_C" = "y" ]; then
-- tristate 'Generic MIPS RTC Support' CONFIG_MIPS_RTC
--fi
- if [ "$CONFIG_SGI_IP22" = "y" ]; then
-- bool 'SGI DS1286 RTC support' CONFIG_SGI_DS1286
-+ tristate 'Dallas DS1286 RTC support' CONFIG_DS1286
- fi
- if [ "$CONFIG_SGI_IP27" = "y" ]; then
-- bool 'SGI M48T35 RTC support' CONFIG_SGI_IP27_RTC
-+ tristate 'SGI M48T35 RTC support' CONFIG_SGI_IP27_RTC
- fi
- if [ "$CONFIG_TOSHIBA_RBTX4927" = "y" -o "$CONFIG_TOSHIBA_JMR3927" = "y" ]; then
- tristate 'Dallas DS1742 RTC support' CONFIG_DS1742
-@@ -383,6 +380,11 @@
- source drivers/char/drm/Config.in
- fi
- fi
-+
-+if [ "$CONFIG_X86" = "y" ]; then
-+ tristate 'ACP Modem (Mwave) support' CONFIG_MWAVE
-+fi
-+
- endmenu
-
- if [ "$CONFIG_HOTPLUG" = "y" -a "$CONFIG_PCMCIA" != "n" ]; then
-@@ -391,6 +393,7 @@
- if [ "$CONFIG_SOC_AU1X00" = "y" ]; then
- tristate ' Alchemy Au1x00 GPIO device support' CONFIG_AU1X00_GPIO
- tristate ' Au1000/ADS7846 touchscreen support' CONFIG_TS_AU1X00_ADS7846
-+ #tristate ' Alchemy Au1550 PSC SPI support' CONFIG_AU1550_PSC_SPI
- fi
- if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
- tristate ' ITE GPIO' CONFIG_ITE_GPIO
-diff -Nur linux-2.4.29/drivers/char/Makefile linux-mips/drivers/char/Makefile
---- linux-2.4.29/drivers/char/Makefile 2004-08-08 01:26:04.000000000 +0200
-+++ linux-mips/drivers/char/Makefile 2005-02-12 04:06:18.000000000 +0100
-@@ -48,7 +48,12 @@
- KEYBD =
- endif
- ifeq ($(CONFIG_VR41XX_KIU),y)
-- KEYMAP =
-+ ifeq ($(CONFIG_IBM_WORKPAD),y)
-+ KEYMAP = ibm_workpad_keymap.o
-+ endif
-+ ifeq ($(CONFIG_VICTOR_MPC30X),y)
-+ KEYMAP = victor_mpc30x_keymap.o
-+ endif
- KEYBD = vr41xx_keyb.o
- endif
- endif
-@@ -251,7 +256,6 @@
- obj-$(CONFIG_RTC) += rtc.o
- obj-$(CONFIG_GEN_RTC) += genrtc.o
- obj-$(CONFIG_EFI_RTC) += efirtc.o
--obj-$(CONFIG_SGI_DS1286) += ds1286.o
- obj-$(CONFIG_MIPS_RTC) += mips_rtc.o
- obj-$(CONFIG_SGI_IP27_RTC) += ip27-rtc.o
- ifeq ($(CONFIG_PPC),)
-@@ -259,6 +263,7 @@
- endif
- obj-$(CONFIG_TOSHIBA) += toshiba.o
- obj-$(CONFIG_I8K) += i8k.o
-+obj-$(CONFIG_DS1286) += ds1286.o
- obj-$(CONFIG_DS1620) += ds1620.o
- obj-$(CONFIG_DS1742) += ds1742.o
- obj-$(CONFIG_INTEL_RNG) += i810_rng.o
-@@ -269,6 +274,7 @@
-
- obj-$(CONFIG_ITE_GPIO) += ite_gpio.o
- obj-$(CONFIG_AU1X00_GPIO) += au1000_gpio.o
-+obj-$(CONFIG_AU1550_PSC_SPI) += au1550_psc_spi.o
- obj-$(CONFIG_AU1X00_USB_TTY) += au1000_usbtty.o
- obj-$(CONFIG_AU1X00_USB_RAW) += au1000_usbraw.o
- obj-$(CONFIG_COBALT_LCD) += lcd.o
-@@ -353,3 +359,9 @@
-
- qtronixmap.c: qtronixmap.map
- set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-+
-+ibm_workpad_keymap.c: ibm_workpad_keymap.map
-+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
-+
-+victor_mpc30x_keymap.c: victor_mpc30x_keymap.map
-+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
diff -Nur linux-2.4.29/drivers/char/au1000_gpio.c linux-mips/drivers/char/au1000_gpio.c
--- linux-2.4.29/drivers/char/au1000_gpio.c 2003-08-25 13:44:41.000000000 +0200
+++ linux-mips/drivers/char/au1000_gpio.c 2003-12-20 14:18:51.000000000 +0100
};
diff -Nur linux-2.4.29/drivers/char/au1550_psc_spi.c linux-mips/drivers/char/au1550_psc_spi.c
--- linux-2.4.29/drivers/char/au1550_psc_spi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/drivers/char/au1550_psc_spi.c 2005-02-12 04:06:18.000000000 +0100
++++ linux-mips/drivers/char/au1550_psc_spi.c 2005-02-11 21:37:24.000000000 +0100
@@ -0,0 +1,466 @@
+/*
+ * Driver for Alchemy Au1550 SPI on the PSC.
+}
+
+
-+module_init(au1550spi_init);
-+module_exit(au1550spi_exit);
++module_init(au1550spi_init);
++module_exit(au1550spi_exit);
+diff -Nur linux-2.4.29/drivers/char/Config.in linux-mips/drivers/char/Config.in
+--- linux-2.4.29/drivers/char/Config.in 2004-08-08 01:26:04.000000000 +0200
++++ linux-mips/drivers/char/Config.in 2005-02-11 22:09:56.000000000 +0100
+@@ -313,14 +313,11 @@
+ if [ "$CONFIG_OBSOLETE" = "y" -a "$CONFIG_ALPHA_BOOK1" = "y" ]; then
+ bool 'Tadpole ANA H8 Support (OBSOLETE)' CONFIG_H8
+ fi
+-if [ "$CONFIG_MIPS" = "y" -a "$CONFIG_NEW_TIME_C" = "y" ]; then
+- tristate 'Generic MIPS RTC Support' CONFIG_MIPS_RTC
+-fi
+ if [ "$CONFIG_SGI_IP22" = "y" ]; then
+- bool 'SGI DS1286 RTC support' CONFIG_SGI_DS1286
++ tristate 'Dallas DS1286 RTC support' CONFIG_DS1286
+ fi
+ if [ "$CONFIG_SGI_IP27" = "y" ]; then
+- bool 'SGI M48T35 RTC support' CONFIG_SGI_IP27_RTC
++ tristate 'SGI M48T35 RTC support' CONFIG_SGI_IP27_RTC
+ fi
+ if [ "$CONFIG_TOSHIBA_RBTX4927" = "y" -o "$CONFIG_TOSHIBA_JMR3927" = "y" ]; then
+ tristate 'Dallas DS1742 RTC support' CONFIG_DS1742
+@@ -383,6 +380,11 @@
+ source drivers/char/drm/Config.in
+ fi
+ fi
++
++if [ "$CONFIG_X86" = "y" ]; then
++ tristate 'ACP Modem (Mwave) support' CONFIG_MWAVE
++fi
++
+ endmenu
+
+ if [ "$CONFIG_HOTPLUG" = "y" -a "$CONFIG_PCMCIA" != "n" ]; then
+@@ -391,6 +393,7 @@
+ if [ "$CONFIG_SOC_AU1X00" = "y" ]; then
+ tristate ' Alchemy Au1x00 GPIO device support' CONFIG_AU1X00_GPIO
+ tristate ' Au1000/ADS7846 touchscreen support' CONFIG_TS_AU1X00_ADS7846
++ #tristate ' Alchemy Au1550 PSC SPI support' CONFIG_AU1550_PSC_SPI
+ fi
+ if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
+ tristate ' ITE GPIO' CONFIG_ITE_GPIO
diff -Nur linux-2.4.29/drivers/char/decserial.c linux-mips/drivers/char/decserial.c
--- linux-2.4.29/drivers/char/decserial.c 2003-08-25 13:44:41.000000000 +0200
+++ linux-mips/drivers/char/decserial.c 2004-09-28 02:53:01.000000000 +0200
+MODULE_AUTHOR("Ralf Baechle <ralf@linux-mips.org>");
+MODULE_DESCRIPTION("SGI IP27 M48T35 RTC driver");
+MODULE_LICENSE("GPL");
+diff -Nur linux-2.4.29/drivers/char/Makefile linux-mips/drivers/char/Makefile
+--- linux-2.4.29/drivers/char/Makefile 2004-08-08 01:26:04.000000000 +0200
++++ linux-mips/drivers/char/Makefile 2005-02-11 22:09:56.000000000 +0100
+@@ -48,7 +48,12 @@
+ KEYBD =
+ endif
+ ifeq ($(CONFIG_VR41XX_KIU),y)
+- KEYMAP =
++ ifeq ($(CONFIG_IBM_WORKPAD),y)
++ KEYMAP = ibm_workpad_keymap.o
++ endif
++ ifeq ($(CONFIG_VICTOR_MPC30X),y)
++ KEYMAP = victor_mpc30x_keymap.o
++ endif
+ KEYBD = vr41xx_keyb.o
+ endif
+ endif
+@@ -251,7 +256,6 @@
+ obj-$(CONFIG_RTC) += rtc.o
+ obj-$(CONFIG_GEN_RTC) += genrtc.o
+ obj-$(CONFIG_EFI_RTC) += efirtc.o
+-obj-$(CONFIG_SGI_DS1286) += ds1286.o
+ obj-$(CONFIG_MIPS_RTC) += mips_rtc.o
+ obj-$(CONFIG_SGI_IP27_RTC) += ip27-rtc.o
+ ifeq ($(CONFIG_PPC),)
+@@ -259,6 +263,7 @@
+ endif
+ obj-$(CONFIG_TOSHIBA) += toshiba.o
+ obj-$(CONFIG_I8K) += i8k.o
++obj-$(CONFIG_DS1286) += ds1286.o
+ obj-$(CONFIG_DS1620) += ds1620.o
+ obj-$(CONFIG_DS1742) += ds1742.o
+ obj-$(CONFIG_INTEL_RNG) += i810_rng.o
+@@ -269,6 +274,7 @@
+
+ obj-$(CONFIG_ITE_GPIO) += ite_gpio.o
+ obj-$(CONFIG_AU1X00_GPIO) += au1000_gpio.o
++obj-$(CONFIG_AU1550_PSC_SPI) += au1550_psc_spi.o
+ obj-$(CONFIG_AU1X00_USB_TTY) += au1000_usbtty.o
+ obj-$(CONFIG_AU1X00_USB_RAW) += au1000_usbraw.o
+ obj-$(CONFIG_COBALT_LCD) += lcd.o
+@@ -353,3 +359,9 @@
+
+ qtronixmap.c: qtronixmap.map
+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
++
++ibm_workpad_keymap.c: ibm_workpad_keymap.map
++ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
++
++victor_mpc30x_keymap.c: victor_mpc30x_keymap.map
++ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
diff -Nur linux-2.4.29/drivers/char/mips_rtc.c linux-mips/drivers/char/mips_rtc.c
--- linux-2.4.29/drivers/char/mips_rtc.c 2004-01-05 14:53:56.000000000 +0100
+++ linux-mips/drivers/char/mips_rtc.c 2004-06-28 14:54:53.000000000 +0200
diff -Nur linux-2.4.29/drivers/i2c/Config.in linux-mips/drivers/i2c/Config.in
--- linux-2.4.29/drivers/i2c/Config.in 2004-04-14 15:05:29.000000000 +0200
-+++ linux-mips/drivers/i2c/Config.in 2005-02-12 04:06:32.000000000 +0100
++++ linux-mips/drivers/i2c/Config.in 2005-02-11 20:49:04.000000000 +0100
@@ -57,6 +57,10 @@
if [ "$CONFIG_SGI_IP22" = "y" ]; then
dep_tristate 'I2C SGI interfaces' CONFIG_I2C_ALGO_SGI $CONFIG_I2C
+ dep_tristate 'Au1550/Au1200 SMBus interface' CONFIG_I2C_ALGO_AU1550 $CONFIG_I2C
+ fi
- # This is needed for automatic patch generation: sensors code starts here
- # This is needed for automatic patch generation: sensors code ends here
-diff -Nur linux-2.4.29/drivers/i2c/Makefile linux-mips/drivers/i2c/Makefile
---- linux-2.4.29/drivers/i2c/Makefile 2004-02-18 14:36:31.000000000 +0100
-+++ linux-mips/drivers/i2c/Makefile 2005-02-12 04:06:32.000000000 +0100
-@@ -6,7 +6,7 @@
-
- export-objs := i2c-core.o i2c-algo-bit.o i2c-algo-pcf.o \
- i2c-algo-ite.o i2c-algo-sibyte.o i2c-algo-sgi.o \
-- i2c-proc.o
-+ i2c-algo-au1550.o i2c-proc.o i2c-au1550.o
-
- obj-$(CONFIG_I2C) += i2c-core.o
- obj-$(CONFIG_I2C_CHARDEV) += i2c-dev.o
-@@ -25,6 +25,7 @@
- obj-$(CONFIG_I2C_ALGO_SIBYTE) += i2c-algo-sibyte.o i2c-sibyte.o
- obj-$(CONFIG_I2C_MAX1617) += i2c-max1617.o
- obj-$(CONFIG_I2C_ALGO_SGI) += i2c-algo-sgi.o
-+obj-$(CONFIG_I2C_ALGO_AU1550) += i2c-algo-au1550.o i2c-au1550.o
-
# This is needed for automatic patch generation: sensors code starts here
# This is needed for automatic patch generation: sensors code ends here
diff -Nur linux-2.4.29/drivers/i2c/i2c-algo-au1550.c linux-mips/drivers/i2c/i2c-algo-au1550.c
--- linux-2.4.29/drivers/i2c/i2c-algo-au1550.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/drivers/i2c/i2c-algo-au1550.c 2005-02-12 04:06:32.000000000 +0100
++++ linux-mips/drivers/i2c/i2c-algo-au1550.c 2005-02-11 20:49:04.000000000 +0100
@@ -0,0 +1,340 @@
+/*
+ * i2c-algo-au1550.c: SMBus (i2c) driver algorithms for Alchemy PSC interface
+MODULE_LICENSE("GPL");
diff -Nur linux-2.4.29/drivers/i2c/i2c-au1550.c linux-mips/drivers/i2c/i2c-au1550.c
--- linux-2.4.29/drivers/i2c/i2c-au1550.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/drivers/i2c/i2c-au1550.c 2005-02-12 04:06:32.000000000 +0100
++++ linux-mips/drivers/i2c/i2c-au1550.c 2005-02-11 20:49:04.000000000 +0100
@@ -0,0 +1,154 @@
+/*
+ * i2c-au1550.c: SMBus (i2c) adapter for Alchemy PSC interface
/* -------------- proc interface ---- */
#ifdef CONFIG_I2C_PROC
sensors_init();
+diff -Nur linux-2.4.29/drivers/i2c/Makefile linux-mips/drivers/i2c/Makefile
+--- linux-2.4.29/drivers/i2c/Makefile 2004-02-18 14:36:31.000000000 +0100
++++ linux-mips/drivers/i2c/Makefile 2005-02-11 20:49:04.000000000 +0100
+@@ -6,7 +6,7 @@
+
+ export-objs := i2c-core.o i2c-algo-bit.o i2c-algo-pcf.o \
+ i2c-algo-ite.o i2c-algo-sibyte.o i2c-algo-sgi.o \
+- i2c-proc.o
++ i2c-algo-au1550.o i2c-proc.o i2c-au1550.o
+
+ obj-$(CONFIG_I2C) += i2c-core.o
+ obj-$(CONFIG_I2C_CHARDEV) += i2c-dev.o
+@@ -25,6 +25,7 @@
+ obj-$(CONFIG_I2C_ALGO_SIBYTE) += i2c-algo-sibyte.o i2c-sibyte.o
+ obj-$(CONFIG_I2C_MAX1617) += i2c-max1617.o
+ obj-$(CONFIG_I2C_ALGO_SGI) += i2c-algo-sgi.o
++obj-$(CONFIG_I2C_ALGO_AU1550) += i2c-algo-au1550.o i2c-au1550.o
+
+ # This is needed for automatic patch generation: sensors code starts here
+ # This is needed for automatic patch generation: sensors code ends here
diff -Nur linux-2.4.29/drivers/media/video/indycam.c linux-mips/drivers/media/video/indycam.c
--- linux-2.4.29/drivers/media/video/indycam.c 2004-02-18 14:36:31.000000000 +0100
+++ linux-mips/drivers/media/video/indycam.c 2004-12-09 21:32:05.000000000 +0100
dep_tristate ' Flash chip mapping on ITE QED-4N-S01B, Globespan IVR or custom board' CONFIG_MTD_CSTM_MIPS_IXX $CONFIG_MTD_CFI $CONFIG_MTD_JEDEC $CONFIG_MTD_PARTITIONS
if [ "$CONFIG_MTD_CSTM_MIPS_IXX" = "y" -o "$CONFIG_MTD_CSTM_MIPS_IXX" = "m" ]; then
hex ' Physical start address of flash mapping' CONFIG_MTD_CSTM_MIPS_IXX_START 0x8000000
-diff -Nur linux-2.4.29/drivers/mtd/maps/Makefile linux-mips/drivers/mtd/maps/Makefile
---- linux-2.4.29/drivers/mtd/maps/Makefile 2003-06-13 16:51:34.000000000 +0200
-+++ linux-mips/drivers/mtd/maps/Makefile 2004-02-26 01:46:35.000000000 +0100
-@@ -52,7 +52,13 @@
- obj-$(CONFIG_MTD_PB1000) += pb1xxx-flash.o
- obj-$(CONFIG_MTD_PB1100) += pb1xxx-flash.o
- obj-$(CONFIG_MTD_PB1500) += pb1xxx-flash.o
-+obj-$(CONFIG_MTD_XXS1500) += xxs1500.o
-+obj-$(CONFIG_MTD_MTX1) += mtx-1.o
- obj-$(CONFIG_MTD_LASAT) += lasat.o
-+obj-$(CONFIG_MTD_DB1X00) += db1x00-flash.o
-+obj-$(CONFIG_MTD_PB1550) += pb1550-flash.o
-+obj-$(CONFIG_MTD_HYDROGEN3) += hydrogen3-flash.o
-+obj-$(CONFIG_MTD_BOSPORUS) += pb1xxx-flash.o
- obj-$(CONFIG_MTD_AUTCPU12) += autcpu12-nvram.o
- obj-$(CONFIG_MTD_EDB7312) += edb7312.o
- obj-$(CONFIG_MTD_IMPA7) += impa7.o
-@@ -61,5 +67,6 @@
- obj-$(CONFIG_MTD_UCLINUX) += uclinux.o
- obj-$(CONFIG_MTD_NETtel) += nettel.o
- obj-$(CONFIG_MTD_SCB2_FLASH) += scb2_flash.o
-+obj-$(CONFIG_MTD_MIRAGE) += mirage-flash.o
-
- include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/drivers/mtd/maps/db1x00-flash.c linux-mips/drivers/mtd/maps/db1x00-flash.c
--- linux-2.4.29/drivers/mtd/maps/db1x00-flash.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/drivers/mtd/maps/db1x00-flash.c 2005-02-12 04:06:46.000000000 +0100
++++ linux-mips/drivers/mtd/maps/db1x00-flash.c 2005-02-03 07:35:29.000000000 +0100
@@ -0,0 +1,283 @@
+/*
+ * Flash memory access on Alchemy Db1xxx boards
}
}
+diff -Nur linux-2.4.29/drivers/mtd/maps/Makefile linux-mips/drivers/mtd/maps/Makefile
+--- linux-2.4.29/drivers/mtd/maps/Makefile 2003-06-13 16:51:34.000000000 +0200
++++ linux-mips/drivers/mtd/maps/Makefile 2004-02-26 01:46:35.000000000 +0100
+@@ -52,7 +52,13 @@
+ obj-$(CONFIG_MTD_PB1000) += pb1xxx-flash.o
+ obj-$(CONFIG_MTD_PB1100) += pb1xxx-flash.o
+ obj-$(CONFIG_MTD_PB1500) += pb1xxx-flash.o
++obj-$(CONFIG_MTD_XXS1500) += xxs1500.o
++obj-$(CONFIG_MTD_MTX1) += mtx-1.o
+ obj-$(CONFIG_MTD_LASAT) += lasat.o
++obj-$(CONFIG_MTD_DB1X00) += db1x00-flash.o
++obj-$(CONFIG_MTD_PB1550) += pb1550-flash.o
++obj-$(CONFIG_MTD_HYDROGEN3) += hydrogen3-flash.o
++obj-$(CONFIG_MTD_BOSPORUS) += pb1xxx-flash.o
+ obj-$(CONFIG_MTD_AUTCPU12) += autcpu12-nvram.o
+ obj-$(CONFIG_MTD_EDB7312) += edb7312.o
+ obj-$(CONFIG_MTD_IMPA7) += impa7.o
+@@ -61,5 +67,6 @@
+ obj-$(CONFIG_MTD_UCLINUX) += uclinux.o
+ obj-$(CONFIG_MTD_NETtel) += nettel.o
+ obj-$(CONFIG_MTD_SCB2_FLASH) += scb2_flash.o
++obj-$(CONFIG_MTD_MIRAGE) += mirage-flash.o
+
+ include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/drivers/mtd/maps/mirage-flash.c linux-mips/drivers/mtd/maps/mirage-flash.c
--- linux-2.4.29/drivers/mtd/maps/mirage-flash.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-mips/drivers/mtd/maps/mirage-flash.c 2003-12-22 04:37:22.000000000 +0100
if (s->skb)
diff -Nur linux-2.4.29/drivers/net/irda/au1k_ir.c linux-mips/drivers/net/irda/au1k_ir.c
--- linux-2.4.29/drivers/net/irda/au1k_ir.c 2004-02-18 14:36:31.000000000 +0100
-+++ linux-mips/drivers/net/irda/au1k_ir.c 2005-02-12 04:06:52.000000000 +0100
++++ linux-mips/drivers/net/irda/au1k_ir.c 2005-02-03 07:35:29.000000000 +0100
@@ -81,10 +81,6 @@
#define RUN_AT(x) (jiffies + (x))
sprintf(child->name, (is_cardbus ? "PCI CardBus #%02x" : "PCI Bus #%02x"), child->number);
return max;
}
-diff -Nur linux-2.4.29/drivers/pcmcia/Config.in linux-mips/drivers/pcmcia/Config.in
---- linux-2.4.29/drivers/pcmcia/Config.in 2004-02-18 14:36:31.000000000 +0100
-+++ linux-mips/drivers/pcmcia/Config.in 2004-02-22 06:21:34.000000000 +0100
-@@ -30,16 +30,14 @@
- dep_tristate ' M8xx support' CONFIG_PCMCIA_M8XX $CONFIG_PCMCIA
- fi
- if [ "$CONFIG_SOC_AU1X00" = "y" ]; then
-- dep_tristate ' Au1x00 PCMCIA support' CONFIG_PCMCIA_AU1X00 $CONFIG_PCMCIA
-- if [ "$CONFIG_PCMCIA_AU1X00" != "n" ]; then
-- bool ' Pb1x00 board support' CONFIG_PCMCIA_PB1X00
-- bool ' Db1x00 board support' CONFIG_PCMCIA_DB1X00
-- bool ' XXS1500 board support' CONFIG_PCMCIA_XXS1500
-- fi
-+ dep_tristate ' Au1x00 PCMCIA support' CONFIG_PCMCIA_AU1X00 $CONFIG_PCMCIA
- fi
- if [ "$CONFIG_SIBYTE_SB1xxx_SOC" = "y" ]; then
- dep_bool ' SiByte PCMCIA support' CONFIG_PCMCIA_SIBYTE $CONFIG_PCMCIA $CONFIG_BLK_DEV_IDE_SIBYTE
- fi
-+ if [ "$CONFIG_VRC4171" = "y" -o "$CONFIG_VRC4171" = "m" ]; then
-+ dep_tristate ' NEC VRC4171 Card Controllers support' CONFIG_PCMCIA_VRC4171 $CONFIG_PCMCIA
-+ fi
- if [ "$CONFIG_VRC4173" = "y" -o "$CONFIG_VRC4173" = "m" ]; then
- dep_tristate ' NEC VRC4173 CARDU support' CONFIG_PCMCIA_VRC4173 $CONFIG_PCMCIA
- fi
-diff -Nur linux-2.4.29/drivers/pcmcia/Makefile linux-mips/drivers/pcmcia/Makefile
---- linux-2.4.29/drivers/pcmcia/Makefile 2004-02-18 14:36:31.000000000 +0100
-+++ linux-mips/drivers/pcmcia/Makefile 2005-02-12 04:06:57.000000000 +0100
-@@ -61,9 +61,18 @@
-
- obj-$(CONFIG_PCMCIA_AU1X00) += au1x00_ss.o
- au1000_ss-objs-y := au1000_generic.o
--au1000_ss-objs-$(CONFIG_PCMCIA_PB1X00) += au1000_pb1x00.o
--au1000_ss-objs-$(CONFIG_PCMCIA_DB1X00) += au1000_db1x00.o
--au1000_ss-objs-$(CONFIG_PCMCIA_XXS1500) += au1000_xxs1500.o
-+au1000_ss-objs-$(CONFIG_MIPS_PB1000) += au1000_pb1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_PB1100) += au1000_pb1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_PB1500) += au1000_pb1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_PB1550) += au1000_pb1550.o
-+au1000_ss-objs-$(CONFIG_MIPS_PB1200) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_DB1000) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_DB1100) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_DB1500) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_DB1550) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_DB1200) += au1000_db1x00.o
-+au1000_ss-objs-$(CONFIG_MIPS_HYDROGEN3) += au1000_hydrogen3.o
-+au1000_ss-objs-$(CONFIG_MIPS_XXS1500) += au1000_xxs1500.o
-
- obj-$(CONFIG_PCMCIA_SA1100) += sa1100_cs.o
- obj-$(CONFIG_PCMCIA_M8XX) += m8xx_pcmcia.o
-@@ -89,6 +98,7 @@
- sa1100_cs-objs-$(CONFIG_SA1100_XP860) += sa1100_xp860.o sa1111_generic.o
- sa1100_cs-objs-$(CONFIG_SA1100_YOPY) += sa1100_yopy.o
-
-+obj-$(CONFIG_PCMCIA_VRC4171) += vrc4171_card.o
- obj-$(CONFIG_PCMCIA_VRC4173) += vrc4173_cardu.o
-
- include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/drivers/pcmcia/au1000_db1x00.c linux-mips/drivers/pcmcia/au1000_db1x00.c
--- linux-2.4.29/drivers/pcmcia/au1000_db1x00.c 2005-01-19 15:09:57.000000000 +0100
-+++ linux-mips/drivers/pcmcia/au1000_db1x00.c 2005-02-12 04:06:57.000000000 +0100
++++ linux-mips/drivers/pcmcia/au1000_db1x00.c 2005-02-03 07:35:30.000000000 +0100
@@ -1,6 +1,6 @@
/*
*
+ inserted = BOARD_CARD_INSERTED(1);
}
- DEBUG(KERN_DEBUG "db1x00 socket %d: inserted %d, vs %d\n",
-@@ -144,16 +155,9 @@
- if(info->sock > PCMCIA_MAX_SOCK) return -1;
+ DEBUG(KERN_DEBUG "db1x00 socket %d: inserted %d, vs %d\n",
+@@ -144,16 +155,9 @@
+ if(info->sock > PCMCIA_MAX_SOCK) return -1;
+
+ if(info->sock == 0)
+-#ifdef CONFIG_MIPS_DB1550
+- info->irq = AU1000_GPIO_3;
++ info->irq = BOARD_PC0_INT;
+ else
+- info->irq = AU1000_GPIO_5;
+-#else
+- info->irq = AU1000_GPIO_2;
+- else
+- info->irq = AU1000_GPIO_5;
+-#endif
+-
++ info->irq = BOARD_PC1_INT;
+ return 0;
+ }
+
+diff -Nur linux-2.4.29/drivers/pcmcia/Config.in linux-mips/drivers/pcmcia/Config.in
+--- linux-2.4.29/drivers/pcmcia/Config.in 2004-02-18 14:36:31.000000000 +0100
++++ linux-mips/drivers/pcmcia/Config.in 2004-02-22 06:21:34.000000000 +0100
+@@ -30,16 +30,14 @@
+ dep_tristate ' M8xx support' CONFIG_PCMCIA_M8XX $CONFIG_PCMCIA
+ fi
+ if [ "$CONFIG_SOC_AU1X00" = "y" ]; then
+- dep_tristate ' Au1x00 PCMCIA support' CONFIG_PCMCIA_AU1X00 $CONFIG_PCMCIA
+- if [ "$CONFIG_PCMCIA_AU1X00" != "n" ]; then
+- bool ' Pb1x00 board support' CONFIG_PCMCIA_PB1X00
+- bool ' Db1x00 board support' CONFIG_PCMCIA_DB1X00
+- bool ' XXS1500 board support' CONFIG_PCMCIA_XXS1500
+- fi
++ dep_tristate ' Au1x00 PCMCIA support' CONFIG_PCMCIA_AU1X00 $CONFIG_PCMCIA
+ fi
+ if [ "$CONFIG_SIBYTE_SB1xxx_SOC" = "y" ]; then
+ dep_bool ' SiByte PCMCIA support' CONFIG_PCMCIA_SIBYTE $CONFIG_PCMCIA $CONFIG_BLK_DEV_IDE_SIBYTE
+ fi
++ if [ "$CONFIG_VRC4171" = "y" -o "$CONFIG_VRC4171" = "m" ]; then
++ dep_tristate ' NEC VRC4171 Card Controllers support' CONFIG_PCMCIA_VRC4171 $CONFIG_PCMCIA
++ fi
+ if [ "$CONFIG_VRC4173" = "y" -o "$CONFIG_VRC4173" = "m" ]; then
+ dep_tristate ' NEC VRC4173 CARDU support' CONFIG_PCMCIA_VRC4173 $CONFIG_PCMCIA
+ fi
+diff -Nur linux-2.4.29/drivers/pcmcia/Makefile linux-mips/drivers/pcmcia/Makefile
+--- linux-2.4.29/drivers/pcmcia/Makefile 2004-02-18 14:36:31.000000000 +0100
++++ linux-mips/drivers/pcmcia/Makefile 2005-02-03 07:35:30.000000000 +0100
+@@ -61,9 +61,18 @@
+
+ obj-$(CONFIG_PCMCIA_AU1X00) += au1x00_ss.o
+ au1000_ss-objs-y := au1000_generic.o
+-au1000_ss-objs-$(CONFIG_PCMCIA_PB1X00) += au1000_pb1x00.o
+-au1000_ss-objs-$(CONFIG_PCMCIA_DB1X00) += au1000_db1x00.o
+-au1000_ss-objs-$(CONFIG_PCMCIA_XXS1500) += au1000_xxs1500.o
++au1000_ss-objs-$(CONFIG_MIPS_PB1000) += au1000_pb1x00.o
++au1000_ss-objs-$(CONFIG_MIPS_PB1100) += au1000_pb1x00.o
++au1000_ss-objs-$(CONFIG_MIPS_PB1500) += au1000_pb1x00.o
++au1000_ss-objs-$(CONFIG_MIPS_PB1550) += au1000_pb1550.o
++au1000_ss-objs-$(CONFIG_MIPS_PB1200) += au1000_db1x00.o
++au1000_ss-objs-$(CONFIG_MIPS_DB1000) += au1000_db1x00.o
++au1000_ss-objs-$(CONFIG_MIPS_DB1100) += au1000_db1x00.o
++au1000_ss-objs-$(CONFIG_MIPS_DB1500) += au1000_db1x00.o
++au1000_ss-objs-$(CONFIG_MIPS_DB1550) += au1000_db1x00.o
++au1000_ss-objs-$(CONFIG_MIPS_DB1200) += au1000_db1x00.o
++au1000_ss-objs-$(CONFIG_MIPS_HYDROGEN3) += au1000_hydrogen3.o
++au1000_ss-objs-$(CONFIG_MIPS_XXS1500) += au1000_xxs1500.o
- if(info->sock == 0)
--#ifdef CONFIG_MIPS_DB1550
-- info->irq = AU1000_GPIO_3;
-+ info->irq = BOARD_PC0_INT;
- else
-- info->irq = AU1000_GPIO_5;
--#else
-- info->irq = AU1000_GPIO_2;
-- else
-- info->irq = AU1000_GPIO_5;
--#endif
--
-+ info->irq = BOARD_PC1_INT;
- return 0;
- }
+ obj-$(CONFIG_PCMCIA_SA1100) += sa1100_cs.o
+ obj-$(CONFIG_PCMCIA_M8XX) += m8xx_pcmcia.o
+@@ -89,6 +98,7 @@
+ sa1100_cs-objs-$(CONFIG_SA1100_XP860) += sa1100_xp860.o sa1111_generic.o
+ sa1100_cs-objs-$(CONFIG_SA1100_YOPY) += sa1100_yopy.o
++obj-$(CONFIG_PCMCIA_VRC4171) += vrc4171_card.o
+ obj-$(CONFIG_PCMCIA_VRC4173) += vrc4173_cardu.o
+
+ include $(TOPDIR)/Rules.make
diff -Nur linux-2.4.29/drivers/pcmcia/vrc4171_card.c linux-mips/drivers/pcmcia/vrc4171_card.c
--- linux-2.4.29/drivers/pcmcia/vrc4171_card.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-mips/drivers/pcmcia/vrc4171_card.c 2004-01-19 16:54:58.000000000 +0100
struct ESP_regs {
diff -Nur linux-2.4.29/drivers/sound/au1550_i2s.c linux-mips/drivers/sound/au1550_i2s.c
--- linux-2.4.29/drivers/sound/au1550_i2s.c 2005-01-19 15:10:04.000000000 +0100
-+++ linux-mips/drivers/sound/au1550_i2s.c 2005-02-12 04:07:11.000000000 +0100
++++ linux-mips/drivers/sound/au1550_i2s.c 2005-02-08 08:07:50.000000000 +0100
@@ -41,6 +41,7 @@
* 675 Mass Ave, Cambridge, MA 02139, USA.
*
err_dma2:
diff -Nur linux-2.4.29/drivers/sound/au1550_psc.c linux-mips/drivers/sound/au1550_psc.c
--- linux-2.4.29/drivers/sound/au1550_psc.c 2005-01-19 15:10:04.000000000 +0100
-+++ linux-mips/drivers/sound/au1550_psc.c 2005-01-31 12:59:41.000000000 +0100
++++ linux-mips/drivers/sound/au1550_psc.c 2005-01-30 09:01:28.000000000 +0100
@@ -30,6 +30,7 @@
* 675 Mass Ave, Cambridge, MA 02139, USA.
*
unsigned char *xmit_buf;
int xmit_head;
int xmit_tail;
-diff -Nur linux-2.4.29/drivers/video/Config.in linux-mips/drivers/video/Config.in
---- linux-2.4.29/drivers/video/Config.in 2004-02-18 14:36:31.000000000 +0100
-+++ linux-mips/drivers/video/Config.in 2005-02-12 04:07:18.000000000 +0100
-@@ -87,8 +87,8 @@
- if [ "$CONFIG_HP300" = "y" ]; then
- define_bool CONFIG_FB_HP300 y
- fi
-- if [ "$ARCH" = "alpha" ]; then
-- tristate ' TGA framebuffer support' CONFIG_FB_TGA
-+ if [ "$ARCH" = "alpha" -o "$CONFIG_TC" = "y" ]; then
-+ tristate ' TGA/SFB+ framebuffer support' CONFIG_FB_TGA
- fi
- if [ "$CONFIG_X86" = "y" ]; then
- bool ' VESA VGA graphics console' CONFIG_FB_VESA
-@@ -121,6 +121,17 @@
- hex ' Framebuffer Base Address' CONFIG_E1355_FB_BASE a8200000
- fi
- fi
-+ if [ "$CONFIG_SOC_AU1100" = "y" ]; then
-+ bool ' Au1100 LCD Driver' CONFIG_FB_AU1100
-+ fi
-+
-+ if [ "$CONFIG_SOC_AU1200" = "y" ]; then
-+ bool ' Au1200 LCD Driver' CONFIG_FB_AU1200
-+ if [ "$CONFIG_FB_AU1200" = "y" ]; then
-+ int ' Number of planes (1 to 4)' CONFIG_FB_AU1200_DEVS 1
-+ fi
-+ fi
-+
- if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
- if [ "$CONFIG_PCI" != "n" ]; then
- tristate ' Matrox acceleration (EXPERIMENTAL)' CONFIG_FB_MATROX
-@@ -178,9 +189,6 @@
- bool ' Use CRT on Pb1100 ' CONFIG_PB1500_CRT
- bool ' Use TFT Panel on Pb1100 ' CONFIG_PB1500_TFT
- fi
-- if [ "$CONFIG_SOC_AU1100" = "y" ]; then
-- bool ' Au1100 LCD Driver' CONFIG_FB_AU1100
-- fi
- fi
- fi
- fi
-diff -Nur linux-2.4.29/drivers/video/Makefile linux-mips/drivers/video/Makefile
---- linux-2.4.29/drivers/video/Makefile 2004-02-18 14:36:31.000000000 +0100
-+++ linux-mips/drivers/video/Makefile 2005-02-12 04:07:18.000000000 +0100
-@@ -87,6 +87,7 @@
- obj-$(CONFIG_FB_MAXINE) += maxinefb.o
- obj-$(CONFIG_FB_TX3912) += tx3912fb.o
- obj-$(CONFIG_FB_AU1100) += au1100fb.o fbgen.o
-+obj-$(CONFIG_FB_AU1200) += au1200fb.o fbgen.o
- obj-$(CONFIG_FB_IT8181) += it8181fb.o fbgen.o
-
- subdir-$(CONFIG_STI_CONSOLE) += sti
diff -Nur linux-2.4.29/drivers/video/au1200fb.c linux-mips/drivers/video/au1200fb.c
--- linux-2.4.29/drivers/video/au1200fb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-mips/drivers/video/au1200fb.c 2005-02-11 22:16:44.000000000 +0100
-@@ -0,0 +1,1599 @@
++++ linux-mips/drivers/video/au1200fb.c 2005-03-13 09:04:16.000000000 +0100
+@@ -0,0 +1,1564 @@
+/*
+ * BRIEF MODULE DESCRIPTION
+ * Au1200 LCD Driver.
+#include <video/fbcon-cfb32.h>
+#define CMAPSIZE 16
+
-+#ifdef CONFIG_MIPS_PB1200
-+#include <asm/pb1200.h>
-+#endif
-+
-+#ifdef CONFIG_MIPS_DB1200
-+#include <asm/db1200.h>
-+#endif
-+
-+#ifdef CONFIG_MIPS_FICMMP
-+#include <asm/ficmmp.h>
-+#endif
-+
+#define AU1200_LCD_GET_WINENABLE 1
+#define AU1200_LCD_SET_WINENABLE 2
+#define AU1200_LCD_GET_WINLOCATION 3
+
+AU1200_LCD *lcd = (AU1200_LCD *)AU1200_LCD_ADDR;
+static int window_index = 0; /* default is zero */
-+static int panel_index = 0; /* default is zero */
++static int panel_index = -1; /* default is call board_au1200fb_panel */
+
+struct window_settings
+{
+#define LCD_WINCTRL1_PO_16BPP LCD_WINCTRL1_PO_01
+#endif
+
-+static int panel_init (void);
-+static int panel_shutdown (void);
-+
++extern int board_au1200fb_panel (void);
++extern int board_au1200fb_panel_init (void);
++extern int board_au1200fb_panel_shutdown (void);
+
+#if defined(CONFIG_FOCUS_ENHANCEMENTS)
-+extern int focus_init_hdtv(void);
-+extern int focus_init_component(void);
-+extern int focus_init_cvsv(void);
-+extern int focus_shutdown(void);
++extern int board_au1200fb_focus_init_hdtv(void);
++extern int board_au1200fb_focus_init_component(void);
++extern int board_au1200fb_focus_init_cvsv(void);
++extern int board_au1200fb_focus_shutdown(void);
+#endif
+
+/*
+ /* mode_toyclksrc */ 0x00000004, /* 96MHz AUXPLL directly */
+ /* mode_backlight */ 0x00000000,
+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ panel_init,
-+ /* device_shutdown */ panel_shutdown,
++ /* device_init */ board_au1200fb_panel_init,
++ /* device_shutdown */ board_au1200fb_panel_shutdown,
+ },
+
+ { /* Index 6: Toshiba 640x480 TFT */
+ /* mode_toyclksrc */ 0x00000004, /* 96MHz AUXPLL directly */
+ /* mode_backlight */ 0x00000000,
+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ panel_init,
-+ /* device_shutdown */ panel_shutdown,
++ /* device_init */ board_au1200fb_panel_init,
++ /* device_shutdown */ board_au1200fb_panel_shutdown,
+ },
+
+ { /* Index 7: Sharp 320x240 TFT */
+ /* mode_toyclksrc */ 0x00000004, /* 96MHz AUXPLL directly */
+ /* mode_backlight */ 0x00000000,
+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ panel_init,
-+ /* device_shutdown */ panel_shutdown,
++ /* device_init */ board_au1200fb_panel_init,
++ /* device_shutdown */ board_au1200fb_panel_shutdown,
++ },
++ { /* Index 8: Toppoly TD070WGCB2 7" 854x480 TFT */
++ "Toppoly_TD070WGCB2",
++ 854, 480,
++ /* mode_screen */ LCD_SCREEN_SX_N(854) | LCD_SCREEN_SY_N(480),
++ /* mode_horztiming */ LCD_HORZTIMING_HND2_N(44) | LCD_HORZTIMING_HND1_N(44) | LCD_HORZTIMING_HPW_N(114),
++ /* mode_verttiming */ LCD_VERTTIMING_VND2_N(20) | LCD_VERTTIMING_VND1_N(21) | LCD_VERTTIMING_VPW_N(4),
++ /* mode_clkcontrol */ 0x00020001, /* /4=24Mhz */
++ /* mode_pwmdiv */ 0x8000063f,
++ /* mode_pwmhi */ 0x03400000,
++ /* mode_outmask */ 0x00FCFCFC,
++ /* mode_fifoctrl */ 0x2f2f2f2f,
++ /* mode_toyclksrc */ 0x00000004, /* AUXPLL directly */
++ /* mode_backlight */ 0x00000000,
++ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
++ /* device_init */ board_au1200fb_panel_init,
++ /* device_shutdown */ board_au1200fb_panel_shutdown,
+ },
+#if defined(CONFIG_FOCUS_ENHANCEMENTS)
-+ { /* Index 8: Focus FS453 TV-Out 640x480 */
++ { /* Index 9: Focus FS453 TV-Out 640x480 */
+ "FS453_640x480 (Composite/S-Video)",
+ 640, 480,
+ /* mode_screen */ LCD_SCREEN_SX_N(640) | LCD_SCREEN_SY_N(480),
+ /* mode_toyclksrc */ 0x00000000,
+ /* mode_backlight */ 0x00000000,
+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ focus_init_cvsv,
-+ /* device_shutdown */ focus_shutdown,
++ /* device_init */ board_au1200fb_focus_init_cvsv,
++ /* device_shutdown */ board_au1200fb_focus_shutdown,
+ },
+
-+ { /* Index 9: Focus FS453 TV-Out 640x480 */
++ { /* Index 10: Focus FS453 TV-Out 640x480 */
+ "FS453_640x480 (Component Video)",
+ 640, 480,
+ /* mode_screen */ LCD_SCREEN_SX_N(640) | LCD_SCREEN_SY_N(480),
+ /* mode_toyclksrc */ 0x00000000,
+ /* mode_backlight */ 0x00000000,
+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ focus_init_component,
-+ /* device_shutdown */ focus_shutdown,
++ /* device_init */ board_au1200fb_focus_init_component,
++ /* device_shutdown */ board_au1200fb_focus_shutdown,
+ },
+
-+ { /* Index 10: Focus FS453 TV-Out 640x480 */
++ { /* Index 11: Focus FS453 TV-Out 640x480 */
+ "FS453_640x480 (HDTV)",
+ 720, 480,
+ /* mode_screen */ LCD_SCREEN_SX_N(720) | LCD_SCREEN_SY_N(480),
+ /* mode_toyclksrc */ 0x00000000,
+ /* mode_backlight */ 0x00000000,
+ /* mode_auxpll */ 8, /* 96MHz AUXPLL */
-+ /* device_init */ focus_init_hdtv,
-+ /* device_shutdown */ focus_shutdown,
++ /* device_init */ board_au1200fb_focus_init_hdtv,
++ /* device_shutdown */ board_au1200fb_focus_shutdown,
+ },
+#endif
+};
+};
+
+
-+static int panel_init (void)
-+{
-+#if defined(CONFIG_MIPS_PB1200) || defined(CONFIG_MIPS_DB1200)
-+ /* Apply power */
-+ BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ bcsr->board |= (BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL);
-+ /*printk("panel_init(%s)\n", panel->name); */
-+#elif defined(CONFIG_MIPS_FICMMP)
-+ /*Enable data buffers*/
-+ ficmmp_config_clear(FICMMP_CONFIG_LCMDATAOUT);
-+ /*Take LCD out of reset*/
-+ ficmmp_config_set(FICMMP_CONFIG_LCMPWREN | FICMMP_CONFIG_LCMEN);
-+#endif
-+}
-+
-+static int panel_shutdown (void)
-+{
-+#if defined(CONFIG_MIPS_PB1200) || defined(CONFIG_MIPS_DB1200)
-+ /* Remove power */
-+ BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ bcsr->board &= ~(BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL);
-+ /*printk("panel_shutdown(%s)\n", panel->name);*/
-+#elif defined(CONFIG_MIPS_FICMMP)
-+ /*Disable data buffers*/
-+ ficmmp_config_set(FICMMP_CONFIG_LCMDATAOUT);
-+ /*Put LCD in reset, remove power*/
-+ ficmmp_config_clear(FICMMP_CONFIG_LCMEN | FICMMP_CONFIG_LCMPWREN);
-+#endif
-+}
-+
+static int
+winbpp (unsigned int winctrl1)
+{
+ switch (blank_mode) {
+ case VESA_NO_BLANKING:
+ /* printk("turn on panel\n"); */
-+ if (panel->device_init) panel->device_init();
-+ lcd->screen |= LCD_SCREEN_SEN;
-+ /* FIX!!! Need panel poweron callback */
++ au1200_setpanel(panel);
+ break;
+
+ case VESA_VSYNC_SUSPEND:
+ case VESA_HSYNC_SUSPEND:
+ case VESA_POWERDOWN:
+ /* printk("turn off panel\n"); */
-+ /* FIX!!! Need panel poweroff callback */
-+ if (panel->device_shutdown) panel->device_shutdown();
-+ lcd->screen &= ~LCD_SCREEN_SEN;
-+ while ((lcd->intstatus & LCD_INT_SD) == 0)
-+ ;
-+ lcd->intstatus = LCD_INT_SD;
++ au1200_setpanel(NULL);
+ break;
+ default:
+ break;
+ if (panel->device_shutdown != NULL) panel->device_shutdown();
+ }
+
++ /* Check if only needing to turn off panel */
++ if (panel == NULL) return;
++
+ panel = newpanel;
+
+ printk("Panel(%s), %dx%d\n", panel->name, panel->Xres, panel->Yres);
+ /*
+ * Setup clocking if internal LCD clock source (assumes sys_auxpll valid)
+ */
-+ /* FIX!!! if (!(panel->mode_clkcontrol & LCD_CLKCONTROL_EXT)) */
++ if (!(panel->mode_clkcontrol & LCD_CLKCONTROL_EXT))
+ {
+ uint32 sys_clksrc;
++ /* WARNING! This should really be a check since other peripherals can
++ be affected by changins sys_auxpll */
+ au_writel(panel->mode_auxpll, SYS_AUXPLL);
+ sys_clksrc = au_readl(SYS_CLKSRC) & ~0x0000001f;
+ sys_clksrc |= panel->mode_toyclksrc;
+
+int __init au1200fb_init(void)
+{
++ int num_panels = sizeof(panels)/sizeof(struct panel_settings);
+ struct au1200fb_info *fb_info;
+ struct display *disp;
+ struct au1200fb_par *par;
+ /*
+ * Get the panel information/display mode
+ */
++ if (panel_index < 0)
++ panel_index = board_au1200fb_panel();
++ if ((panel_index < 0) || (panel_index >= num_panels)) {
++ printk("ERROR: INVALID PANEL %d\n", panel_index);
++ return -EINVAL;
++ }
+ panel = &panels[panel_index];
+ win = &windows[window_index];
+
+ for(this_opt=strtok(options, ","); this_opt;
+ this_opt=strtok(NULL, ",")) {
+ if (!strncmp(this_opt, "panel:", 6)) {
-+#if defined(CONFIG_MIPS_PB1200) || defined(CONFIG_MIPS_DB1200)
-+ /* Read Pb1200 Rotary Switch S11 to obtain default panel */
-+#ifdef CONFIG_MIPS_PB1200
-+ if (!strncmp(this_opt+6, "s11", 3))
-+#endif
-+#ifdef CONFIG_MIPS_DB1200
-+ if (!strncmp(this_opt+6, "s7", 3))
-+#endif
-+ {
-+ BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR;
-+ int p;
-+
-+ p = bcsr->switches;
-+ p >>= 8;
-+ p &= 0x0F;
-+ if (p >= num_panels) p = 0;
-+ panel_index = p;
++ int i;
++ long int li;
++ char *endptr;
++ this_opt += 6;
++
++ /* Panel name can be name, "bs" for board-switch, or number/index */
++ li = simple_strtol(this_opt, &endptr, 0);
++ if (*endptr == '\0') {
++ panel_index = (int)li;
++ }
++ else if (strcmp(this_opt, "bs") == 0) {
++ panel_index = board_au1200fb_panel();
+ }
+ else
-+#elif defined(CONFIG_MIPS_FICMMP)
-+ au1xxx_gpio_tristate(6);
-+
-+ if(au1xxx_gpio_read(12) == 0)
-+ panel_index = 8;
-+ else
-+ panel_index = 7;
-+#endif
-+ /* Get the panel name, everything else if fixed */
+ for (i=0; i<num_panels; i++) {
-+ if (!strncmp(this_opt+6, panels[i].name,
-+ strlen(this_opt))) {
++ if (!strcmp(this_opt, panels[i].name)) {
+ panel_index = i;
+ break;
+ }
+
+/********************************************************************/
+#endif /* _AU1200LCD_H */
+diff -Nur linux-2.4.29/drivers/video/Config.in linux-mips/drivers/video/Config.in
+--- linux-2.4.29/drivers/video/Config.in 2004-02-18 14:36:31.000000000 +0100
++++ linux-mips/drivers/video/Config.in 2005-02-11 22:16:44.000000000 +0100
+@@ -87,8 +87,8 @@
+ if [ "$CONFIG_HP300" = "y" ]; then
+ define_bool CONFIG_FB_HP300 y
+ fi
+- if [ "$ARCH" = "alpha" ]; then
+- tristate ' TGA framebuffer support' CONFIG_FB_TGA
++ if [ "$ARCH" = "alpha" -o "$CONFIG_TC" = "y" ]; then
++ tristate ' TGA/SFB+ framebuffer support' CONFIG_FB_TGA
+ fi
+ if [ "$CONFIG_X86" = "y" ]; then
+ bool ' VESA VGA graphics console' CONFIG_FB_VESA
+@@ -121,6 +121,17 @@
+ hex ' Framebuffer Base Address' CONFIG_E1355_FB_BASE a8200000
+ fi
+ fi
++ if [ "$CONFIG_SOC_AU1100" = "y" ]; then
++ bool ' Au1100 LCD Driver' CONFIG_FB_AU1100
++ fi
++
++ if [ "$CONFIG_SOC_AU1200" = "y" ]; then
++ bool ' Au1200 LCD Driver' CONFIG_FB_AU1200
++ if [ "$CONFIG_FB_AU1200" = "y" ]; then
++ int ' Number of planes (1 to 4)' CONFIG_FB_AU1200_DEVS 1
++ fi
++ fi
++
+ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
+ if [ "$CONFIG_PCI" != "n" ]; then
+ tristate ' Matrox acceleration (EXPERIMENTAL)' CONFIG_FB_MATROX
+@@ -178,9 +189,6 @@
+ bool ' Use CRT on Pb1100 ' CONFIG_PB1500_CRT
+ bool ' Use TFT Panel on Pb1100 ' CONFIG_PB1500_TFT
+ fi
+- if [ "$CONFIG_SOC_AU1100" = "y" ]; then
+- bool ' Au1100 LCD Driver' CONFIG_FB_AU1100
+- fi
+ fi
+ fi
+ fi
diff -Nur linux-2.4.29/drivers/video/fbmem.c linux-mips/drivers/video/fbmem.c
--- linux-2.4.29/drivers/video/fbmem.c 2005-01-19 15:10:09.000000000 +0100
-+++ linux-mips/drivers/video/fbmem.c 2005-02-12 04:07:19.000000000 +0100
++++ linux-mips/drivers/video/fbmem.c 2005-02-11 22:16:44.000000000 +0100
@@ -139,6 +139,8 @@
extern int e1356fb_setup(char*);
extern int au1100fb_init(void);
+ IMS332_CTRL_A_BOOT_ENABLE_VTG);
+ printk("\n");
+}
+diff -Nur linux-2.4.29/drivers/video/Makefile linux-mips/drivers/video/Makefile
+--- linux-2.4.29/drivers/video/Makefile 2004-02-18 14:36:31.000000000 +0100
++++ linux-mips/drivers/video/Makefile 2005-02-11 22:16:44.000000000 +0100
+@@ -87,6 +87,7 @@
+ obj-$(CONFIG_FB_MAXINE) += maxinefb.o
+ obj-$(CONFIG_FB_TX3912) += tx3912fb.o
+ obj-$(CONFIG_FB_AU1100) += au1100fb.o fbgen.o
++obj-$(CONFIG_FB_AU1200) += au1200fb.o fbgen.o
+ obj-$(CONFIG_FB_IT8181) += it8181fb.o fbgen.o
+
+ subdir-$(CONFIG_STI_CONSOLE) += sti
diff -Nur linux-2.4.29/drivers/video/maxinefb.h linux-mips/drivers/video/maxinefb.h
--- linux-2.4.29/drivers/video/maxinefb.h 2003-08-25 13:44:42.000000000 +0200
+++ linux-mips/drivers/video/maxinefb.h 1970-01-01 01:00:00.000000000 +0100
+#include <linux/config.h>
+
-+#ifdef __KERNEL__
-+#define hz_to_std(a) (a)
-+#endif
++#ifdef __KERNEL__
++#define hz_to_std(a) (a)
++#endif
++
+ #define EXEC_PAGESIZE 65536
+
+ #ifndef NGROUPS
+diff -Nur linux-2.4.29/include/asm-m68k/param.h linux-mips/include/asm-m68k/param.h
+--- linux-2.4.29/include/asm-m68k/param.h 2001-01-04 22:00:55.000000000 +0100
++++ linux-mips/include/asm-m68k/param.h 2001-01-11 05:02:45.000000000 +0100
+@@ -3,6 +3,9 @@
+
+ #ifndef HZ
+ #define HZ 100
++#ifdef __KERNEL__
++#define hz_to_std(a) (a)
++#endif
+ #endif
+
+ #define EXEC_PAGESIZE 8192
+diff -Nur linux-2.4.29/include/asm-mips/au1000_gpio.h linux-mips/include/asm-mips/au1000_gpio.h
+--- linux-2.4.29/include/asm-mips/au1000_gpio.h 2002-11-29 00:53:15.000000000 +0100
++++ linux-mips/include/asm-mips/au1000_gpio.h 2005-01-30 09:01:28.000000000 +0100
+@@ -30,6 +30,13 @@
+ * 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
++/*
++ * Revision history
++ * 01/31/02 0.01 Initial release. Steve Longerbeam, MontaVista
++ * 10/12/03 0.1 Added Au1100/Au1500, GPIO2, and bit operations. K.C. Nishio, AMD
++ * 08/05/04 0.11 Added Au1550 and Au1200. K.C. Nishio
++ */
++
+ #ifndef __AU1000_GPIO_H
+ #define __AU1000_GPIO_H
+
+@@ -44,13 +51,94 @@
+ #define AU1000GPIO_TRISTATE _IOW (AU1000GPIO_IOC_MAGIC, 4, int)
+ #define AU1000GPIO_AVAIL_MASK _IOR (AU1000GPIO_IOC_MAGIC, 5, int)
+
++// bit operations
++#define AU1000GPIO_BIT_READ _IOW (AU1000GPIO_IOC_MAGIC, 6, int)
++#define AU1000GPIO_BIT_SET _IOW (AU1000GPIO_IOC_MAGIC, 7, int)
++#define AU1000GPIO_BIT_CLEAR _IOW (AU1000GPIO_IOC_MAGIC, 8, int)
++#define AU1000GPIO_BIT_TRISTATE _IOW (AU1000GPIO_IOC_MAGIC, 9, int)
++#define AU1000GPIO_BIT_INIT _IOW (AU1000GPIO_IOC_MAGIC, 10, int)
++#define AU1000GPIO_BIT_TERM _IOW (AU1000GPIO_IOC_MAGIC, 11, int)
++
++/* set this major numer same as the CRIS GPIO driver */
++#define AU1X00_GPIO_MAJOR (120)
+
- #define EXEC_PAGESIZE 65536
-
- #ifndef NGROUPS
-diff -Nur linux-2.4.29/include/asm-m68k/param.h linux-mips/include/asm-m68k/param.h
---- linux-2.4.29/include/asm-m68k/param.h 2001-01-04 22:00:55.000000000 +0100
-+++ linux-mips/include/asm-m68k/param.h 2001-01-11 05:02:45.000000000 +0100
-@@ -3,6 +3,9 @@
-
- #ifndef HZ
- #define HZ 100
-+#ifdef __KERNEL__
-+#define hz_to_std(a) (a)
++#define ENABLED_ZERO (0)
++#define ENABLED_ONE (1)
++#define ENABLED_10 (0x2)
++#define ENABLED_11 (0x3)
++#define ENABLED_111 (0x7)
++#define NOT_AVAIL (-1)
++#define AU1X00_MAX_PRIMARY_GPIO (32)
++
++#define AU1000_GPIO_MINOR_MAX AU1X00_MAX_PRIMARY_GPIO
++/* Au1100, 1500, 1550 and 1200 have the secondary GPIO block */
++#define AU1XX0_GPIO_MINOR_MAX (48)
++
++#define AU1X00_GPIO_NAME "gpio"
++
++/* GPIO pins which are not multiplexed */
++#if defined(CONFIG_SOC_AU1000)
++ #define NATIVE_GPIOPIN ((1 << 15) | (1 << 8) | (1 << 7) | (1 << 1) | (1 << 0))
++ #define NATIVE_GPIO2PIN (0)
++#elif defined(CONFIG_SOC_AU1100)
++ #define NATIVE_GPIOPIN ((1 << 23) | (1 << 22) | (1 << 21) | (1 << 20) | (1 << 19) | (1 << 18) | \
++ (1 << 17) | (1 << 16) | (1 << 7) | (1 << 1) | (1 << 0))
++ #define NATIVE_GPIO2PIN (0)
++#elif defined(CONFIG_SOC_AU1500)
++ #define NATIVE_GPIOPIN ((1 << 15) | (1 << 8) | (1 << 7) | (1 << 1) | (1 << 0))
++ /* exclude the PCI reset output signal: GPIO[200], DMA_REQ2 and DMA_REQ3 */
++ #define NATIVE_GPIO2PIN (0xfffe & ~((1 << 9) | (1 << 8)))
++#elif defined(CONFIG_SOC_AU1550)
++ #define NATIVE_GPIOPIN ((1 << 15) | (1 << 8) | (1 << 7) | (1 << 6) | (1 << 1) | (1 << 0))
++ /* please refere Au1550 Data Book, chapter 15 */
++ #define NATIVE_GPIO2PIN (1 << 5)
++#elif defined(CONFIG_SOC_AU1200)
++ #define NATIVE_GPIOPIN ((1 << 7) | (1 << 5))
++ #define NATIVE_GPIO2PIN (0)
+#endif
++
++/* minor as u32 */
++#define MINOR_TO_GPIOPIN(minor) ((minor < AU1X00_MAX_PRIMARY_GPIO) ? minor : (minor - AU1X00_MAX_PRIMARY_GPIO))
++#define IS_PRIMARY_GPIOPIN(minor) ((minor < AU1X00_MAX_PRIMARY_GPIO) ? 1 : 0)
++
++/*
++ * pin to minor mapping.
++ * GPIO0-GPIO31, minor=0-31.
++ * GPIO200-GPIO215, minor=32-47.
++ */
++typedef struct _au1x00_gpio_bit_ctl {
++ int direction; // The direction of this GPIO pin. 0: IN, 1: OUT.
++ int data; // Pin output when itized (0/1), or at the term. 0/1/-1 (tristate).
++} au1x00_gpio_bit_ctl;
++
++typedef struct _au1x00_gpio_driver {
++ const char *driver_name;
++ const char *name;
++ int name_base; /* offset of printed name */
++ short major; /* major device number */
++ short minor_start; /* start of minor device number*/
++ short num; /* number of devices */
++} au1x00_gpio_driver;
++
+ #ifdef __KERNEL__
+-extern u32 get_au1000_avail_gpio_mask(void);
+-extern int au1000gpio_tristate(u32 data);
+-extern int au1000gpio_in(u32 *data);
+-extern int au1000gpio_set(u32 data);
+-extern int au1000gpio_clear(u32 data);
+-extern int au1000gpio_out(u32 data);
++extern u32 get_au1000_avail_gpio_mask(u32 *avail_gpio2);
++extern int au1000gpio_tristate(u32 minor, u32 data);
++extern int au1000gpio_in(u32 minor, u32 *data);
++extern int au1000gpio_set(u32 minor, u32 data);
++extern int au1000gpio_clear(u32 minor, u32 data);
++extern int au1000gpio_out(u32 minor, u32 data);
++extern int au1000gpio_bit_read(u32 minor, u32 *read_data);
++extern int au1000gpio_bit_set(u32 minor);
++extern int au1000gpio_bit_clear(u32 minor);
++extern int au1000gpio_bit_tristate(u32 minor);
++extern int check_minor_to_gpio(u32 minor);
++extern int au1000gpio_bit_init(u32 minor, au1x00_gpio_bit_ctl *bit_opt);
++extern int au1000gpio_bit_term(u32 minor, au1x00_gpio_bit_ctl *bit_opt);
++
++extern void gpio_register_devfs (au1x00_gpio_driver *driver, unsigned int flags, unsigned minor);
++extern void gpio_unregister_devfs (au1x00_gpio_driver *driver, unsigned minor);
++extern int gpio_register_driver(au1x00_gpio_driver *driver);
++extern int gpio_unregister_driver(au1x00_gpio_driver *driver);
#endif
- #define EXEC_PAGESIZE 8192
+ #endif
diff -Nur linux-2.4.29/include/asm-mips/au1000.h linux-mips/include/asm-mips/au1000.h
--- linux-2.4.29/include/asm-mips/au1000.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-mips/include/asm-mips/au1000.h 2005-01-31 12:59:48.000000000 +0100
++++ linux-mips/include/asm-mips/au1000.h 2005-01-30 09:01:28.000000000 +0100
@@ -160,28 +160,356 @@
#define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4 | IE_IRQ5)
#endif
+
+#endif
+
-diff -Nur linux-2.4.29/include/asm-mips/au1000_gpio.h linux-mips/include/asm-mips/au1000_gpio.h
---- linux-2.4.29/include/asm-mips/au1000_gpio.h 2002-11-29 00:53:15.000000000 +0100
-+++ linux-mips/include/asm-mips/au1000_gpio.h 2005-01-31 12:59:48.000000000 +0100
-@@ -30,6 +30,13 @@
- * 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-+/*
-+ * Revision history
-+ * 01/31/02 0.01 Initial release. Steve Longerbeam, MontaVista
-+ * 10/12/03 0.1 Added Au1100/Au1500, GPIO2, and bit operations. K.C. Nishio, AMD
-+ * 08/05/04 0.11 Added Au1550 and Au1200. K.C. Nishio
-+ */
-+
- #ifndef __AU1000_GPIO_H
- #define __AU1000_GPIO_H
-
-@@ -44,13 +51,94 @@
- #define AU1000GPIO_TRISTATE _IOW (AU1000GPIO_IOC_MAGIC, 4, int)
- #define AU1000GPIO_AVAIL_MASK _IOR (AU1000GPIO_IOC_MAGIC, 5, int)
-
-+// bit operations
-+#define AU1000GPIO_BIT_READ _IOW (AU1000GPIO_IOC_MAGIC, 6, int)
-+#define AU1000GPIO_BIT_SET _IOW (AU1000GPIO_IOC_MAGIC, 7, int)
-+#define AU1000GPIO_BIT_CLEAR _IOW (AU1000GPIO_IOC_MAGIC, 8, int)
-+#define AU1000GPIO_BIT_TRISTATE _IOW (AU1000GPIO_IOC_MAGIC, 9, int)
-+#define AU1000GPIO_BIT_INIT _IOW (AU1000GPIO_IOC_MAGIC, 10, int)
-+#define AU1000GPIO_BIT_TERM _IOW (AU1000GPIO_IOC_MAGIC, 11, int)
-+
-+/* set this major numer same as the CRIS GPIO driver */
-+#define AU1X00_GPIO_MAJOR (120)
-+
-+#define ENABLED_ZERO (0)
-+#define ENABLED_ONE (1)
-+#define ENABLED_10 (0x2)
-+#define ENABLED_11 (0x3)
-+#define ENABLED_111 (0x7)
-+#define NOT_AVAIL (-1)
-+#define AU1X00_MAX_PRIMARY_GPIO (32)
-+
-+#define AU1000_GPIO_MINOR_MAX AU1X00_MAX_PRIMARY_GPIO
-+/* Au1100, 1500, 1550 and 1200 have the secondary GPIO block */
-+#define AU1XX0_GPIO_MINOR_MAX (48)
-+
-+#define AU1X00_GPIO_NAME "gpio"
-+
-+/* GPIO pins which are not multiplexed */
-+#if defined(CONFIG_SOC_AU1000)
-+ #define NATIVE_GPIOPIN ((1 << 15) | (1 << 8) | (1 << 7) | (1 << 1) | (1 << 0))
-+ #define NATIVE_GPIO2PIN (0)
-+#elif defined(CONFIG_SOC_AU1100)
-+ #define NATIVE_GPIOPIN ((1 << 23) | (1 << 22) | (1 << 21) | (1 << 20) | (1 << 19) | (1 << 18) | \
-+ (1 << 17) | (1 << 16) | (1 << 7) | (1 << 1) | (1 << 0))
-+ #define NATIVE_GPIO2PIN (0)
-+#elif defined(CONFIG_SOC_AU1500)
-+ #define NATIVE_GPIOPIN ((1 << 15) | (1 << 8) | (1 << 7) | (1 << 1) | (1 << 0))
-+ /* exclude the PCI reset output signal: GPIO[200], DMA_REQ2 and DMA_REQ3 */
-+ #define NATIVE_GPIO2PIN (0xfffe & ~((1 << 9) | (1 << 8)))
-+#elif defined(CONFIG_SOC_AU1550)
-+ #define NATIVE_GPIOPIN ((1 << 15) | (1 << 8) | (1 << 7) | (1 << 6) | (1 << 1) | (1 << 0))
-+ /* please refere Au1550 Data Book, chapter 15 */
-+ #define NATIVE_GPIO2PIN (1 << 5)
-+#elif defined(CONFIG_SOC_AU1200)
-+ #define NATIVE_GPIOPIN ((1 << 7) | (1 << 5))
-+ #define NATIVE_GPIO2PIN (0)
-+#endif
-+
-+/* minor as u32 */
-+#define MINOR_TO_GPIOPIN(minor) ((minor < AU1X00_MAX_PRIMARY_GPIO) ? minor : (minor - AU1X00_MAX_PRIMARY_GPIO))
-+#define IS_PRIMARY_GPIOPIN(minor) ((minor < AU1X00_MAX_PRIMARY_GPIO) ? 1 : 0)
-+
-+/*
-+ * pin to minor mapping.
-+ * GPIO0-GPIO31, minor=0-31.
-+ * GPIO200-GPIO215, minor=32-47.
-+ */
-+typedef struct _au1x00_gpio_bit_ctl {
-+ int direction; // The direction of this GPIO pin. 0: IN, 1: OUT.
-+ int data; // Pin output when itized (0/1), or at the term. 0/1/-1 (tristate).
-+} au1x00_gpio_bit_ctl;
-+
-+typedef struct _au1x00_gpio_driver {
-+ const char *driver_name;
-+ const char *name;
-+ int name_base; /* offset of printed name */
-+ short major; /* major device number */
-+ short minor_start; /* start of minor device number*/
-+ short num; /* number of devices */
-+} au1x00_gpio_driver;
-+
- #ifdef __KERNEL__
--extern u32 get_au1000_avail_gpio_mask(void);
--extern int au1000gpio_tristate(u32 data);
--extern int au1000gpio_in(u32 *data);
--extern int au1000gpio_set(u32 data);
--extern int au1000gpio_clear(u32 data);
--extern int au1000gpio_out(u32 data);
-+extern u32 get_au1000_avail_gpio_mask(u32 *avail_gpio2);
-+extern int au1000gpio_tristate(u32 minor, u32 data);
-+extern int au1000gpio_in(u32 minor, u32 *data);
-+extern int au1000gpio_set(u32 minor, u32 data);
-+extern int au1000gpio_clear(u32 minor, u32 data);
-+extern int au1000gpio_out(u32 minor, u32 data);
-+extern int au1000gpio_bit_read(u32 minor, u32 *read_data);
-+extern int au1000gpio_bit_set(u32 minor);
-+extern int au1000gpio_bit_clear(u32 minor);
-+extern int au1000gpio_bit_tristate(u32 minor);
-+extern int check_minor_to_gpio(u32 minor);
-+extern int au1000gpio_bit_init(u32 minor, au1x00_gpio_bit_ctl *bit_opt);
-+extern int au1000gpio_bit_term(u32 minor, au1x00_gpio_bit_ctl *bit_opt);
-+
-+extern void gpio_register_devfs (au1x00_gpio_driver *driver, unsigned int flags, unsigned minor);
-+extern void gpio_unregister_devfs (au1x00_gpio_driver *driver, unsigned minor);
-+extern int gpio_register_driver(au1x00_gpio_driver *driver);
-+extern int gpio_unregister_driver(au1x00_gpio_driver *driver);
- #endif
-
- #endif
diff -Nur linux-2.4.29/include/asm-mips/au1000_pcmcia.h linux-mips/include/asm-mips/au1000_pcmcia.h
--- linux-2.4.29/include/asm-mips/au1000_pcmcia.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-mips/include/asm-mips/au1000_pcmcia.h 2005-01-31 12:59:48.000000000 +0100
++++ linux-mips/include/asm-mips/au1000_pcmcia.h 2005-01-30 09:01:28.000000000 +0100
@@ -38,16 +38,41 @@
#define AU1X_SOCK0_PHYS_MEM 0xF80000000
struct pcmcia_state {
diff -Nur linux-2.4.29/include/asm-mips/au1100_mmc.h linux-mips/include/asm-mips/au1100_mmc.h
--- linux-2.4.29/include/asm-mips/au1100_mmc.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-mips/include/asm-mips/au1100_mmc.h 2005-01-31 12:59:48.000000000 +0100
++++ linux-mips/include/asm-mips/au1100_mmc.h 2005-01-30 09:01:28.000000000 +0100
@@ -39,16 +39,22 @@
#define __ASM_AU1100_MMC_H
diff -Nur linux-2.4.29/include/asm-mips/au1xxx_dbdma.h linux-mips/include/asm-mips/au1xxx_dbdma.h
--- linux-2.4.29/include/asm-mips/au1xxx_dbdma.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-mips/include/asm-mips/au1xxx_dbdma.h 2005-01-31 12:59:48.000000000 +0100
++++ linux-mips/include/asm-mips/au1xxx_dbdma.h 2005-01-30 09:01:28.000000000 +0100
@@ -43,7 +43,7 @@
#define DDMA_GLOBAL_BASE 0xb4003000
#define DDMA_CHANNEL_BASE 0xb4002000
+#endif //__AU1XXX_GPIO_H
diff -Nur linux-2.4.29/include/asm-mips/au1xxx_psc.h linux-mips/include/asm-mips/au1xxx_psc.h
--- linux-2.4.29/include/asm-mips/au1xxx_psc.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-mips/include/asm-mips/au1xxx_psc.h 2005-01-31 12:59:49.000000000 +0100
++++ linux-mips/include/asm-mips/au1xxx_psc.h 2005-01-30 09:01:28.000000000 +0100
@@ -41,6 +41,11 @@
#define PSC3_BASE_ADDR 0xb0d00000
#endif
#define PSC_I2SCFG_DIV_MASK (3 << 13)
diff -Nur linux-2.4.29/include/asm-mips/bootinfo.h linux-mips/include/asm-mips/bootinfo.h
--- linux-2.4.29/include/asm-mips/bootinfo.h 2004-02-18 14:36:32.000000000 +0100
-+++ linux-mips/include/asm-mips/bootinfo.h 2005-01-31 12:59:49.000000000 +0100
++++ linux-mips/include/asm-mips/bootinfo.h 2005-01-30 09:01:28.000000000 +0100
@@ -180,6 +180,9 @@
#define MACH_MTX1 7 /* 4G MTX-1 Au1500-based board */
#define MACH_CSB250 8 /* Cogent Au1500 */
+
diff -Nur linux-2.4.29/include/asm-mips/db1x00.h linux-mips/include/asm-mips/db1x00.h
--- linux-2.4.29/include/asm-mips/db1x00.h 2005-01-19 15:10:11.000000000 +0100
-+++ linux-mips/include/asm-mips/db1x00.h 2005-01-31 12:59:49.000000000 +0100
++++ linux-mips/include/asm-mips/db1x00.h 2005-01-30 09:06:19.000000000 +0100
@@ -1,5 +1,5 @@
/*
- * AMD Alchemy DB1x00 Reference Boards
#endif /* _ASM_HAZARDS_H */
diff -Nur linux-2.4.29/include/asm-mips/mipsregs.h linux-mips/include/asm-mips/mipsregs.h
--- linux-2.4.29/include/asm-mips/mipsregs.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-mips/include/asm-mips/mipsregs.h 2005-02-12 04:07:58.000000000 +0100
++++ linux-mips/include/asm-mips/mipsregs.h 2005-02-06 22:24:22.000000000 +0100
@@ -757,10 +757,18 @@
#define read_c0_config1() __read_32bit_c0_register($16, 1)
#define read_c0_config2() __read_32bit_c0_register($16, 2)
diff -Nur linux-2.4.29/include/asm-mips/pb1100.h linux-mips/include/asm-mips/pb1100.h
--- linux-2.4.29/include/asm-mips/pb1100.h 2003-08-25 13:44:44.000000000 +0200
-+++ linux-mips/include/asm-mips/pb1100.h 2005-01-31 12:59:49.000000000 +0100
++++ linux-mips/include/asm-mips/pb1100.h 2005-01-30 09:10:29.000000000 +0100
@@ -1,5 +1,5 @@
/*
- * Alchemy Semi PB1100 Referrence Board
+
diff -Nur linux-2.4.29/include/asm-mips/pb1550.h linux-mips/include/asm-mips/pb1550.h
--- linux-2.4.29/include/asm-mips/pb1550.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-mips/include/asm-mips/pb1550.h 2005-01-31 12:59:49.000000000 +0100
++++ linux-mips/include/asm-mips/pb1550.h 2005-01-30 09:01:28.000000000 +0100
@@ -30,13 +30,11 @@
#define DBDMA_AC97_TX_CHAN DSCR_CMD0_PSC1_TX
#endif /* _ASM_HAZARDS_H */
diff -Nur linux-2.4.29/include/asm-mips64/mipsregs.h linux-mips/include/asm-mips64/mipsregs.h
--- linux-2.4.29/include/asm-mips64/mipsregs.h 2005-01-19 15:10:12.000000000 +0100
-+++ linux-mips/include/asm-mips64/mipsregs.h 2005-02-12 04:08:02.000000000 +0100
++++ linux-mips/include/asm-mips64/mipsregs.h 2005-02-06 22:24:22.000000000 +0100
@@ -757,10 +757,18 @@
#define read_c0_config1() __read_32bit_c0_register($16, 1)
#define read_c0_config2() __read_32bit_c0_register($16, 2)
include $(TOPDIR)/drivers/net/Makefile.lib
include $(TOPDIR)/drivers/usb/Makefile.lib
include $(TOPDIR)/drivers/bluetooth/Makefile.lib
+diff -Nur linux-2.4.29/Makefile linux-mips/Makefile
+--- linux-2.4.29/Makefile 2005-01-19 15:10:14.000000000 +0100
++++ linux-mips/Makefile 2005-01-20 03:19:21.000000000 +0100
+@@ -5,7 +5,7 @@
+
+ KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
+
+-ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
++ARCH = mips
+ KERNELPATH=kernel-$(shell echo $(KERNELRELEASE) | sed -e "s/-//g")
+
+ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
+@@ -462,10 +462,11 @@
+ $(MAKE) -C Documentation/DocBook mrproper
+
+ distclean: mrproper
+- rm -f core `find . \( -not -type d \) -and \
+- \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
+- -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
+- -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -type f -print` TAGS tags
++ find . \( -not -type d \) -and \
++ \( -name core -o -name '*.orig' -o -name '*.rej' \
++ -o -name '*~' -o -name '*.bak' -o -name '#*#' \
++ -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \
++ -o -name TAGS -o -name tags \) -print | env -i xargs rm -f
+
+ backup: mrproper
+ cd .. && tar cf - linux/ | gzip -9 > backup.gz
+@@ -492,7 +493,7 @@
+ $(MAKE) -C Documentation/DocBook man
+
+ sums:
+- find . -type f -print | sort | xargs sum > .SUMS
++ find . -type f -print | sort | env -i xargs sum > .SUMS
+
+ dep-files: scripts/mkdep archdep include/linux/version.h
+ rm -f .depend .hdepend