Hi Ralf, this patch gets the code into the shape where I get up into userspace - on the boards with flash I can login and the system mostly works. On the boards with disks I cant login and I get a lot of exceptions on startup but it looks close to working. The pcnet32 patch is necessary for LASAT and I have not been able to get a response from anyone with network code responsibility to even comment the patch. Surely this patch which is necessary for a platform can be accepted via linux-mips (you) when you merge with Linus? /Brian Index: arch/mips/Kconfig-shared =================================================================== RCS file: /cvs/linux/arch/mips/Kconfig-shared,v retrieving revision 1.55 diff -u -r1.55 Kconfig-shared --- arch/mips/Kconfig-shared 9 Jul 2003 18:13:02 -0000 1.55 +++ arch/mips/Kconfig-shared 10 Jul 2003 18:21:41 -0000 @@ -107,14 +107,6 @@ config LASAT bool "Support for LASAT Networks platforms" -config LASAT_100 - bool "Support for LASAT Networks 100 series" - depends on LASAT - -config LASAT_200 - bool "Support for LASAT Networks 200 series" - depends on LASAT - config PICVUE tristate "PICVUE LCD display driver" depends on LASAT Index: arch/mips/lasat/prom.c =================================================================== RCS file: /cvs/linux/arch/mips/lasat/prom.c,v retrieving revision 1.4 diff -u -r1.4 prom.c --- arch/mips/lasat/prom.c 7 Apr 2003 00:17:52 -0000 1.4 +++ arch/mips/lasat/prom.c 8 Jul 2003 18:54:58 -0000 @@ -76,7 +76,7 @@ { u32 version = *(u32 *)(RESET_VECTOR + 0x90); - if (version == 306) { + if (version >= 307) { prom_display = (void *)PROM_DISPLAY_ADDR; prom_putc = (void *)PROM_PUTC_ADDR; prom_printf = real_prom_printf; Index: arch/mips/lasat/setup.c =================================================================== RCS file: /cvs/linux/arch/mips/lasat/setup.c,v retrieving revision 1.7 diff -u -r1.7 setup.c --- arch/mips/lasat/setup.c 5 Jun 2003 18:23:59 -0000 1.7 +++ arch/mips/lasat/setup.c 10 Jul 2003 18:04:46 -0000 @@ -36,7 +36,9 @@ #include <asm/irq.h> #include <asm/lasat/lasat.h> +#include <linux/tty.h> #include <linux/serial.h> +#include <linux/serial_core.h> #include <asm/serial.h> #include <asm/lasat/serial.h> @@ -150,28 +152,28 @@ ll_timer_interrupt(MIPS_CPU_TIMER_IRQ, regs); } -//#define DYNAMIC_SERIAL_INIT +#define DYNAMIC_SERIAL_INIT #ifdef DYNAMIC_SERIAL_INIT void __init serial_init(void) { -#ifdef CONFIG_SERIAL - struct serial_struct s; +#ifdef CONFIG_SERIAL_8250 + struct uart_port s; memset(&s, 0, sizeof(s)); - s.flags = STD_COM_FLAGS; - s.io_type = SERIAL_IO_MEM; + s.flags = STD_COM_FLAGS|UPF_RESOURCES; + s.iotype = SERIAL_IO_MEM; if (mips_machtype == MACH_LASAT_100) { - s.baud_base = LASAT_BASE_BAUD_100; + s.uartclk = LASAT_BASE_BAUD_100 * 16; s.irq = LASATINT_UART_100; - s.iomem_reg_shift = LASAT_UART_REGS_SHIFT_100; - s.iomem_base = (u8 *)KSEG1ADDR(LASAT_UART_REGS_BASE_100); + s.regshift = LASAT_UART_REGS_SHIFT_100; + s.membase = (char *)KSEG1ADDR(LASAT_UART_REGS_BASE_100); } else { - s.baud_base = LASAT_BASE_BAUD_200; + s.uartclk = LASAT_BASE_BAUD_200 * 16; s.irq = LASATINT_UART_200; - s.iomem_reg_shift = LASAT_UART_REGS_SHIFT_200; - s.iomem_base = (u8 *)KSEG1ADDR(LASAT_UART_REGS_BASE_200); + s.regshift = LASAT_UART_REGS_SHIFT_200; + s.membase = (char *)KSEG1ADDR(LASAT_UART_REGS_BASE_200); } if (early_serial_setup(&s) != 0) Index: arch/mips/pci/Makefile =================================================================== RCS file: /cvs/linux/arch/mips/pci/Makefile,v retrieving revision 1.1 diff -u -r1.1 Makefile --- arch/mips/pci/Makefile 13 Jun 2003 13:58:31 -0000 1.1 +++ arch/mips/pci/Makefile 22 Jun 2003 11:14:46 -0000 @@ -12,7 +12,7 @@ obj-$(CONFIG_DDB5477) += pci-ddb5477.o ops-ddb5477.o obj-$(CONFIG_HP_LASERJET) += pci-hplj.o obj-$(CONFIG_ITE_BOARD_GEN) += ops-it8172.o -obj-$(CONFIG_LASAT) += pci-lasat.o +obj-$(CONFIG_LASAT) += pci-lasat.o common.o obj-$(CONFIG_MIPS_BOARDS_GEN) += pci-mips.o obj-$(CONFIG_MIPS_COBALT) += pci-cobalt.o obj-$(CONFIG_MIPS_EV64120) += ops-ev64120.o Index: arch/mips/pci/common.c =================================================================== RCS file: /cvs/linux/arch/mips/pci/common.c,v retrieving revision 1.2 diff -u -r1.2 common.c --- arch/mips/pci/common.c 13 Jun 2003 14:19:56 -0000 1.2 +++ arch/mips/pci/common.c 22 Jun 2003 11:18:07 -0000 @@ -1,6 +1,9 @@ +#include <linux/config.h> +#include <linux/init.h> +#include <linux/pci.h> + void __init pcibios_fixup_bus(struct pci_bus *b) { - Dprintk("pcibios_fixup_bus()\n"); } static int pcibios_enable_resources(struct pci_dev *dev, int mask) Index: arch/mips/pci/pci-lasat.c =================================================================== RCS file: /cvs/linux/arch/mips/pci/pci-lasat.c,v retrieving revision 1.3 diff -u -r1.3 pci-lasat.c --- arch/mips/pci/pci-lasat.c 22 Jun 2003 02:19:24 -0000 1.3 +++ arch/mips/pci/pci-lasat.c 22 Jun 2003 11:20:18 -0000 @@ -239,7 +239,4 @@ return 0; } -unsigned __init int pcibios_assign_all_busses(void) -{ - return 1; -} +subsys_initcall(pcibios_init); Index: drivers/net/pcnet32.c =================================================================== RCS file: /cvs/linux/drivers/net/pcnet32.c,v retrieving revision 1.51 diff -u -r1.51 pcnet32.c --- drivers/net/pcnet32.c 23 Jun 2003 01:23:05 -0000 1.51 +++ drivers/net/pcnet32.c 23 Jun 2003 19:18:33 -0000 @@ -769,9 +769,12 @@ if (irq_line) { dev->irq = irq_line; } - + +#ifndef CONFIG_LASAT if (dev->irq >= 2) +#endif printk(" assigned IRQ %d.\n", dev->irq); +#ifndef CONFIG_LASAT else { unsigned long irq_mask = probe_irq_on(); @@ -794,6 +797,7 @@ return -ENODEV; } } +#endif /* Set the mii phy_id so that we can query the link state */ if (lp->mii) Index: include/asm-mips/serial.h =================================================================== RCS file: /cvs/linux/include/asm-mips/serial.h,v retrieving revision 1.39 diff -u -r1.39 serial.h --- include/asm-mips/serial.h 15 Jun 2003 23:42:07 -0000 1.39 +++ include/asm-mips/serial.h 10 Jul 2003 18:21:22 -0000 @@ -156,13 +156,11 @@ #endif #ifdef CONFIG_LASAT -#include <asm/lasat/serial.h> -#define LASAT_SERIAL_PORT_DEFNS \ - { .baud_base = LASAT_BASE_BAUD, .irq = LASATINT_UART, \ - .flags = STD_COM_FLAGS, \ - .port = LASAT_UART_REGS_BASE, /* Only for display */ \ - .iomem_base = (u8 *)KSEG1ADDR(LASAT_UART_REGS_BASE), \ - .iomem_reg_shift = LASAT_UART_REGS_SHIFT, .io_type = SERIAL_IO_MEM }, +/* This dummy definition allocates one element in the SERIAL_PORT_DFNS + * list below. This element is filled out by the the code in serial_init() + * in arch/mips/lasat/setup.c which autoselects the configuration based + * on machine type. */ +#define LASAT_SERIAL_PORT_DEFNS { }, #else #define LASAT_SERIAL_PORT_DEFNS #endif Index: include/asm-mips/lasat/serial.h =================================================================== RCS file: /cvs/linux/include/asm-mips/lasat/serial.h,v retrieving revision 1.2 diff -u -r1.2 serial.h --- include/asm-mips/lasat/serial.h 25 Feb 2003 22:39:02 -0000 1.2 +++ include/asm-mips/lasat/serial.h 10 Jul 2003 18:08:18 -0000 @@ -11,18 +11,3 @@ #define LASAT_UART_REGS_BASE_200 (Vrc5074_PHYS_BASE + 0x0300) #define LASAT_UART_REGS_SHIFT_200 3 #define LASATINT_UART_200 13 - -#if defined(CONFIG_LASAT_100) -#define LASAT_BASE_BAUD LASAT_BASE_BAUD_200 -#define LASAT_UART_REGS_BASE LASAT_UART_REGS_BASE_200 -#define LASAT_UART_REGS_SHIFT LASAT_UART_REGS_SHIFT_200 -#define LASATINT_UART LASAT_UART_REGS_SHIFT_200 -#elif defined(CONFIG_LASAT_200) -#define LASAT_BASE_BAUD LASAT_BASE_BAUD_200 -#define LASAT_UART_REGS_BASE LASAT_UART_REGS_BASE_200 -#define LASAT_UART_REGS_SHIFT LASAT_UART_REGS_SHIFT_200 -#define LASATINT_UART LASAT_UART_REGS_SHIFT_200 -#else -#error Select a Lasat board in the configuration menu -#endif -