ide: add ->dev and ->host_priv fields to struct ide_host

* Add 'struct device *dev[2]' and 'void *host_priv' fields
  to struct ide_host.

* Set ->dev[] in ide_host_alloc_all()/ide_setup_pci_device[s]().

* Pass 'void *priv' argument to ide_setup_pci_device[s]()
  and use it to set ->host_priv.

* Set PCI dev's ->driver_data to point to the struct ide_host
  instance if PCI host driver wants to use ->host_priv.

* Rename ide_setup_pci_device[s]() to ide_pci_init_{one,two}().
Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
上级 8c2eece5
...@@ -1604,6 +1604,9 @@ struct ide_host *ide_host_alloc_all(const struct ide_port_info *d, ...@@ -1604,6 +1604,9 @@ struct ide_host *ide_host_alloc_all(const struct ide_port_info *d,
return NULL; return NULL;
} }
if (hws[0])
host->dev[0] = hws[0]->dev;
return host; return host;
} }
EXPORT_SYMBOL_GPL(ide_host_alloc_all); EXPORT_SYMBOL_GPL(ide_host_alloc_all);
......
...@@ -273,7 +273,7 @@ static int __devinit aec62xx_init_one(struct pci_dev *dev, const struct pci_devi ...@@ -273,7 +273,7 @@ static int __devinit aec62xx_init_one(struct pci_dev *dev, const struct pci_devi
} }
} }
err = ide_setup_pci_device(dev, &d); err = ide_pci_init_one(dev, &d, NULL);
if (err) if (err)
pci_disable_device(dev); pci_disable_device(dev);
......
...@@ -565,7 +565,7 @@ static int __devinit alim15x3_init_one(struct pci_dev *dev, const struct pci_dev ...@@ -565,7 +565,7 @@ static int __devinit alim15x3_init_one(struct pci_dev *dev, const struct pci_dev
if (idx == 0) if (idx == 0)
d.host_flags |= IDE_HFLAG_CLEAR_SIMPLEX; d.host_flags |= IDE_HFLAG_CLEAR_SIMPLEX;
return ide_setup_pci_device(dev, &d); return ide_pci_init_one(dev, &d, NULL);
} }
......
...@@ -302,7 +302,7 @@ static int __devinit amd74xx_probe(struct pci_dev *dev, const struct pci_device_ ...@@ -302,7 +302,7 @@ static int __devinit amd74xx_probe(struct pci_dev *dev, const struct pci_device_
d.name, pci_name(dev), dev->revision, d.name, pci_name(dev), dev->revision,
amd_dma[fls(d.udma_mask) - 1]); amd_dma[fls(d.udma_mask) - 1]);
return ide_setup_pci_device(dev, &d); return ide_pci_init_one(dev, &d, NULL);
} }
static const struct pci_device_id amd74xx_pci_tbl[] = { static const struct pci_device_id amd74xx_pci_tbl[] = {
......
...@@ -167,7 +167,7 @@ static const struct ide_port_info atiixp_pci_info[] __devinitdata = { ...@@ -167,7 +167,7 @@ static const struct ide_port_info atiixp_pci_info[] __devinitdata = {
static int __devinit atiixp_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit atiixp_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &atiixp_pci_info[id->driver_data]); return ide_pci_init_one(dev, &atiixp_pci_info[id->driver_data], NULL);
} }
static const struct pci_device_id atiixp_pci_tbl[] = { static const struct pci_device_id atiixp_pci_tbl[] = {
......
...@@ -507,7 +507,7 @@ static int __devinit cmd64x_init_one(struct pci_dev *dev, const struct pci_devic ...@@ -507,7 +507,7 @@ static int __devinit cmd64x_init_one(struct pci_dev *dev, const struct pci_devic
} }
} }
return ide_setup_pci_device(dev, &d); return ide_pci_init_one(dev, &d, NULL);
} }
static const struct pci_device_id cmd64x_pci_tbl[] = { static const struct pci_device_id cmd64x_pci_tbl[] = {
......
...@@ -256,7 +256,7 @@ static const struct ide_port_info cs5530_chipset __devinitdata = { ...@@ -256,7 +256,7 @@ static const struct ide_port_info cs5530_chipset __devinitdata = {
static int __devinit cs5530_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit cs5530_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &cs5530_chipset); return ide_pci_init_one(dev, &cs5530_chipset, NULL);
} }
static const struct pci_device_id cs5530_pci_tbl[] = { static const struct pci_device_id cs5530_pci_tbl[] = {
......
...@@ -180,7 +180,7 @@ static const struct ide_port_info cs5535_chipset __devinitdata = { ...@@ -180,7 +180,7 @@ static const struct ide_port_info cs5535_chipset __devinitdata = {
static int __devinit cs5535_init_one(struct pci_dev *dev, static int __devinit cs5535_init_one(struct pci_dev *dev,
const struct pci_device_id *id) const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &cs5535_chipset); return ide_pci_init_one(dev, &cs5535_chipset, NULL);
} }
static const struct pci_device_id cs5535_pci_tbl[] = { static const struct pci_device_id cs5535_pci_tbl[] = {
......
...@@ -419,7 +419,7 @@ static int __devinit cy82c693_init_one(struct pci_dev *dev, const struct pci_dev ...@@ -419,7 +419,7 @@ static int __devinit cy82c693_init_one(struct pci_dev *dev, const struct pci_dev
if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE && if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE &&
PCI_FUNC(dev->devfn) == 1) { PCI_FUNC(dev->devfn) == 1) {
dev2 = pci_get_slot(dev->bus, dev->devfn + 1); dev2 = pci_get_slot(dev->bus, dev->devfn + 1);
ret = ide_setup_pci_devices(dev, dev2, &cy82c693_chipset); ret = ide_pci_init_two(dev, dev2, &cy82c693_chipset, NULL);
/* We leak pci refs here but thats ok - we can't be unloaded */ /* We leak pci refs here but thats ok - we can't be unloaded */
} }
return ret; return ret;
......
...@@ -139,7 +139,7 @@ static int __devinit generic_init_one(struct pci_dev *dev, const struct pci_devi ...@@ -139,7 +139,7 @@ static int __devinit generic_init_one(struct pci_dev *dev, const struct pci_devi
goto out; goto out;
} }
} }
ret = ide_setup_pci_device(dev, d); ret = ide_pci_init_one(dev, d, NULL);
out: out:
return ret; return ret;
} }
......
...@@ -156,7 +156,7 @@ static int __devinit hpt34x_init_one(struct pci_dev *dev, const struct pci_devic ...@@ -156,7 +156,7 @@ static int __devinit hpt34x_init_one(struct pci_dev *dev, const struct pci_devic
d = &hpt34x_chipsets[(pcicmd & PCI_COMMAND_MEMORY) ? 1 : 0]; d = &hpt34x_chipsets[(pcicmd & PCI_COMMAND_MEMORY) ? 1 : 0];
return ide_setup_pci_device(dev, d); return ide_pci_init_one(dev, d, NULL);
} }
static const struct pci_device_id hpt34x_pci_tbl[] = { static const struct pci_device_id hpt34x_pci_tbl[] = {
......
...@@ -1608,13 +1608,13 @@ static int __devinit hpt366_init_one(struct pci_dev *dev, const struct pci_devic ...@@ -1608,13 +1608,13 @@ static int __devinit hpt366_init_one(struct pci_dev *dev, const struct pci_devic
d.host_flags &= ~IDE_HFLAG_NON_BOOTABLE; d.host_flags &= ~IDE_HFLAG_NON_BOOTABLE;
} }
ret = ide_setup_pci_devices(dev, dev2, &d); ret = ide_pci_init_two(dev, dev2, &d, NULL);
if (ret < 0) if (ret < 0)
pci_dev_put(dev2); pci_dev_put(dev2);
return ret; return ret;
} }
return ide_setup_pci_device(dev, &d); return ide_pci_init_one(dev, &d, NULL);
} }
static const struct pci_device_id hpt366_pci_tbl[] __devinitconst = { static const struct pci_device_id hpt366_pci_tbl[] __devinitconst = {
......
...@@ -184,7 +184,7 @@ static const struct ide_port_info it8213_chipsets[] __devinitdata = { ...@@ -184,7 +184,7 @@ static const struct ide_port_info it8213_chipsets[] __devinitdata = {
static int __devinit it8213_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit it8213_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &it8213_chipsets[id->driver_data]); return ide_pci_init_one(dev, &it8213_chipsets[id->driver_data], NULL);
} }
static const struct pci_device_id it8213_pci_tbl[] = { static const struct pci_device_id it8213_pci_tbl[] = {
......
...@@ -664,7 +664,7 @@ static int __devinit it821x_init_one(struct pci_dev *dev, const struct pci_devic ...@@ -664,7 +664,7 @@ static int __devinit it821x_init_one(struct pci_dev *dev, const struct pci_devic
pci_set_drvdata(dev, itdevs); pci_set_drvdata(dev, itdevs);
return ide_setup_pci_device(dev, &it821x_chipsets[id->driver_data]); return ide_pci_init_one(dev, &it821x_chipsets[id->driver_data], NULL);
} }
static const struct pci_device_id it821x_pci_tbl[] = { static const struct pci_device_id it821x_pci_tbl[] = {
......
...@@ -121,7 +121,7 @@ static const struct ide_port_info jmicron_chipset __devinitdata = { ...@@ -121,7 +121,7 @@ static const struct ide_port_info jmicron_chipset __devinitdata = {
static int __devinit jmicron_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit jmicron_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &jmicron_chipset); return ide_pci_init_one(dev, &jmicron_chipset, NULL);
} }
/* All JMB PATA controllers have and will continue to have the same /* All JMB PATA controllers have and will continue to have the same
......
...@@ -324,7 +324,7 @@ static int __devinit ns87415_init_one(struct pci_dev *dev, const struct pci_devi ...@@ -324,7 +324,7 @@ static int __devinit ns87415_init_one(struct pci_dev *dev, const struct pci_devi
d.tp_ops = &superio_tp_ops; d.tp_ops = &superio_tp_ops;
} }
#endif #endif
return ide_setup_pci_device(dev, &d); return ide_pci_init_one(dev, &d, NULL);
} }
static const struct pci_device_id ns87415_pci_tbl[] = { static const struct pci_device_id ns87415_pci_tbl[] = {
......
...@@ -209,7 +209,7 @@ static const struct ide_port_info opti621_chipset __devinitdata = { ...@@ -209,7 +209,7 @@ static const struct ide_port_info opti621_chipset __devinitdata = {
static int __devinit opti621_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit opti621_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &opti621_chipset); return ide_pci_init_one(dev, &opti621_chipset, NULL);
} }
static const struct pci_device_id opti621_pci_tbl[] = { static const struct pci_device_id opti621_pci_tbl[] = {
......
...@@ -524,7 +524,7 @@ static int __devinit pdc202new_init_one(struct pci_dev *dev, const struct pci_de ...@@ -524,7 +524,7 @@ static int __devinit pdc202new_init_one(struct pci_dev *dev, const struct pci_de
dev2 = pdc20270_get_dev2(dev); dev2 = pdc20270_get_dev2(dev);
if (dev2) { if (dev2) {
int ret = ide_setup_pci_devices(dev, dev2, d); int ret = ide_pci_init_two(dev, dev2, d, NULL);
if (ret < 0) if (ret < 0)
pci_dev_put(dev2); pci_dev_put(dev2);
return ret; return ret;
...@@ -540,7 +540,7 @@ static int __devinit pdc202new_init_one(struct pci_dev *dev, const struct pci_de ...@@ -540,7 +540,7 @@ static int __devinit pdc202new_init_one(struct pci_dev *dev, const struct pci_de
return -ENODEV; return -ENODEV;
} }
return ide_setup_pci_device(dev, d); return ide_pci_init_one(dev, d, NULL);
} }
static const struct pci_device_id pdc202new_pci_tbl[] = { static const struct pci_device_id pdc202new_pci_tbl[] = {
......
...@@ -412,7 +412,7 @@ static int __devinit pdc202xx_init_one(struct pci_dev *dev, const struct pci_dev ...@@ -412,7 +412,7 @@ static int __devinit pdc202xx_init_one(struct pci_dev *dev, const struct pci_dev
} }
} }
return ide_setup_pci_device(dev, d); return ide_pci_init_one(dev, d, NULL);
} }
static const struct pci_device_id pdc202xx_pci_tbl[] = { static const struct pci_device_id pdc202xx_pci_tbl[] = {
......
...@@ -394,7 +394,7 @@ static const struct ide_port_info piix_pci_info[] __devinitdata = { ...@@ -394,7 +394,7 @@ static const struct ide_port_info piix_pci_info[] __devinitdata = {
static int __devinit piix_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit piix_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &piix_pci_info[id->driver_data]); return ide_pci_init_one(dev, &piix_pci_info[id->driver_data], NULL);
} }
/** /**
......
...@@ -48,7 +48,7 @@ static const struct ide_port_info rz1000_chipset __devinitdata = { ...@@ -48,7 +48,7 @@ static const struct ide_port_info rz1000_chipset __devinitdata = {
static int __devinit rz1000_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit rz1000_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &rz1000_chipset); return ide_pci_init_one(dev, &rz1000_chipset, NULL);
} }
static const struct pci_device_id rz1000_pci_tbl[] = { static const struct pci_device_id rz1000_pci_tbl[] = {
......
...@@ -317,7 +317,7 @@ static const struct ide_port_info sc1200_chipset __devinitdata = { ...@@ -317,7 +317,7 @@ static const struct ide_port_info sc1200_chipset __devinitdata = {
static int __devinit sc1200_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit sc1200_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &sc1200_chipset); return ide_pci_init_one(dev, &sc1200_chipset, NULL);
} }
static const struct pci_device_id sc1200_pci_tbl[] = { static const struct pci_device_id sc1200_pci_tbl[] = {
......
...@@ -422,7 +422,7 @@ static int __devinit svwks_init_one(struct pci_dev *dev, const struct pci_device ...@@ -422,7 +422,7 @@ static int __devinit svwks_init_one(struct pci_dev *dev, const struct pci_device
d.host_flags &= ~IDE_HFLAG_SINGLE; d.host_flags &= ~IDE_HFLAG_SINGLE;
} }
return ide_setup_pci_device(dev, &d); return ide_pci_init_one(dev, &d, NULL);
} }
static const struct pci_device_id svwks_pci_tbl[] = { static const struct pci_device_id svwks_pci_tbl[] = {
......
...@@ -795,7 +795,7 @@ static int __devinit siimage_init_one(struct pci_dev *dev, ...@@ -795,7 +795,7 @@ static int __devinit siimage_init_one(struct pci_dev *dev,
d.host_flags |= IDE_HFLAG_NO_ATAPI_DMA; d.host_flags |= IDE_HFLAG_NO_ATAPI_DMA;
} }
return ide_setup_pci_device(dev, &d); return ide_pci_init_one(dev, &d, NULL);
} }
static const struct pci_device_id siimage_pci_tbl[] = { static const struct pci_device_id siimage_pci_tbl[] = {
......
...@@ -583,7 +583,7 @@ static int __devinit sis5513_init_one(struct pci_dev *dev, const struct pci_devi ...@@ -583,7 +583,7 @@ static int __devinit sis5513_init_one(struct pci_dev *dev, const struct pci_devi
d.udma_mask = udma_rates[chipset_family]; d.udma_mask = udma_rates[chipset_family];
return ide_setup_pci_device(dev, &d); return ide_pci_init_one(dev, &d, NULL);
} }
static const struct pci_device_id sis5513_pci_tbl[] = { static const struct pci_device_id sis5513_pci_tbl[] = {
......
...@@ -335,7 +335,7 @@ static int __devinit sl82c105_init_one(struct pci_dev *dev, const struct pci_dev ...@@ -335,7 +335,7 @@ static int __devinit sl82c105_init_one(struct pci_dev *dev, const struct pci_dev
d.host_flags &= ~IDE_HFLAG_SERIALIZE_DMA; d.host_flags &= ~IDE_HFLAG_SERIALIZE_DMA;
} }
return ide_setup_pci_device(dev, &d); return ide_pci_init_one(dev, &d, NULL);
} }
static const struct pci_device_id sl82c105_pci_tbl[] = { static const struct pci_device_id sl82c105_pci_tbl[] = {
......
...@@ -144,7 +144,7 @@ static const struct ide_port_info slc90e66_chipset __devinitdata = { ...@@ -144,7 +144,7 @@ static const struct ide_port_info slc90e66_chipset __devinitdata = {
static int __devinit slc90e66_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit slc90e66_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &slc90e66_chipset); return ide_pci_init_one(dev, &slc90e66_chipset, NULL);
} }
static const struct pci_device_id slc90e66_pci_tbl[] = { static const struct pci_device_id slc90e66_pci_tbl[] = {
......
...@@ -215,7 +215,7 @@ static const struct ide_port_info tc86c001_chipset __devinitdata = { ...@@ -215,7 +215,7 @@ static const struct ide_port_info tc86c001_chipset __devinitdata = {
static int __devinit tc86c001_init_one(struct pci_dev *dev, static int __devinit tc86c001_init_one(struct pci_dev *dev,
const struct pci_device_id *id) const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &tc86c001_chipset); return ide_pci_init_one(dev, &tc86c001_chipset, NULL);
} }
static const struct pci_device_id tc86c001_pci_tbl[] = { static const struct pci_device_id tc86c001_pci_tbl[] = {
......
...@@ -104,7 +104,7 @@ static const struct ide_port_info triflex_device __devinitdata = { ...@@ -104,7 +104,7 @@ static const struct ide_port_info triflex_device __devinitdata = {
static int __devinit triflex_init_one(struct pci_dev *dev, static int __devinit triflex_init_one(struct pci_dev *dev,
const struct pci_device_id *id) const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &triflex_device); return ide_pci_init_one(dev, &triflex_device, NULL);
} }
static const struct pci_device_id triflex_pci_tbl[] = { static const struct pci_device_id triflex_pci_tbl[] = {
......
...@@ -340,7 +340,7 @@ static const struct ide_port_info trm290_chipset __devinitdata = { ...@@ -340,7 +340,7 @@ static const struct ide_port_info trm290_chipset __devinitdata = {
static int __devinit trm290_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit trm290_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
return ide_setup_pci_device(dev, &trm290_chipset); return ide_pci_init_one(dev, &trm290_chipset, NULL);
} }
static const struct pci_device_id trm290_pci_tbl[] = { static const struct pci_device_id trm290_pci_tbl[] = {
......
...@@ -466,7 +466,7 @@ static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_i ...@@ -466,7 +466,7 @@ static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_i
d.udma_mask = via_config->udma_mask; d.udma_mask = via_config->udma_mask;
return ide_setup_pci_device(dev, &d); return ide_pci_init_one(dev, &d, NULL);
} }
static const struct pci_device_id via_pci_tbl[] = { static const struct pci_device_id via_pci_tbl[] = {
......
...@@ -525,8 +525,10 @@ static int do_ide_setup_pci_device(struct pci_dev *dev, ...@@ -525,8 +525,10 @@ static int do_ide_setup_pci_device(struct pci_dev *dev,
return ret; return ret;
} }
int ide_setup_pci_device(struct pci_dev *dev, const struct ide_port_info *d) int ide_pci_init_one(struct pci_dev *dev, const struct ide_port_info *d,
void *priv)
{ {
struct ide_host *host;
hw_regs_t hw[4], *hws[] = { NULL, NULL, NULL, NULL }; hw_regs_t hw[4], *hws[] = { NULL, NULL, NULL, NULL };
int ret; int ret;
...@@ -536,6 +538,19 @@ int ide_setup_pci_device(struct pci_dev *dev, const struct ide_port_info *d) ...@@ -536,6 +538,19 @@ int ide_setup_pci_device(struct pci_dev *dev, const struct ide_port_info *d)
ide_pci_setup_ports(dev, d, 0, &hw[0], &hws[0]); ide_pci_setup_ports(dev, d, 0, &hw[0], &hws[0]);
host = ide_host_alloc(d, hws);
if (host == NULL) {
ret = -ENOMEM;
goto out;
}
host->dev[0] = &dev->dev;
host->host_priv = priv;
if (priv)
pci_set_drvdata(dev, host);
ret = do_ide_setup_pci_device(dev, d, 1); ret = do_ide_setup_pci_device(dev, d, 1);
if (ret < 0) if (ret < 0)
goto out; goto out;
...@@ -543,16 +558,19 @@ int ide_setup_pci_device(struct pci_dev *dev, const struct ide_port_info *d) ...@@ -543,16 +558,19 @@ int ide_setup_pci_device(struct pci_dev *dev, const struct ide_port_info *d)
/* fixup IRQ */ /* fixup IRQ */
hw[1].irq = hw[0].irq = ret; hw[1].irq = hw[0].irq = ret;
ret = ide_host_add(d, hws, NULL); ret = ide_host_register(host, d, hws);
if (ret)
ide_host_free(host);
out: out:
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(ide_setup_pci_device); EXPORT_SYMBOL_GPL(ide_pci_init_one);
int ide_setup_pci_devices(struct pci_dev *dev1, struct pci_dev *dev2, int ide_pci_init_two(struct pci_dev *dev1, struct pci_dev *dev2,
const struct ide_port_info *d) const struct ide_port_info *d, void *priv)
{ {
struct pci_dev *pdev[] = { dev1, dev2 }; struct pci_dev *pdev[] = { dev1, dev2 };
struct ide_host *host;
int ret, i; int ret, i;
hw_regs_t hw[4], *hws[] = { NULL, NULL, NULL, NULL }; hw_regs_t hw[4], *hws[] = { NULL, NULL, NULL, NULL };
...@@ -562,7 +580,25 @@ int ide_setup_pci_devices(struct pci_dev *dev1, struct pci_dev *dev2, ...@@ -562,7 +580,25 @@ int ide_setup_pci_devices(struct pci_dev *dev1, struct pci_dev *dev2,
goto out; goto out;
ide_pci_setup_ports(pdev[i], d, 0, &hw[i*2], &hws[i*2]); ide_pci_setup_ports(pdev[i], d, 0, &hw[i*2], &hws[i*2]);
}
host = ide_host_alloc(d, hws);
if (host == NULL) {
ret = -ENOMEM;
goto out;
}
host->dev[0] = &dev1->dev;
host->dev[1] = &dev2->dev;
host->host_priv = priv;
if (priv) {
pci_set_drvdata(pdev[0], host);
pci_set_drvdata(pdev[1], host);
}
for (i = 0; i < 2; i++) {
ret = do_ide_setup_pci_device(pdev[i], d, !i); ret = do_ide_setup_pci_device(pdev[i], d, !i);
/* /*
...@@ -576,8 +612,10 @@ int ide_setup_pci_devices(struct pci_dev *dev1, struct pci_dev *dev2, ...@@ -576,8 +612,10 @@ int ide_setup_pci_devices(struct pci_dev *dev1, struct pci_dev *dev2,
hw[i*2 + 1].irq = hw[i*2].irq = ret; hw[i*2 + 1].irq = hw[i*2].irq = ret;
} }
ret = ide_host_add(d, hws, NULL); ret = ide_host_register(host, d, hws);
if (ret)
ide_host_free(host);
out: out:
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(ide_setup_pci_devices); EXPORT_SYMBOL_GPL(ide_pci_init_two);
...@@ -626,6 +626,8 @@ typedef struct hwif_s { ...@@ -626,6 +626,8 @@ typedef struct hwif_s {
struct ide_host { struct ide_host {
ide_hwif_t *ports[MAX_HWIFS]; ide_hwif_t *ports[MAX_HWIFS];
unsigned int n_ports; unsigned int n_ports;
struct device *dev[2];
void *host_priv;
}; };
/* /*
...@@ -1201,8 +1203,9 @@ struct ide_port_info { ...@@ -1201,8 +1203,9 @@ struct ide_port_info {
u8 udma_mask; u8 udma_mask;
}; };
int ide_setup_pci_device(struct pci_dev *, const struct ide_port_info *); int ide_pci_init_one(struct pci_dev *, const struct ide_port_info *, void *);
int ide_setup_pci_devices(struct pci_dev *, struct pci_dev *, const struct ide_port_info *); int ide_pci_init_two(struct pci_dev *, struct pci_dev *,
const struct ide_port_info *, void *);
void ide_map_sg(ide_drive_t *, struct request *); void ide_map_sg(ide_drive_t *, struct request *);
void ide_init_sg_cmd(ide_drive_t *, struct request *); void ide_init_sg_cmd(ide_drive_t *, struct request *);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册