static int __devinit rapide_probe(struct expansion_card *ec, const struct ecard_id *id) { ide_hwif_t *hwif; void __iomem *base; int ret; ret = ecard_request_resources(ec); if (ret) goto out; base = ioremap(ecard_resource_start(ec, ECARD_RES_MEMC), ecard_resource_len(ec, ECARD_RES_MEMC)); if (!base) { ret = -ENOMEM; goto release; } hwif = rapide_locate_hwif(base, base + 0x818, 1 << 6, ec->irq); if (hwif) { hwif->hwif_data = base; hwif->gendev.parent = &ec->dev; hwif->noprobe = 0; probe_hwif_init(hwif); create_proc_ide_interfaces(); ecard_set_drvdata(ec, hwif); goto out; } iounmap(base); release: ecard_release_resources(ec); out: return ret; }
static int __devinit rapide_probe(struct expansion_card *ec, const struct ecard_id *id) { ide_hwif_t *hwif; void __iomem *base; int ret; u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; ret = ecard_request_resources(ec); if (ret) goto out; base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0); if (!base) { ret = -ENOMEM; goto release; } hwif = rapide_locate_hwif(base, base + 0x818, 1 << 6, ec->irq); if (hwif) { hwif->hwif_data = base; hwif->gendev.parent = &ec->dev; hwif->noprobe = 0; idx[0] = hwif->index; ide_device_add(idx); ecard_set_drvdata(ec, hwif); goto out; } release: ecard_release_resources(ec); out: return ret; }