]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/ide/h8300/ide-h8300.c
ide: cleanup setting hwif->mmio flag
[mv-sheeva.git] / drivers / ide / h8300 / ide-h8300.c
index 4a49b5c59acb3949fa87656814678956b7855e17..0708b29cdb17e3d98becee5eb1e2915cdcf97a27 100644 (file)
@@ -1,5 +1,4 @@
 /*
- * drivers/ide/h8300/ide-h8300.c
  * H8/300 generic IDE interface
  */
 
@@ -75,7 +74,6 @@ static inline void hwif_setup(ide_hwif_t *hwif)
 {
        default_hwif_iops(hwif);
 
-       hwif->mmio  = 1;
        hwif->OUTW  = mm_outw;
        hwif->OUTSW = mm_outsw;
        hwif->INW   = mm_inw;
@@ -84,11 +82,12 @@ static inline void hwif_setup(ide_hwif_t *hwif)
        hwif->INSL  = NULL;
 }
 
-void __init h8300_ide_init(void)
+static int __init h8300_ide_init(void)
 {
        hw_regs_t hw;
        ide_hwif_t *hwif;
-       int idx;
+       int index;
+       u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
 
        if (!request_region(CONFIG_H8300_IDE_BASE, H8300_IDE_GAP*8, "ide-h8300"))
                goto out_busy;
@@ -99,17 +98,31 @@ void __init h8300_ide_init(void)
 
        hw_setup(&hw);
 
-       /* register if */
-       idx = ide_register_hw(&hw, NULL, 1, &hwif);
-       if (idx == -1) {
+       hwif = ide_find_port();
+       if (hwif == NULL) {
                printk(KERN_ERR "ide-h8300: IDE I/F register failed\n");
-               return;
+               return -ENOENT;
        }
 
+       index = hwif->index;
+       ide_init_port_data(hwif, index);
+       ide_init_port_hw(hwif, &hw);
        hwif_setup(hwif);
-       printk(KERN_INFO "ide%d: H8/300 generic IDE interface\n", idx);
-       return;
+       hwif->host_flags = IDE_HFLAG_NO_IO_32BIT;
+       printk(KERN_INFO "ide%d: H8/300 generic IDE interface\n", index);
+
+       idx[0] = index;
+
+       ide_device_add(idx, NULL);
+
+       return 0;
 
 out_busy:
        printk(KERN_ERR "ide-h8300: IDE I/F resource already used.\n");
+
+       return -EBUSY;
 }
+
+module_init(h8300_ide_init);
+
+MODULE_LICENSE("GPL");