ide: pass number of ports to ide_host_{alloc,add}() (v2)

Pass number of ports to ide_host_{alloc,add}() and then update
all users accordingly.

v2:
- drop no longer needed NULL initializers in buddha.c, cmd640.c and gayle.c
  (noticed by Sergei)

There should be no functional changes caused by this patch.
Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 29e52cf7
...@@ -247,8 +247,7 @@ irqreturn_t at91_irq_handler(int irq, void *dev_id) ...@@ -247,8 +247,7 @@ irqreturn_t at91_irq_handler(int irq, void *dev_id)
static int __init at91_ide_probe(struct platform_device *pdev) static int __init at91_ide_probe(struct platform_device *pdev)
{ {
int ret; int ret;
hw_regs_t hw; hw_regs_t hw, *hws[] = { &hw };
hw_regs_t *hws[] = { &hw, NULL, NULL, NULL };
struct ide_host *host; struct ide_host *host;
struct resource *res; struct resource *res;
unsigned long tf_base = 0, ctl_base = 0; unsigned long tf_base = 0, ctl_base = 0;
...@@ -307,7 +306,7 @@ static int __init at91_ide_probe(struct platform_device *pdev) ...@@ -307,7 +306,7 @@ static int __init at91_ide_probe(struct platform_device *pdev)
hw.irq = board->irq_pin; hw.irq = board->irq_pin;
hw.dev = &pdev->dev; hw.dev = &pdev->dev;
host = ide_host_alloc(&at91_ide_port_info, hws); host = ide_host_alloc(&at91_ide_port_info, hws, 1);
if (!host) { if (!host) {
perr("failed to allocate ide host\n"); perr("failed to allocate ide host\n");
return -ENOMEM; return -ENOMEM;
......
...@@ -508,7 +508,7 @@ static int au_ide_probe(struct platform_device *dev) ...@@ -508,7 +508,7 @@ static int au_ide_probe(struct platform_device *dev)
struct resource *res; struct resource *res;
struct ide_host *host; struct ide_host *host;
int ret = 0; int ret = 0;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA) #if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA)
char *mode = "MWDMA2"; char *mode = "MWDMA2";
...@@ -550,7 +550,7 @@ static int au_ide_probe(struct platform_device *dev) ...@@ -550,7 +550,7 @@ static int au_ide_probe(struct platform_device *dev)
hw.irq = ahwif->irq; hw.irq = ahwif->irq;
hw.dev = &dev->dev; hw.dev = &dev->dev;
ret = ide_host_add(&au1xxx_port_info, hws, &host); ret = ide_host_add(&au1xxx_port_info, hws, 1, &host);
if (ret) if (ret)
goto out; goto out;
......
...@@ -160,7 +160,7 @@ static int __init buddha_init(void) ...@@ -160,7 +160,7 @@ static int __init buddha_init(void)
while ((z = zorro_find_device(ZORRO_WILDCARD, z))) { while ((z = zorro_find_device(ZORRO_WILDCARD, z))) {
unsigned long board; unsigned long board;
hw_regs_t hw[MAX_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL }; hw_regs_t hw[MAX_NUM_HWIFS], *hws[MAX_NUM_HWIFS];
if (z->id == ZORRO_PROD_INDIVIDUAL_COMPUTERS_BUDDHA) { if (z->id == ZORRO_PROD_INDIVIDUAL_COMPUTERS_BUDDHA) {
buddha_num_hwifs = BUDDHA_NUM_HWIFS; buddha_num_hwifs = BUDDHA_NUM_HWIFS;
...@@ -224,7 +224,7 @@ static int __init buddha_init(void) ...@@ -224,7 +224,7 @@ static int __init buddha_init(void)
hws[i] = &hw[i]; hws[i] = &hw[i];
} }
ide_host_add(&buddha_port_info, hws, NULL); ide_host_add(&buddha_port_info, hws, i, NULL);
} }
return 0; return 0;
......
...@@ -708,7 +708,7 @@ static int __init cmd640x_init(void) ...@@ -708,7 +708,7 @@ static int __init cmd640x_init(void)
int second_port_cmd640 = 0, rc; int second_port_cmd640 = 0, rc;
const char *bus_type, *port2; const char *bus_type, *port2;
u8 b, cfr; u8 b, cfr;
hw_regs_t hw[2], *hws[] = { NULL, NULL, NULL, NULL }; hw_regs_t hw[2], *hws[2];
if (cmd640_vlb && probe_for_cmd640_vlb()) { if (cmd640_vlb && probe_for_cmd640_vlb()) {
bus_type = "VLB"; bus_type = "VLB";
...@@ -822,7 +822,8 @@ static int __init cmd640x_init(void) ...@@ -822,7 +822,8 @@ static int __init cmd640x_init(void)
cmd640_dump_regs(); cmd640_dump_regs();
#endif #endif
return ide_host_add(&cmd640_port_info, hws, NULL); return ide_host_add(&cmd640_port_info, hws, second_port_cmd640 ? 2 : 1,
NULL);
} }
module_param_named(probe_vlb, cmd640_vlb, bool, 0); module_param_named(probe_vlb, cmd640_vlb, bool, 0);
......
...@@ -110,7 +110,7 @@ static const struct ide_port_info cyrix_chipset __devinitdata = { ...@@ -110,7 +110,7 @@ static const struct ide_port_info cyrix_chipset __devinitdata = {
static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_device_id *id) static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ {
const struct ide_port_info *d = &cyrix_chipset; const struct ide_port_info *d = &cyrix_chipset;
hw_regs_t hw[4], *hws[] = { NULL, NULL, NULL, NULL }; hw_regs_t hw[2], *hws[] = { NULL, NULL };
ide_setup_pci_noise(dev, d); ide_setup_pci_noise(dev, d);
...@@ -136,7 +136,7 @@ static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_devic ...@@ -136,7 +136,7 @@ static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_devic
ide_pci_setup_ports(dev, d, &hw[0], &hws[0]); ide_pci_setup_ports(dev, d, &hw[0], &hws[0]);
hw[0].irq = 14; hw[0].irq = 14;
return ide_host_add(d, hws, NULL); return ide_host_add(d, hws, 2, NULL);
} }
static const struct pci_device_id cs5520_pci_tbl[] = { static const struct pci_device_id cs5520_pci_tbl[] = {
......
...@@ -77,7 +77,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id) ...@@ -77,7 +77,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
struct ide_host *host; struct ide_host *host;
unsigned long base; unsigned long base;
int rc; int rc;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
rc = pci_enable_device(dev); rc = pci_enable_device(dev);
if (rc) { if (rc) {
...@@ -99,7 +99,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id) ...@@ -99,7 +99,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
hw.irq = dev->irq; hw.irq = dev->irq;
hw.dev = &dev->dev; hw.dev = &dev->dev;
rc = ide_host_add(&delkin_cb_port_info, hws, &host); rc = ide_host_add(&delkin_cb_port_info, hws, 1, &host);
if (rc) if (rc)
goto out_disable; goto out_disable;
......
...@@ -138,7 +138,7 @@ static void __init falconide_setup_ports(hw_regs_t *hw) ...@@ -138,7 +138,7 @@ static void __init falconide_setup_ports(hw_regs_t *hw)
static int __init falconide_init(void) static int __init falconide_init(void)
{ {
struct ide_host *host; struct ide_host *host;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
int rc; int rc;
if (!MACH_IS_ATARI || !ATARIHW_PRESENT(IDE)) if (!MACH_IS_ATARI || !ATARIHW_PRESENT(IDE))
...@@ -153,7 +153,7 @@ static int __init falconide_init(void) ...@@ -153,7 +153,7 @@ static int __init falconide_init(void)
falconide_setup_ports(&hw); falconide_setup_ports(&hw);
host = ide_host_alloc(&falconide_port_info, hws); host = ide_host_alloc(&falconide_port_info, hws, 1);
if (host == NULL) { if (host == NULL) {
rc = -ENOMEM; rc = -ENOMEM;
goto err; goto err;
......
...@@ -125,7 +125,7 @@ static int __init gayle_init(void) ...@@ -125,7 +125,7 @@ static int __init gayle_init(void)
unsigned long base, ctrlport, irqport; unsigned long base, ctrlport, irqport;
ide_ack_intr_t *ack_intr; ide_ack_intr_t *ack_intr;
int a4000, i, rc; int a4000, i, rc;
hw_regs_t hw[GAYLE_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL }; hw_regs_t hw[GAYLE_NUM_HWIFS], *hws[GAYLE_NUM_HWIFS];
if (!MACH_IS_AMIGA) if (!MACH_IS_AMIGA)
return -ENODEV; return -ENODEV;
...@@ -170,7 +170,7 @@ static int __init gayle_init(void) ...@@ -170,7 +170,7 @@ static int __init gayle_init(void)
hws[i] = &hw[i]; hws[i] = &hw[i];
} }
rc = ide_host_add(&gayle_port_info, hws, NULL); rc = ide_host_add(&gayle_port_info, hws, i, NULL);
if (rc) if (rc)
release_mem_region(res_start, res_n); release_mem_region(res_start, res_n);
......
...@@ -410,7 +410,7 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec) ...@@ -410,7 +410,7 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec)
{ {
void __iomem *base; void __iomem *base;
struct ide_host *host; struct ide_host *host;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
int ret; int ret;
base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0); base = ecardm_iomap(ec, ECARD_RES_MEMC, 0, 0);
...@@ -431,7 +431,7 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec) ...@@ -431,7 +431,7 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec)
icside_setup_ports(&hw, base, &icside_cardinfo_v5, ec); icside_setup_ports(&hw, base, &icside_cardinfo_v5, ec);
host = ide_host_alloc(&icside_v5_port_info, hws); host = ide_host_alloc(&icside_v5_port_info, hws, 1);
if (host == NULL) if (host == NULL)
return -ENODEV; return -ENODEV;
...@@ -467,7 +467,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec) ...@@ -467,7 +467,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
struct ide_host *host; struct ide_host *host;
unsigned int sel = 0; unsigned int sel = 0;
int ret; int ret;
hw_regs_t hw[2], *hws[] = { &hw[0], &hw[1], NULL, NULL }; hw_regs_t hw[2], *hws[] = { &hw[0], &hw[1] };
struct ide_port_info d = icside_v6_port_info; struct ide_port_info d = icside_v6_port_info;
ioc_base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0); ioc_base = ecardm_iomap(ec, ECARD_RES_IOCFAST, 0, 0);
...@@ -507,7 +507,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec) ...@@ -507,7 +507,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
icside_setup_ports(&hw[0], easi_base, &icside_cardinfo_v6_1, ec); icside_setup_ports(&hw[0], easi_base, &icside_cardinfo_v6_1, ec);
icside_setup_ports(&hw[1], easi_base, &icside_cardinfo_v6_2, ec); icside_setup_ports(&hw[1], easi_base, &icside_cardinfo_v6_2, ec);
host = ide_host_alloc(&d, hws); host = ide_host_alloc(&d, hws, 2);
if (host == NULL) if (host == NULL)
return -ENODEV; return -ENODEV;
......
...@@ -31,7 +31,7 @@ static const struct ide_port_info ide_4drives_port_info = { ...@@ -31,7 +31,7 @@ static const struct ide_port_info ide_4drives_port_info = {
static int __init ide_4drives_init(void) static int __init ide_4drives_init(void)
{ {
unsigned long base = 0x1f0, ctl = 0x3f6; unsigned long base = 0x1f0, ctl = 0x3f6;
hw_regs_t hw, *hws[] = { &hw, &hw, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw, &hw };
if (probe_4drives == 0) if (probe_4drives == 0)
return -ENODEV; return -ENODEV;
...@@ -54,7 +54,7 @@ static int __init ide_4drives_init(void) ...@@ -54,7 +54,7 @@ static int __init ide_4drives_init(void)
ide_std_init_ports(&hw, base, ctl); ide_std_init_ports(&hw, base, ctl);
hw.irq = 14; hw.irq = 14;
return ide_host_add(&ide_4drives_port_info, hws, NULL); return ide_host_add(&ide_4drives_port_info, hws, 2, NULL);
} }
module_init(ide_4drives_init); module_init(ide_4drives_init);
......
...@@ -164,7 +164,7 @@ static struct ide_host *idecs_register(unsigned long io, unsigned long ctl, ...@@ -164,7 +164,7 @@ static struct ide_host *idecs_register(unsigned long io, unsigned long ctl,
struct ide_host *host; struct ide_host *host;
ide_hwif_t *hwif; ide_hwif_t *hwif;
int i, rc; int i, rc;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
if (!request_region(io, 8, DRV_NAME)) { if (!request_region(io, 8, DRV_NAME)) {
printk(KERN_ERR "%s: I/O resource 0x%lX-0x%lX not free.\n", printk(KERN_ERR "%s: I/O resource 0x%lX-0x%lX not free.\n",
...@@ -184,7 +184,7 @@ static struct ide_host *idecs_register(unsigned long io, unsigned long ctl, ...@@ -184,7 +184,7 @@ static struct ide_host *idecs_register(unsigned long io, unsigned long ctl,
hw.irq = irq; hw.irq = irq;
hw.dev = &handle->dev; hw.dev = &handle->dev;
rc = ide_host_add(&idecs_port_info, hws, &host); rc = ide_host_add(&idecs_port_info, hws, 1, &host);
if (rc) if (rc)
goto out_release; goto out_release;
......
...@@ -86,7 +86,7 @@ static void ide_generic_check_pci_legacy_iobases(int *primary, int *secondary) ...@@ -86,7 +86,7 @@ static void ide_generic_check_pci_legacy_iobases(int *primary, int *secondary)
static int __init ide_generic_init(void) static int __init ide_generic_init(void)
{ {
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
unsigned long io_addr; unsigned long io_addr;
int i, rc = 0, primary = 0, secondary = 0; int i, rc = 0, primary = 0, secondary = 0;
...@@ -133,7 +133,7 @@ static int __init ide_generic_init(void) ...@@ -133,7 +133,7 @@ static int __init ide_generic_init(void)
#else #else
hw.irq = legacy_irqs[i]; hw.irq = legacy_irqs[i];
#endif #endif
rc = ide_host_add(&ide_generic_port_info, hws, NULL); rc = ide_host_add(&ide_generic_port_info, hws, 1, NULL);
if (rc) { if (rc) {
release_region(io_addr + 0x206, 1); release_region(io_addr + 0x206, 1);
release_region(io_addr, 8); release_region(io_addr, 8);
......
...@@ -83,7 +83,7 @@ static const struct ide_port_info h8300_port_info = { ...@@ -83,7 +83,7 @@ static const struct ide_port_info h8300_port_info = {
static int __init h8300_ide_init(void) static int __init h8300_ide_init(void)
{ {
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
printk(KERN_INFO DRV_NAME ": H8/300 generic IDE interface\n"); printk(KERN_INFO DRV_NAME ": H8/300 generic IDE interface\n");
...@@ -96,7 +96,7 @@ static int __init h8300_ide_init(void) ...@@ -96,7 +96,7 @@ static int __init h8300_ide_init(void)
hw_setup(&hw); hw_setup(&hw);
return ide_host_add(&h8300_port_info, hws, NULL); return ide_host_add(&h8300_port_info, hws, 1, NULL);
out_busy: out_busy:
printk(KERN_ERR "ide-h8300: IDE I/F resource already used.\n"); printk(KERN_ERR "ide-h8300: IDE I/F resource already used.\n");
......
...@@ -40,7 +40,7 @@ static void ide_legacy_init_one(hw_regs_t **hws, hw_regs_t *hw, ...@@ -40,7 +40,7 @@ static void ide_legacy_init_one(hw_regs_t **hws, hw_regs_t *hw,
int ide_legacy_device_add(const struct ide_port_info *d, unsigned long config) int ide_legacy_device_add(const struct ide_port_info *d, unsigned long config)
{ {
hw_regs_t hw[2], *hws[] = { NULL, NULL, NULL, NULL }; hw_regs_t hw[2], *hws[] = { NULL, NULL };
memset(&hw, 0, sizeof(hw)); memset(&hw, 0, sizeof(hw));
...@@ -52,6 +52,6 @@ int ide_legacy_device_add(const struct ide_port_info *d, unsigned long config) ...@@ -52,6 +52,6 @@ int ide_legacy_device_add(const struct ide_port_info *d, unsigned long config)
(d->host_flags & IDE_HFLAG_SINGLE)) (d->host_flags & IDE_HFLAG_SINGLE))
return -ENOENT; return -ENOENT;
return ide_host_add(d, hws, NULL); return ide_host_add(d, hws, 2, NULL);
} }
EXPORT_SYMBOL_GPL(ide_legacy_device_add); EXPORT_SYMBOL_GPL(ide_legacy_device_add);
...@@ -37,7 +37,7 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) ...@@ -37,7 +37,7 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
struct ide_host *host; struct ide_host *host;
unsigned long base, ctl; unsigned long base, ctl;
int rc; int rc;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
printk(KERN_INFO DRV_NAME ": generic PnP IDE interface\n"); printk(KERN_INFO DRV_NAME ": generic PnP IDE interface\n");
...@@ -64,7 +64,7 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) ...@@ -64,7 +64,7 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
ide_std_init_ports(&hw, base, ctl); ide_std_init_ports(&hw, base, ctl);
hw.irq = pnp_irq(dev, 0); hw.irq = pnp_irq(dev, 0);
rc = ide_host_add(&ide_pnp_port_info, hws, &host); rc = ide_host_add(&ide_pnp_port_info, hws, 1, &host);
if (rc) if (rc)
goto out; goto out;
......
...@@ -1261,7 +1261,8 @@ static int ide_port_alloc_devices(ide_hwif_t *hwif, int node) ...@@ -1261,7 +1261,8 @@ static int ide_port_alloc_devices(ide_hwif_t *hwif, int node)
return -ENOMEM; return -ENOMEM;
} }
struct ide_host *ide_host_alloc(const struct ide_port_info *d, hw_regs_t **hws) struct ide_host *ide_host_alloc(const struct ide_port_info *d, hw_regs_t **hws,
unsigned int n_ports)
{ {
struct ide_host *host; struct ide_host *host;
struct device *dev = hws[0] ? hws[0]->dev : NULL; struct device *dev = hws[0] ? hws[0]->dev : NULL;
...@@ -1272,7 +1273,7 @@ struct ide_host *ide_host_alloc(const struct ide_port_info *d, hw_regs_t **hws) ...@@ -1272,7 +1273,7 @@ struct ide_host *ide_host_alloc(const struct ide_port_info *d, hw_regs_t **hws)
if (host == NULL) if (host == NULL)
return NULL; return NULL;
for (i = 0; i < MAX_HOST_PORTS; i++) { for (i = 0; i < n_ports; i++) {
ide_hwif_t *hwif; ide_hwif_t *hwif;
int idx; int idx;
...@@ -1443,12 +1444,12 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d, ...@@ -1443,12 +1444,12 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d,
EXPORT_SYMBOL_GPL(ide_host_register); EXPORT_SYMBOL_GPL(ide_host_register);
int ide_host_add(const struct ide_port_info *d, hw_regs_t **hws, int ide_host_add(const struct ide_port_info *d, hw_regs_t **hws,
struct ide_host **hostp) unsigned int n_ports, struct ide_host **hostp)
{ {
struct ide_host *host; struct ide_host *host;
int rc; int rc;
host = ide_host_alloc(d, hws); host = ide_host_alloc(d, hws, n_ports);
if (host == NULL) if (host == NULL)
return -ENOMEM; return -ENOMEM;
......
...@@ -54,7 +54,7 @@ static int __devinit plat_ide_probe(struct platform_device *pdev) ...@@ -54,7 +54,7 @@ static int __devinit plat_ide_probe(struct platform_device *pdev)
struct pata_platform_info *pdata; struct pata_platform_info *pdata;
struct ide_host *host; struct ide_host *host;
int ret = 0, mmio = 0; int ret = 0, mmio = 0;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
struct ide_port_info d = platform_ide_port_info; struct ide_port_info d = platform_ide_port_info;
pdata = pdev->dev.platform_data; pdata = pdev->dev.platform_data;
...@@ -98,7 +98,7 @@ static int __devinit plat_ide_probe(struct platform_device *pdev) ...@@ -98,7 +98,7 @@ static int __devinit plat_ide_probe(struct platform_device *pdev)
if (mmio) if (mmio)
d.host_flags |= IDE_HFLAG_MMIO; d.host_flags |= IDE_HFLAG_MMIO;
ret = ide_host_add(&d, hws, &host); ret = ide_host_add(&d, hws, 1, &host);
if (ret) if (ret)
goto out; goto out;
......
...@@ -96,7 +96,7 @@ static int __init macide_init(void) ...@@ -96,7 +96,7 @@ static int __init macide_init(void)
ide_ack_intr_t *ack_intr; ide_ack_intr_t *ack_intr;
unsigned long base; unsigned long base;
int irq; int irq;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
if (!MACH_IS_MAC) if (!MACH_IS_MAC)
return -ENODEV; return -ENODEV;
...@@ -126,7 +126,7 @@ static int __init macide_init(void) ...@@ -126,7 +126,7 @@ static int __init macide_init(void)
macide_setup_ports(&hw, base, irq, ack_intr); macide_setup_ports(&hw, base, irq, ack_intr);
return ide_host_add(&macide_port_info, hws, NULL); return ide_host_add(&macide_port_info, hws, 1, NULL);
} }
module_init(macide_init); module_init(macide_init);
......
...@@ -316,7 +316,7 @@ static int __init palm_bk3710_probe(struct platform_device *pdev) ...@@ -316,7 +316,7 @@ static int __init palm_bk3710_probe(struct platform_device *pdev)
void __iomem *base; void __iomem *base;
unsigned long rate, mem_size; unsigned long rate, mem_size;
int i, rc; int i, rc;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
clk = clk_get(&pdev->dev, "IDECLK"); clk = clk_get(&pdev->dev, "IDECLK");
if (IS_ERR(clk)) if (IS_ERR(clk))
...@@ -369,7 +369,7 @@ static int __init palm_bk3710_probe(struct platform_device *pdev) ...@@ -369,7 +369,7 @@ static int __init palm_bk3710_probe(struct platform_device *pdev)
ATA_UDMA5; ATA_UDMA5;
/* Register the IDE interface with Linux */ /* Register the IDE interface with Linux */
rc = ide_host_add(&palm_bk3710_port_info, hws, NULL); rc = ide_host_add(&palm_bk3710_port_info, hws, 1, NULL);
if (rc) if (rc)
goto out; goto out;
......
...@@ -1029,7 +1029,7 @@ static int __devinit pmac_ide_setup_device(pmac_ide_hwif_t *pmif, hw_regs_t *hw) ...@@ -1029,7 +1029,7 @@ static int __devinit pmac_ide_setup_device(pmac_ide_hwif_t *pmif, hw_regs_t *hw)
const int *bidp; const int *bidp;
struct ide_host *host; struct ide_host *host;
ide_hwif_t *hwif; ide_hwif_t *hwif;
hw_regs_t *hws[] = { hw, NULL, NULL, NULL }; hw_regs_t *hws[] = { hw };
struct ide_port_info d = pmac_port_info; struct ide_port_info d = pmac_port_info;
int rc; int rc;
...@@ -1077,7 +1077,7 @@ static int __devinit pmac_ide_setup_device(pmac_ide_hwif_t *pmif, hw_regs_t *hw) ...@@ -1077,7 +1077,7 @@ static int __devinit pmac_ide_setup_device(pmac_ide_hwif_t *pmif, hw_regs_t *hw)
/* Make sure we have sane timings */ /* Make sure we have sane timings */
sanitize_timings(pmif); sanitize_timings(pmif);
host = ide_host_alloc(&d, hws); host = ide_host_alloc(&d, hws, 1);
if (host == NULL) if (host == NULL)
return -ENOMEM; return -ENOMEM;
hwif = host->ports[0]; hwif = host->ports[0];
......
...@@ -135,7 +135,7 @@ static const char *q40_ide_names[Q40IDE_NUM_HWIFS]={ ...@@ -135,7 +135,7 @@ static const char *q40_ide_names[Q40IDE_NUM_HWIFS]={
static int __init q40ide_init(void) static int __init q40ide_init(void)
{ {
int i; int i;
hw_regs_t hw[Q40IDE_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL }; hw_regs_t hw[Q40IDE_NUM_HWIFS], *hws[] = { NULL, NULL };
if (!MACH_IS_Q40) if (!MACH_IS_Q40)
return -ENODEV; return -ENODEV;
...@@ -162,7 +162,7 @@ static int __init q40ide_init(void) ...@@ -162,7 +162,7 @@ static int __init q40ide_init(void)
hws[i] = &hw[i]; hws[i] = &hw[i];
} }
return ide_host_add(&q40ide_port_info, hws, NULL); return ide_host_add(&q40ide_port_info, hws, Q40IDE_NUM_HWIFS, NULL);
} }
module_init(q40ide_init); module_init(q40ide_init);
......
...@@ -36,7 +36,7 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id) ...@@ -36,7 +36,7 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id)
void __iomem *base; void __iomem *base;
struct ide_host *host; struct ide_host *host;
int ret; int ret;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
ret = ecard_request_resources(ec); ret = ecard_request_resources(ec);
if (ret) if (ret)
...@@ -52,7 +52,7 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id) ...@@ -52,7 +52,7 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id)
rapide_setup_ports(&hw, base, base + 0x818, 1 << 6, ec->irq); rapide_setup_ports(&hw, base, base + 0x818, 1 << 6, ec->irq);
hw.dev = &ec->dev; hw.dev = &ec->dev;
ret = ide_host_add(&rapide_port_info, hws, &host); ret = ide_host_add(&rapide_port_info, hws, 1, &host);
if (ret) if (ret)
goto release; goto release;
......
...@@ -559,7 +559,7 @@ static int scc_ide_setup_pci_device(struct pci_dev *dev, ...@@ -559,7 +559,7 @@ static int scc_ide_setup_pci_device(struct pci_dev *dev,
{ {
struct scc_ports *ports = pci_get_drvdata(dev); struct scc_ports *ports = pci_get_drvdata(dev);
struct ide_host *host; struct ide_host *host;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
int i, rc; int i, rc;
memset(&hw, 0, sizeof(hw)); memset(&hw, 0, sizeof(hw));
...@@ -568,7 +568,7 @@ static int scc_ide_setup_pci_device(struct pci_dev *dev, ...@@ -568,7 +568,7 @@ static int scc_ide_setup_pci_device(struct pci_dev *dev,
hw.irq = dev->irq; hw.irq = dev->irq;
hw.dev = &dev->dev; hw.dev = &dev->dev;
rc = ide_host_add(d, hws, &host); rc = ide_host_add(d, hws, 1, &host);
if (rc) if (rc)
return rc; return rc;
......
...@@ -538,7 +538,7 @@ int ide_pci_init_one(struct pci_dev *dev, const struct ide_port_info *d, ...@@ -538,7 +538,7 @@ int ide_pci_init_one(struct pci_dev *dev, const struct ide_port_info *d,
void *priv) void *priv)
{ {
struct ide_host *host; struct ide_host *host;
hw_regs_t hw[4], *hws[] = { NULL, NULL, NULL, NULL }; hw_regs_t hw[2], *hws[] = { NULL, NULL };
int ret; int ret;
ret = ide_setup_pci_controller(dev, d, 1); ret = ide_setup_pci_controller(dev, d, 1);
...@@ -547,7 +547,7 @@ int ide_pci_init_one(struct pci_dev *dev, const struct ide_port_info *d, ...@@ -547,7 +547,7 @@ int ide_pci_init_one(struct pci_dev *dev, const struct ide_port_info *d,
ide_pci_setup_ports(dev, d, &hw[0], &hws[0]); ide_pci_setup_ports(dev, d, &hw[0], &hws[0]);
host = ide_host_alloc(d, hws); host = ide_host_alloc(d, hws, 2);
if (host == NULL) { if (host == NULL) {
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto out;
...@@ -596,7 +596,7 @@ int ide_pci_init_two(struct pci_dev *dev1, struct pci_dev *dev2, ...@@ -596,7 +596,7 @@ int ide_pci_init_two(struct pci_dev *dev1, struct pci_dev *dev2,
ide_pci_setup_ports(pdev[i], d, &hw[i*2], &hws[i*2]); ide_pci_setup_ports(pdev[i], d, &hw[i*2], &hws[i*2]);
} }
host = ide_host_alloc(d, hws); host = ide_host_alloc(d, hws, 4);
if (host == NULL) { if (host == NULL) {
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto out;
......
...@@ -546,7 +546,7 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev) ...@@ -546,7 +546,7 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
unsigned long cmd_base, irqport; unsigned long cmd_base, irqport;
unsigned long bar0, cmd_phys_base, ctl; unsigned long bar0, cmd_phys_base, ctl;
void __iomem *virt_base; void __iomem *virt_base;
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; hw_regs_t hw, *hws[] = { &hw };
int rc; int rc;
/* Get the CmdBlk and CtrlBlk Base Registers */ /* Get the CmdBlk and CtrlBlk Base Registers */
...@@ -580,7 +580,7 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev) ...@@ -580,7 +580,7 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
/* Initializing chipset IRQ Registers */ /* Initializing chipset IRQ Registers */
writel(0x03, (void __iomem *)(irqport + IOC4_INTR_SET * 4)); writel(0x03, (void __iomem *)(irqport + IOC4_INTR_SET * 4));
rc = ide_host_add(&sgiioc4_port_info, hws, NULL); rc = ide_host_add(&sgiioc4_port_info, hws, 1, NULL);
if (!rc) if (!rc)
return 0; return 0;
......
...@@ -130,8 +130,7 @@ static const struct ide_port_info tx4938ide_port_info __initdata = { ...@@ -130,8 +130,7 @@ static const struct ide_port_info tx4938ide_port_info __initdata = {
static int __init tx4938ide_probe(struct platform_device *pdev) static int __init tx4938ide_probe(struct platform_device *pdev)
{ {
hw_regs_t hw; hw_regs_t hw, *hws[] = { &hw };
hw_regs_t *hws[] = { &hw, NULL, NULL, NULL };
struct ide_host *host; struct ide_host *host;
struct resource *res; struct resource *res;
struct tx4938ide_platform_info *pdata = pdev->dev.platform_data; struct tx4938ide_platform_info *pdata = pdev->dev.platform_data;
...@@ -183,7 +182,7 @@ static int __init tx4938ide_probe(struct platform_device *pdev) ...@@ -183,7 +182,7 @@ static int __init tx4938ide_probe(struct platform_device *pdev)
tx4938ide_tune_ebusc(pdata->ebus_ch, pdata->gbus_clock, 0); tx4938ide_tune_ebusc(pdata->ebus_ch, pdata->gbus_clock, 0);
else else
d.port_ops = NULL; d.port_ops = NULL;
ret = ide_host_add(&d, hws, &host); ret = ide_host_add(&d, hws, 1, &host);
if (!ret) if (!ret)
platform_set_drvdata(pdev, host); platform_set_drvdata(pdev, host);
return ret; return ret;
......
...@@ -537,8 +537,7 @@ static const struct ide_port_info tx4939ide_port_info __initdata = { ...@@ -537,8 +537,7 @@ static const struct ide_port_info tx4939ide_port_info __initdata = {
static int __init tx4939ide_probe(struct platform_device *pdev) static int __init tx4939ide_probe(struct platform_device *pdev)
{ {
hw_regs_t hw; hw_regs_t hw, *hws[] = { &hw };
hw_regs_t *hws[] = { &hw, NULL, NULL, NULL };
struct ide_host *host; struct ide_host *host;
struct resource *res; struct resource *res;
int irq, ret; int irq, ret;
...@@ -581,7 +580,7 @@ static int __init tx4939ide_probe(struct platform_device *pdev) ...@@ -581,7 +580,7 @@ static int __init tx4939ide_probe(struct platform_device *pdev)
hw.dev = &pdev->dev; hw.dev = &pdev->dev;
pr_info("TX4939 IDE interface (base %#lx, irq %d)\n", mapbase, irq); pr_info("TX4939 IDE interface (base %#lx, irq %d)\n", mapbase, irq);
host = ide_host_alloc(&tx4939ide_port_info, hws); host = ide_host_alloc(&tx4939ide_port_info, hws, 1);
if (!host) if (!host)
return -ENOMEM; return -ENOMEM;
/* use extra_base for base address of the all registers */ /* use extra_base for base address of the all registers */
......
...@@ -1456,11 +1456,12 @@ void ide_undecoded_slave(ide_drive_t *); ...@@ -1456,11 +1456,12 @@ void ide_undecoded_slave(ide_drive_t *);
void ide_port_apply_params(ide_hwif_t *); void ide_port_apply_params(ide_hwif_t *);
int ide_sysfs_register_port(ide_hwif_t *); int ide_sysfs_register_port(ide_hwif_t *);
struct ide_host *ide_host_alloc(const struct ide_port_info *, hw_regs_t **); struct ide_host *ide_host_alloc(const struct ide_port_info *, hw_regs_t **,
unsigned int);
void ide_host_free(struct ide_host *); void ide_host_free(struct ide_host *);
int ide_host_register(struct ide_host *, const struct ide_port_info *, int ide_host_register(struct ide_host *, const struct ide_port_info *,
hw_regs_t **); hw_regs_t **);
int ide_host_add(const struct ide_port_info *, hw_regs_t **, int ide_host_add(const struct ide_port_info *, hw_regs_t **, unsigned int,
struct ide_host **); struct ide_host **);
void ide_host_remove(struct ide_host *); void ide_host_remove(struct ide_host *);
int ide_legacy_device_add(const struct ide_port_info *, unsigned long); int ide_legacy_device_add(const struct ide_port_info *, unsigned long);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment