hdc driver (usb) oopses, so disable (or fix ;-)) it.

Signed-off-by: Domen Puncer <domen@coderock.org>

diff -pruNX dontdiff linux-mips-2.6.15-adm/arch/mips/Kconfig linux-mips-2.6.15-adm_02/arch/mips/Kconfig
--- linux-mips-2.6.15-adm/arch/mips/Kconfig	2006-01-22 12:36:46.000000000 +0100
+++ linux-mips-2.6.15-adm_02/arch/mips/Kconfig	2006-01-22 12:37:02.000000000 +0100
@@ -16,6 +16,7 @@ config MIPS_ADM5120
 	bool "Support for ADM5120 SoC"
 	select DMA_NONCOHERENT
 	select HW_HAS_PCI
+	select SYS_HAS_CPU_MIPS32_R1
 	select SYS_SUPPORTS_LITTLE_ENDIAN
 	select SYS_SUPPORTS_32BIT_KERNEL
 
diff -pruNX dontdiff linux-mips-2.6.15-adm/arch/mips/adm5120/setup.c linux-mips-2.6.15-adm_02/arch/mips/adm5120/setup.c
--- linux-mips-2.6.15-adm/arch/mips/adm5120/setup.c	2006-01-22 12:36:46.000000000 +0100
+++ linux-mips-2.6.15-adm_02/arch/mips/adm5120/setup.c	2006-01-22 12:37:02.000000000 +0100
@@ -8,6 +8,7 @@
 #include <linux/config.h>
 #include <linux/init.h>
 #include <linux/device.h>
+#include <linux/platform_device.h>
 
 #include <asm/reboot.h>
 #include <asm/io.h>
@@ -80,9 +81,9 @@ void __init mips_timer_setup(struct irqa
 	set_c0_status(ALLINTS);
 }
 
-static int __init adm5120_setup(void)
+void __init plat_setup(void)
 {
-	printk("ADM5120 board setup\n");
+	printk(KERN_INFO "ADM5120 board setup\n");
 
 	board_time_init = mips_time_init;
 	board_timer_setup = mips_timer_setup;
@@ -92,12 +93,8 @@ static int __init adm5120_setup(void)
 	_machine_power_off = adm5120_power_off;
 
 	set_io_port_base(KSEG1);
-
-	return 0;
 }
 
-early_initcall(adm5120_setup);
-
 const char *get_system_type(void)
 {
 	return "ADM5120 Board";
diff -pruNX dontdiff linux-mips-2.6.15-adm/arch/mips/pci/pci-adm5120.c linux-mips-2.6.15-adm_02/arch/mips/pci/pci-adm5120.c
--- linux-mips-2.6.15-adm/arch/mips/pci/pci-adm5120.c	2006-01-22 12:36:46.000000000 +0100
+++ linux-mips-2.6.15-adm_02/arch/mips/pci/pci-adm5120.c	2006-01-22 12:37:02.000000000 +0100
@@ -90,4 +90,4 @@ static int __init adm5120_pci_setup(void
 	return 0;
 }
 
-early_initcall(adm5120_pci_setup);
+subsys_initcall(adm5120_pci_setup);
diff -pruNX dontdiff linux-mips-2.6.15-adm/drivers/serial/adm5120_uart.c linux-mips-2.6.15-adm_02/drivers/serial/adm5120_uart.c
--- linux-mips-2.6.15-adm/drivers/serial/adm5120_uart.c	2006-01-22 12:36:46.000000000 +0100
+++ linux-mips-2.6.15-adm_02/drivers/serial/adm5120_uart.c	2006-01-22 12:37:02.000000000 +0100
@@ -75,7 +75,7 @@
 #define ADM5120_UART_TIS		0x04
 #define ADM5120_UART_RTIS		0x08
 
-static void adm5120ser_stop_tx(struct uart_port *port, unsigned int tty_stop)
+static void adm5120ser_stop_tx(struct uart_port *port)
 {
 	ADM5120_UART_REG(port->iobase, ADM5120_UART_CR) &= ~ADM5120_UART_TIE;
 }
@@ -174,7 +174,7 @@ static void adm5120ser_irq_tx(struct uar
 		return;
 	}
 	if (uart_circ_empty(xmit) || uart_tx_stopped(port)) {
-		adm5120ser_stop_tx(port, 0);
+		adm5120ser_stop_tx(port);
 		return;
 	}
 
@@ -192,7 +192,7 @@ static void adm5120ser_irq_tx(struct uar
 		uart_write_wakeup(port);
 
 	if (uart_circ_empty(xmit))
-		adm5120ser_stop_tx(port, 0);
+		adm5120ser_stop_tx(port);
 }
 
 static void adm5120ser_irq_modem(struct uart_port *port)
@@ -254,7 +254,7 @@ static unsigned int adm5120ser_get_mctrl
 	return result;
 }
 
-static void adm5120ser_start_tx(struct uart_port *port, unsigned int tty_start)
+static void adm5120ser_start_tx(struct uart_port *port)
 {
 	ADM5120_UART_REG(port->iobase, ADM5120_UART_CR) |= ADM5120_UART_TIE;
 }
diff -pruNX dontdiff linux-mips-2.6.15-adm/drivers/usb/host/adm5120-hcd.c linux-mips-2.6.15-adm_02/drivers/usb/host/adm5120-hcd.c
--- linux-mips-2.6.15-adm/drivers/usb/host/adm5120-hcd.c	2006-01-22 12:36:46.000000000 +0100
+++ linux-mips-2.6.15-adm_02/drivers/usb/host/adm5120-hcd.c	2006-01-22 12:37:02.000000000 +0100
@@ -14,6 +14,7 @@
 #include <linux/errno.h>
 #include <linux/interrupt.h>
 #include <linux/usb.h>
+#include <linux/platform_device.h>
 
 #include "../core/hcd.h"
 
@@ -299,9 +300,8 @@ static void admhcd_ed_start(struct admhc
 	ahcd->dma_en |= ADMHCD_DMA_EN;
 }
 
-static irqreturn_t adm5120hcd_irq(int irq, void *ptr, struct pt_regs *regs)
+static irqreturn_t adm5120hcd_irq(struct usb_hcd *hcd, struct pt_regs *regs)
 {
-	struct usb_hcd *hcd = (struct usb_hcd *)ptr;
 	struct admhcd *ahcd = hcd_to_admhcd(hcd);
 	u32 intstatus;
 
@@ -347,7 +347,7 @@ static irqreturn_t adm5120hcd_irq(int ir
 }
 
 static int admhcd_urb_enqueue(struct usb_hcd *hcd, struct usb_host_endpoint *ep,
-    struct urb *urb, int mem_flags)
+    struct urb *urb, gfp_t mem_flags)
 {
 	struct admhcd *ahcd = hcd_to_admhcd(hcd);
 	struct admhcd_ed *ed;
@@ -659,6 +659,7 @@ err:
 static struct hc_driver adm5120_hc_driver = {
 	.description =		hcd_name,
 	.hcd_priv_size =	sizeof(struct admhcd),
+	.irq =			adm5120hcd_irq,
 	.flags =		HCD_USB11,
 	.urb_enqueue =		admhcd_urb_enqueue,
 	.urb_dequeue =		admhcd_urb_dequeue,
@@ -673,7 +674,6 @@ static int __init adm5120hcd_probe(struc
 	struct platform_device *pdev = to_platform_device(dev);
 	struct usb_hcd *hcd;
 	struct admhcd *ahcd;
-	struct usb_device *udev;
 	int err = 0;
 
 	if (!request_mem_region(pdev->resource[0].start,
@@ -696,17 +696,6 @@ static int __init adm5120hcd_probe(struc
 	hcd->product_desc = hcd_name;
 	ahcd->base = pdev->resource[0].start;
 
-	if (request_irq(pdev->resource[1].start, adm5120hcd_irq, 0, hcd_name,
-	    hcd)) {
-		dev_err(dev, "couldn't request irq\n");
-		err = -EBUSY;
-		goto out_hcd;
-	}
-
-	err = usb_register_bus(&hcd->self);
-	if (err < 0)
-		goto out_irq;
-
 	spin_lock_init(&ahcd->lock);
 
 	admhcd_reg_set(ahcd, ADMHCD_REG_INTENABLE, 0);
@@ -726,35 +715,16 @@ static int __init adm5120hcd_probe(struc
 	admhcd_reg_set(ahcd, ADMHCD_REG_RHDESCR, ADMHCD_NPS | ADMHCD_LPSC);
 	admhcd_reg_set(ahcd, ADMHCD_REG_HOSTCONTROL, ADMHCD_STATE_OP);
 
-	udev = usb_alloc_dev(NULL, &hcd->self, 0);
-	if (!udev) {
-		err = -ENOMEM;
-		goto out_bus;
-	}
-
-	udev->speed = USB_SPEED_FULL;
-	hcd->state = USB_STATE_RUNNING;
-
-	err = hcd_register_root(udev, hcd);
-	if (err != 0) {
-		usb_put_dev(udev);
-		goto out_dev;
-	}
-
-	return 0;
+	err = usb_add_hcd(hcd, hcd->irq, 0);
+	if (err < 0)
+		goto out_put_hcd;
 
-out_dev:
-	usb_put_dev(udev);
-out_bus:
-	usb_deregister_bus(&hcd->self);
-out_irq:
-	free_irq(pdev->resource[1].start, hcd);
-out_hcd:
+ out_put_hcd:
 	usb_put_hcd(hcd);
-out_mem:
-	release_mem_region(pdev->resource[0].start,
-	    pdev->resource[0].end - pdev->resource[0].start);
-out:
+ out_mem:
+	release_mem_region(pdev->resource[0].start, 
+		pdev->resource[0].end - pdev->resource[0].start);
+ out:
 	return err;
 }
 
