Loading drivers/ide/ide-generic.c +12 −35 Original line number Diff line number Diff line Loading @@ -137,10 +137,9 @@ static void ide_generic_check_pci_legacy_iobases(int *primary, int *secondary) static int __init ide_generic_init(void) { hw_regs_t hw[MAX_HWIFS], *hws[MAX_HWIFS]; struct ide_host *host; hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; unsigned long io_addr; int i, rc, primary = 0, secondary = 0; int i, rc = 0, primary = 0, secondary = 0; #ifdef CONFIG_MIPS if (!ide_probe_legacy()) Loading @@ -161,13 +160,9 @@ static int __init ide_generic_init(void) printk(KERN_INFO DRV_NAME ": enforcing probing of I/O ports " "upon user request\n"); memset(hws, 0, sizeof(hw_regs_t *) * MAX_HWIFS); for (i = 0; i < ARRAY_SIZE(legacy_bases); i++) { io_addr = legacy_bases[i]; hws[i] = NULL; if ((probe_mask & (1 << i)) && io_addr) { if (!request_region(io_addr, 8, DRV_NAME)) { printk(KERN_ERR "%s: I/O resource 0x%lX-0x%lX " Loading @@ -184,45 +179,27 @@ static int __init ide_generic_init(void) continue; } memset(&hw[i], 0, sizeof(hw[i])); ide_std_init_ports(&hw[i], io_addr, io_addr + 0x206); memset(&hw, 0, sizeof(hw)); ide_std_init_ports(&hw, io_addr, io_addr + 0x206); #ifdef CONFIG_IA64 hw[i].irq = isa_irq_to_vector(legacy_irqs[i]); hw.irq = isa_irq_to_vector(legacy_irqs[i]); #else hw[i].irq = legacy_irqs[i]; hw.irq = legacy_irqs[i]; #endif hw[i].chipset = ide_generic; hw.chipset = ide_generic; hws[i] = &hw[i]; rc = ide_host_add(NULL, hws, NULL); if (rc) { release_region(io_addr + 0x206, 1); release_region(io_addr, 8); } } host = ide_host_alloc_all(NULL, hws); if (host == NULL) { rc = -ENOMEM; goto err; } rc = ide_host_register(host, NULL, hws); if (rc) goto err_free; if (ide_generic_sysfs_init()) printk(KERN_ERR DRV_NAME ": failed to create ide_generic " "class\n"); return 0; err_free: ide_host_free(host); err: for (i = 0; i < MAX_HWIFS; i++) { if (hws[i] == NULL) continue; io_addr = hws[i]->io_ports.data_addr; release_region(io_addr + 0x206, 1); release_region(io_addr, 8); } return rc; } Loading Loading
drivers/ide/ide-generic.c +12 −35 Original line number Diff line number Diff line Loading @@ -137,10 +137,9 @@ static void ide_generic_check_pci_legacy_iobases(int *primary, int *secondary) static int __init ide_generic_init(void) { hw_regs_t hw[MAX_HWIFS], *hws[MAX_HWIFS]; struct ide_host *host; hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; unsigned long io_addr; int i, rc, primary = 0, secondary = 0; int i, rc = 0, primary = 0, secondary = 0; #ifdef CONFIG_MIPS if (!ide_probe_legacy()) Loading @@ -161,13 +160,9 @@ static int __init ide_generic_init(void) printk(KERN_INFO DRV_NAME ": enforcing probing of I/O ports " "upon user request\n"); memset(hws, 0, sizeof(hw_regs_t *) * MAX_HWIFS); for (i = 0; i < ARRAY_SIZE(legacy_bases); i++) { io_addr = legacy_bases[i]; hws[i] = NULL; if ((probe_mask & (1 << i)) && io_addr) { if (!request_region(io_addr, 8, DRV_NAME)) { printk(KERN_ERR "%s: I/O resource 0x%lX-0x%lX " Loading @@ -184,45 +179,27 @@ static int __init ide_generic_init(void) continue; } memset(&hw[i], 0, sizeof(hw[i])); ide_std_init_ports(&hw[i], io_addr, io_addr + 0x206); memset(&hw, 0, sizeof(hw)); ide_std_init_ports(&hw, io_addr, io_addr + 0x206); #ifdef CONFIG_IA64 hw[i].irq = isa_irq_to_vector(legacy_irqs[i]); hw.irq = isa_irq_to_vector(legacy_irqs[i]); #else hw[i].irq = legacy_irqs[i]; hw.irq = legacy_irqs[i]; #endif hw[i].chipset = ide_generic; hw.chipset = ide_generic; hws[i] = &hw[i]; rc = ide_host_add(NULL, hws, NULL); if (rc) { release_region(io_addr + 0x206, 1); release_region(io_addr, 8); } } host = ide_host_alloc_all(NULL, hws); if (host == NULL) { rc = -ENOMEM; goto err; } rc = ide_host_register(host, NULL, hws); if (rc) goto err_free; if (ide_generic_sysfs_init()) printk(KERN_ERR DRV_NAME ": failed to create ide_generic " "class\n"); return 0; err_free: ide_host_free(host); err: for (i = 0; i < MAX_HWIFS; i++) { if (hws[i] == NULL) continue; io_addr = hws[i]->io_ports.data_addr; release_region(io_addr + 0x206, 1); release_region(io_addr, 8); } return rc; } Loading