ARM: at91: Fix USB AT91 gadget registration
[linux-2.6.git] / drivers / ide / macide.c
index 3c60064..505ec43 100644 (file)
 
 volatile unsigned char *ide_ifr = (unsigned char *) (IDE_BASE + IDE_IFR);
 
-int macide_ack_intr(ide_hwif_t* hwif)
+int macide_test_irq(ide_hwif_t *hwif)
 {
-       if (*ide_ifr & 0x20) {
-               *ide_ifr &= ~0x20;
+       if (*ide_ifr & 0x20)
                return 1;
-       }
        return 0;
 }
 
-static void __init macide_setup_ports(hw_regs_t *hw, unsigned long base,
-                                     int irq, ide_ack_intr_t *ack_intr)
+static void macide_clear_irq(ide_drive_t *drive)
+{
+       *ide_ifr &= ~0x20;
+}
+
+static void __init macide_setup_ports(struct ide_hw *hw, unsigned long base,
+                                     int irq)
 {
        int i;
 
@@ -75,11 +78,20 @@ static void __init macide_setup_ports(hw_regs_t *hw, unsigned long base,
        hw->io_ports.ctl_addr = base + IDE_CONTROL;
 
        hw->irq = irq;
-       hw->ack_intr = ack_intr;
-
-       hw->chipset = ide_generic;
 }
 
+static const struct ide_port_ops macide_port_ops = {
+       .clear_irq              = macide_clear_irq,
+       .test_irq               = macide_test_irq,
+};
+
+static const struct ide_port_info macide_port_info = {
+       .port_ops               = &macide_port_ops,
+       .host_flags             = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA,
+       .irq_flags              = IRQF_SHARED,
+       .chipset                = ide_generic,
+};
+
 static const char *mac_ide_name[] =
        { "Quadra", "Powerbook", "Powerbook Baboon" };
 
@@ -89,10 +101,10 @@ static const char *mac_ide_name[] =
 
 static int __init macide_init(void)
 {
-       ide_ack_intr_t *ack_intr;
        unsigned long base;
        int irq;
-       hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };
+       struct ide_hw hw, *hws[] = { &hw };
+       struct ide_port_info d = macide_port_info;
 
        if (!MACH_IS_MAC)
                return -ENODEV;
@@ -100,17 +112,15 @@ static int __init macide_init(void)
        switch (macintosh_config->ide_type) {
        case MAC_IDE_QUADRA:
                base = IDE_BASE;
-               ack_intr = macide_ack_intr;
                irq = IRQ_NUBUS_F;
                break;
        case MAC_IDE_PB:
                base = IDE_BASE;
-               ack_intr = macide_ack_intr;
                irq = IRQ_NUBUS_C;
                break;
        case MAC_IDE_BABOON:
                base = BABOON_BASE;
-               ack_intr = NULL;
+               d.port_ops = NULL;
                irq = IRQ_BABOON_1;
                break;
        default:
@@ -120,9 +130,9 @@ static int __init macide_init(void)
        printk(KERN_INFO "ide: Macintosh %s IDE controller\n",
                         mac_ide_name[macintosh_config->ide_type - 1]);
 
-       macide_setup_ports(&hw, base, irq, ack_intr);
+       macide_setup_ports(&hw, base, irq);
 
-       return ide_host_add(NULL, hws, NULL);
+       return ide_host_add(&d, hws, 1, NULL);
 }
 
 module_init(macide_init);