]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/ide/legacy/falconide.c
ide: cleanup setting hwif->mmio flag
[mv-sheeva.git] / drivers / ide / legacy / falconide.c
index f044048903b3ebc8af7b3f67aa4cb8a073c89bc7..5c19c422c5cc78b5ad62671287ce0a278498909a 100644 (file)
@@ -22,6 +22,7 @@
 #include <asm/atariints.h>
 #include <asm/atari_stdma.h>
 
+#define DRV_NAME "falconide"
 
     /*
      *  Base of the IDE interface
@@ -54,7 +55,7 @@ static void __init falconide_setup_ports(hw_regs_t *hw)
        for (i = 1; i < 8; i++)
                hw->io_ports[i] = ATA_HD_BASE + 1 + i * 4;
 
-       hw->io_ports[IDE_CONTROL_OFFSET] = ATA_HD_CONTROL;
+       hw->io_ports[IDE_CONTROL_OFFSET] = ATA_HD_BASE + ATA_HD_CONTROL;
 
        hw->irq = IRQ_MFP_IDE;
        hw->ack_intr = NULL;
@@ -74,9 +75,14 @@ static int __init falconide_init(void)
 
        printk(KERN_INFO "ide: Falcon IDE controller\n");
 
+       if (!request_mem_region(ATA_HD_BASE, 0x40, DRV_NAME)) {
+               printk(KERN_ERR "%s: resources busy\n", DRV_NAME);
+               return -EBUSY;
+       }
+
        falconide_setup_ports(&hw);
 
-       hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
+       hwif = ide_find_port();
        if (hwif) {
                u8 index = hwif->index;
                u8 idx[4] = { index, 0xff, 0xff, 0xff };
@@ -84,10 +90,14 @@ static int __init falconide_init(void)
                ide_init_port_data(hwif, index);
                ide_init_port_hw(hwif, &hw);
 
+               ide_get_lock(NULL, NULL);
                ide_device_add(idx, NULL);
+               ide_release_lock();
        }
 
        return 0;
 }
 
 module_init(falconide_init);
+
+MODULE_LICENSE("GPL");