swarm: call ide_find_port_slot() later
Move ide_find_port_slot() call closer to ide_device_add(). This is basically a preparation for the future changes. Cc: Maciej W. Rozycki <macro@linux-mips.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
@@ -82,10 +82,6 @@ static int __devinit swarm_ide_probe(struct device *dev)
|
|||||||
if (!SIBYTE_HAVE_IDE)
|
if (!SIBYTE_HAVE_IDE)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
hwif = ide_find_port_slot(&swarm_port_info);
|
|
||||||
if (hwif == NULL)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
base = ioremap(A_IO_EXT_BASE, 0x800);
|
base = ioremap(A_IO_EXT_BASE, 0x800);
|
||||||
offset = __raw_readq(base + R_IO_EXT_REG(R_IO_EXT_START_ADDR, IDE_CS));
|
offset = __raw_readq(base + R_IO_EXT_REG(R_IO_EXT_START_ADDR, IDE_CS));
|
||||||
size = __raw_readq(base + R_IO_EXT_REG(R_IO_EXT_MULT_SIZE, IDE_CS));
|
size = __raw_readq(base + R_IO_EXT_REG(R_IO_EXT_MULT_SIZE, IDE_CS));
|
||||||
@@ -112,9 +108,6 @@ static int __devinit swarm_ide_probe(struct device *dev)
|
|||||||
|
|
||||||
base = ioremap(offset, size);
|
base = ioremap(offset, size);
|
||||||
|
|
||||||
/* Setup MMIO ops. */
|
|
||||||
default_hwif_mmiops(hwif);
|
|
||||||
|
|
||||||
for (i = 0; i <= 7; i++)
|
for (i = 0; i <= 7; i++)
|
||||||
hw.io_ports_array[i] =
|
hw.io_ports_array[i] =
|
||||||
(unsigned long)(base + ((0x1f0 + i) << 5));
|
(unsigned long)(base + ((0x1f0 + i) << 5));
|
||||||
@@ -123,8 +116,15 @@ static int __devinit swarm_ide_probe(struct device *dev)
|
|||||||
hw.irq = K_INT_GB_IDE;
|
hw.irq = K_INT_GB_IDE;
|
||||||
hw.chipset = ide_generic;
|
hw.chipset = ide_generic;
|
||||||
|
|
||||||
|
hwif = ide_find_port_slot(&swarm_port_info);
|
||||||
|
if (hwif == NULL)
|
||||||
|
goto err;
|
||||||
|
|
||||||
ide_init_port_hw(hwif, &hw);
|
ide_init_port_hw(hwif, &hw);
|
||||||
|
|
||||||
|
/* Setup MMIO ops. */
|
||||||
|
default_hwif_mmiops(hwif);
|
||||||
|
|
||||||
idx[0] = hwif->index;
|
idx[0] = hwif->index;
|
||||||
|
|
||||||
ide_device_add(idx, &swarm_port_info);
|
ide_device_add(idx, &swarm_port_info);
|
||||||
@@ -132,6 +132,10 @@ static int __devinit swarm_ide_probe(struct device *dev)
|
|||||||
dev_set_drvdata(dev, hwif);
|
dev_set_drvdata(dev, hwif);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
err:
|
||||||
|
release_resource(&swarm_ide_resource);
|
||||||
|
iounmap(base);
|
||||||
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct device_driver swarm_ide_driver = {
|
static struct device_driver swarm_ide_driver = {
|
||||||
|
Reference in New Issue
Block a user