ide: add "initializing" argument to ide_register_hw()
Add "initializing" argument to ide_register_hw() and use it instead of ide.c wide variable of the same name. Update all users of ide_register_hw() accordingly. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
Родитель
7f8f48af08
Коммит
869c56ee9d
|
@ -45,7 +45,7 @@ bastide_register(unsigned int base, unsigned int aux, int irq,
|
|||
hw.io_ports[IDE_CONTROL_OFFSET] = aux + (6 * 0x20);
|
||||
hw.irq = irq;
|
||||
|
||||
ide_register_hw(&hw, hwif);
|
||||
ide_register_hw(&hw, 0, hwif);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -38,6 +38,6 @@ void __init ide_arm_init(void)
|
|||
memset(&hw, 0, sizeof(hw));
|
||||
ide_std_init_ports(&hw, IDE_ARM_IO, IDE_ARM_IO + 0x206);
|
||||
hw.irq = IDE_ARM_IRQ;
|
||||
ide_register_hw(&hw, NULL);
|
||||
ide_register_hw(&hw, 1, NULL);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -796,7 +796,7 @@ init_e100_ide (void)
|
|||
ide_offsets,
|
||||
0, 0, cris_ide_ack_intr,
|
||||
ide_default_irq(0));
|
||||
ide_register_hw(&hw, &hwif);
|
||||
ide_register_hw(&hw, 1, &hwif);
|
||||
hwif->mmio = 1;
|
||||
hwif->chipset = ide_etrax100;
|
||||
hwif->tuneproc = &tune_cris_ide;
|
||||
|
|
|
@ -101,7 +101,7 @@ void __init h8300_ide_init(void)
|
|||
hw_setup(&hw);
|
||||
|
||||
/* register if */
|
||||
idx = ide_register_hw(&hw, &hwif);
|
||||
idx = ide_register_hw(&hw, 1, &hwif);
|
||||
if (idx == -1) {
|
||||
printk(KERN_ERR "ide-h8300: IDE I/F register failed\n");
|
||||
return;
|
||||
|
|
|
@ -42,7 +42,7 @@ static int idepnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id
|
|||
hw.irq = pnp_irq(dev, 0);
|
||||
hw.dma = NO_DMA;
|
||||
|
||||
index = ide_register_hw(&hw, &hwif);
|
||||
index = ide_register_hw(&hw, 1, &hwif);
|
||||
|
||||
if (index != -1) {
|
||||
printk(KERN_INFO "ide%d: generic PnP IDE interface\n", index);
|
||||
|
|
|
@ -168,7 +168,6 @@ static const u8 ide_hwif_to_major[] = { IDE0_MAJOR, IDE1_MAJOR,
|
|||
|
||||
static int idebus_parameter; /* holds the "idebus=" parameter */
|
||||
static int system_bus_speed; /* holds what we think is VESA/PCI bus speed */
|
||||
static int initializing; /* set while initializing built-in drivers */
|
||||
|
||||
DECLARE_MUTEX(ide_cfg_sem);
|
||||
__cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock);
|
||||
|
@ -302,9 +301,7 @@ static void __init init_ide_data (void)
|
|||
#endif
|
||||
}
|
||||
#ifdef CONFIG_IDE_ARM
|
||||
initializing = 1;
|
||||
ide_arm_init();
|
||||
initializing = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -749,6 +746,7 @@ void ide_setup_ports ( hw_regs_t *hw,
|
|||
/**
|
||||
* ide_register_hw_with_fixup - register IDE interface
|
||||
* @hw: hardware registers
|
||||
* @initializing: set while initializing built-in drivers
|
||||
* @hwifp: pointer to returned hwif
|
||||
* @fixup: fixup function
|
||||
*
|
||||
|
@ -758,7 +756,9 @@ void ide_setup_ports ( hw_regs_t *hw,
|
|||
* Returns -1 on error.
|
||||
*/
|
||||
|
||||
int ide_register_hw_with_fixup(hw_regs_t *hw, ide_hwif_t **hwifp, void(*fixup)(ide_hwif_t *hwif))
|
||||
int ide_register_hw_with_fixup(hw_regs_t *hw, int initializing,
|
||||
ide_hwif_t **hwifp,
|
||||
void(*fixup)(ide_hwif_t *hwif))
|
||||
{
|
||||
int index, retry = 1;
|
||||
ide_hwif_t *hwif;
|
||||
|
@ -810,9 +810,9 @@ found:
|
|||
|
||||
EXPORT_SYMBOL(ide_register_hw_with_fixup);
|
||||
|
||||
int ide_register_hw(hw_regs_t *hw, ide_hwif_t **hwifp)
|
||||
int ide_register_hw(hw_regs_t *hw, int initializing, ide_hwif_t **hwifp)
|
||||
{
|
||||
return ide_register_hw_with_fixup(hw, hwifp, NULL);
|
||||
return ide_register_hw_with_fixup(hw, initializing, hwifp, NULL);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ide_register_hw);
|
||||
|
@ -1108,7 +1108,7 @@ int generic_ide_ioctl(ide_drive_t *drive, struct file *file, struct block_device
|
|||
ide_init_hwif_ports(&hw, (unsigned long) args[0],
|
||||
(unsigned long) args[1], NULL);
|
||||
hw.irq = args[2];
|
||||
if (ide_register_hw(&hw, NULL) == -1)
|
||||
if (ide_register_hw(&hw, 0, NULL) == -1)
|
||||
return -EIO;
|
||||
return 0;
|
||||
}
|
||||
|
@ -1819,10 +1819,8 @@ static int __init ide_init(void)
|
|||
(void)qd65xx_init();
|
||||
#endif
|
||||
|
||||
initializing = 1;
|
||||
/* Probe for special PCI and other "known" interface chipsets. */
|
||||
probe_for_hwifs();
|
||||
initializing = 0;
|
||||
|
||||
proc_ide_create();
|
||||
|
||||
|
|
|
@ -213,7 +213,7 @@ fail_base2:
|
|||
IRQ_AMIGA_PORTS);
|
||||
}
|
||||
|
||||
index = ide_register_hw(&hw, &hwif);
|
||||
index = ide_register_hw(&hw, 1, &hwif);
|
||||
if (index != -1) {
|
||||
hwif->mmio = 1;
|
||||
printk("ide%d: ", index);
|
||||
|
|
|
@ -70,7 +70,7 @@ void __init falconide_init(void)
|
|||
0, 0, NULL,
|
||||
// falconide_iops,
|
||||
IRQ_MFP_IDE);
|
||||
index = ide_register_hw(&hw, NULL);
|
||||
index = ide_register_hw(&hw, 1, NULL);
|
||||
|
||||
if (index != -1)
|
||||
printk("ide%d: Falcon IDE interface\n", index);
|
||||
|
|
|
@ -165,7 +165,7 @@ found:
|
|||
// &gayle_iops,
|
||||
IRQ_AMIGA_PORTS);
|
||||
|
||||
index = ide_register_hw(&hw, &hwif);
|
||||
index = ide_register_hw(&hw, 1, &hwif);
|
||||
if (index != -1) {
|
||||
hwif->mmio = 1;
|
||||
switch (i) {
|
||||
|
|
|
@ -153,7 +153,7 @@ static int idecs_register(unsigned long io, unsigned long ctl, unsigned long irq
|
|||
hw.irq = irq;
|
||||
hw.chipset = ide_pci;
|
||||
hw.dev = &handle->dev;
|
||||
return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave);
|
||||
return ide_register_hw_with_fixup(&hw, 0, NULL, ide_undecoded_slave);
|
||||
}
|
||||
|
||||
/*======================================================================
|
||||
|
|
|
@ -102,21 +102,21 @@ void macide_init(void)
|
|||
0, 0, macide_ack_intr,
|
||||
// quadra_ide_iops,
|
||||
IRQ_NUBUS_F);
|
||||
index = ide_register_hw(&hw, &hwif);
|
||||
index = ide_register_hw(&hw, 1, &hwif);
|
||||
break;
|
||||
case MAC_IDE_PB:
|
||||
ide_setup_ports(&hw, IDE_BASE, macide_offsets,
|
||||
0, 0, macide_ack_intr,
|
||||
// macide_pb_iops,
|
||||
IRQ_NUBUS_C);
|
||||
index = ide_register_hw(&hw, &hwif);
|
||||
index = ide_register_hw(&hw, 1, &hwif);
|
||||
break;
|
||||
case MAC_IDE_BABOON:
|
||||
ide_setup_ports(&hw, BABOON_BASE, macide_offsets,
|
||||
0, 0, NULL,
|
||||
// macide_baboon_iops,
|
||||
IRQ_BABOON_1);
|
||||
index = ide_register_hw(&hw, &hwif);
|
||||
index = ide_register_hw(&hw, 1, &hwif);
|
||||
if (index == -1) break;
|
||||
if (macintosh_config->ident == MAC_MODEL_PB190) {
|
||||
|
||||
|
|
|
@ -142,7 +142,7 @@ void q40ide_init(void)
|
|||
0, NULL,
|
||||
// m68kide_iops,
|
||||
q40ide_default_irq(pcide_bases[i]));
|
||||
index = ide_register_hw(&hw, &hwif);
|
||||
index = ide_register_hw(&hw, 1, &hwif);
|
||||
// **FIXME**
|
||||
if (index != -1)
|
||||
hwif->mmio = 1;
|
||||
|
|
|
@ -80,7 +80,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
|
|||
hw.irq = dev->irq;
|
||||
hw.chipset = ide_pci; /* this enables IRQ sharing */
|
||||
|
||||
rc = ide_register_hw_with_fixup(&hw, &hwif, ide_undecoded_slave);
|
||||
rc = ide_register_hw_with_fixup(&hw, 0, &hwif, ide_undecoded_slave);
|
||||
if (rc < 0) {
|
||||
printk(KERN_ERR "delkin_cb: ide_register_hw failed (%d)\n", rc);
|
||||
pci_disable_device(dev);
|
||||
|
|
|
@ -563,7 +563,7 @@ static void media_bay_step(int i)
|
|||
ide_init_hwif_ports(&hw, (unsigned long) bay->cd_base, (unsigned long) 0, NULL);
|
||||
hw.irq = bay->cd_irq;
|
||||
hw.chipset = ide_pmac;
|
||||
bay->cd_index = ide_register_hw(&hw, NULL);
|
||||
bay->cd_index = ide_register_hw(&hw, 0, NULL);
|
||||
pmu_resume();
|
||||
}
|
||||
if (bay->cd_index == -1) {
|
||||
|
|
|
@ -223,8 +223,9 @@ typedef struct hw_regs_s {
|
|||
/*
|
||||
* Register new hardware with ide
|
||||
*/
|
||||
int ide_register_hw(hw_regs_t *hw, struct hwif_s **hwifp);
|
||||
int ide_register_hw_with_fixup(hw_regs_t *, struct hwif_s **, void (*)(struct hwif_s *));
|
||||
int ide_register_hw(hw_regs_t *, int, struct hwif_s **);
|
||||
int ide_register_hw_with_fixup(hw_regs_t *, int, struct hwif_s **,
|
||||
void (*)(struct hwif_s *));
|
||||
|
||||
/*
|
||||
* Set up hw_regs_t structure before calling ide_register_hw (optional)
|
||||
|
|
Загрузка…
Ссылка в новой задаче