Browse Source

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>
Bartlomiej Zolnierkiewicz 18 years ago
parent
commit
869c56ee9d

+ 1 - 1
drivers/ide/arm/bast-ide.c

@@ -45,7 +45,7 @@ bastide_register(unsigned int base, unsigned int aux, int irq,
 	hw.io_ports[IDE_CONTROL_OFFSET] = aux + (6 * 0x20);
 	hw.io_ports[IDE_CONTROL_OFFSET] = aux + (6 * 0x20);
 	hw.irq = irq;
 	hw.irq = irq;
 
 
-	ide_register_hw(&hw, hwif);
+	ide_register_hw(&hw, 0, hwif);
 
 
 	return 0;
 	return 0;
 }
 }

+ 1 - 1
drivers/ide/arm/ide_arm.c

@@ -38,6 +38,6 @@ void __init ide_arm_init(void)
 		memset(&hw, 0, sizeof(hw));
 		memset(&hw, 0, sizeof(hw));
 		ide_std_init_ports(&hw, IDE_ARM_IO, IDE_ARM_IO + 0x206);
 		ide_std_init_ports(&hw, IDE_ARM_IO, IDE_ARM_IO + 0x206);
 		hw.irq = IDE_ARM_IRQ;
 		hw.irq = IDE_ARM_IRQ;
-		ide_register_hw(&hw, NULL);
+		ide_register_hw(&hw, 1, NULL);
 	}
 	}
 }
 }

+ 1 - 1
drivers/ide/cris/ide-cris.c

@@ -796,7 +796,7 @@ init_e100_ide (void)
 		                ide_offsets,
 		                ide_offsets,
 		                0, 0, cris_ide_ack_intr,
 		                0, 0, cris_ide_ack_intr,
 		                ide_default_irq(0));
 		                ide_default_irq(0));
-		ide_register_hw(&hw, &hwif);
+		ide_register_hw(&hw, 1, &hwif);
 		hwif->mmio = 1;
 		hwif->mmio = 1;
 		hwif->chipset = ide_etrax100;
 		hwif->chipset = ide_etrax100;
 		hwif->tuneproc = &tune_cris_ide;
 		hwif->tuneproc = &tune_cris_ide;

+ 1 - 1
drivers/ide/h8300/ide-h8300.c

@@ -101,7 +101,7 @@ void __init h8300_ide_init(void)
 	hw_setup(&hw);
 	hw_setup(&hw);
 
 
 	/* register if */
 	/* register if */
-	idx = ide_register_hw(&hw, &hwif);
+	idx = ide_register_hw(&hw, 1, &hwif);
 	if (idx == -1) {
 	if (idx == -1) {
 		printk(KERN_ERR "ide-h8300: IDE I/F register failed\n");
 		printk(KERN_ERR "ide-h8300: IDE I/F register failed\n");
 		return;
 		return;

+ 1 - 1
drivers/ide/ide-pnp.c

@@ -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.irq = pnp_irq(dev, 0);
 	hw.dma = NO_DMA;
 	hw.dma = NO_DMA;
 
 
-	index = ide_register_hw(&hw, &hwif);
+	index = ide_register_hw(&hw, 1, &hwif);
 
 
 	if (index != -1) {
 	if (index != -1) {
 	    	printk(KERN_INFO "ide%d: generic PnP IDE interface\n", index);
 	    	printk(KERN_INFO "ide%d: generic PnP IDE interface\n", index);

+ 7 - 9
drivers/ide/ide.c

@@ -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 idebus_parameter;	/* holds the "idebus=" parameter */
 static int system_bus_speed;	/* holds what we think is VESA/PCI bus speed */
 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);
 DECLARE_MUTEX(ide_cfg_sem);
  __cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock);
  __cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock);
@@ -302,9 +301,7 @@ static void __init init_ide_data (void)
 #endif
 #endif
 	}
 	}
 #ifdef CONFIG_IDE_ARM
 #ifdef CONFIG_IDE_ARM
-	initializing = 1;
 	ide_arm_init();
 	ide_arm_init();
-	initializing = 0;
 #endif
 #endif
 }
 }
 
 
@@ -749,6 +746,7 @@ void ide_setup_ports (	hw_regs_t *hw,
 /**
 /**
  *	ide_register_hw_with_fixup	-	register IDE interface
  *	ide_register_hw_with_fixup	-	register IDE interface
  *	@hw: hardware registers
  *	@hw: hardware registers
+ *	@initializing: set while initializing built-in drivers
  *	@hwifp: pointer to returned hwif
  *	@hwifp: pointer to returned hwif
  *	@fixup: fixup function
  *	@fixup: fixup function
  *
  *
@@ -758,7 +756,9 @@ void ide_setup_ports (	hw_regs_t *hw,
  *	Returns -1 on error.
  *	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;
 	int index, retry = 1;
 	ide_hwif_t *hwif;
 	ide_hwif_t *hwif;
@@ -810,9 +810,9 @@ found:
 
 
 EXPORT_SYMBOL(ide_register_hw_with_fixup);
 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);
 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],
 			ide_init_hwif_ports(&hw, (unsigned long) args[0],
 					    (unsigned long) args[1], NULL);
 					    (unsigned long) args[1], NULL);
 			hw.irq = args[2];
 			hw.irq = args[2];
-			if (ide_register_hw(&hw, NULL) == -1)
+			if (ide_register_hw(&hw, 0, NULL) == -1)
 				return -EIO;
 				return -EIO;
 			return 0;
 			return 0;
 		}
 		}
@@ -1819,10 +1819,8 @@ static int __init ide_init(void)
 		(void)qd65xx_init();
 		(void)qd65xx_init();
 #endif
 #endif
 
 
-	initializing = 1;
 	/* Probe for special PCI and other "known" interface chipsets. */
 	/* Probe for special PCI and other "known" interface chipsets. */
 	probe_for_hwifs();
 	probe_for_hwifs();
-	initializing = 0;
 
 
 	proc_ide_create();
 	proc_ide_create();
 
 

+ 1 - 1
drivers/ide/legacy/buddha.c

@@ -213,7 +213,7 @@ fail_base2:
 						IRQ_AMIGA_PORTS);
 						IRQ_AMIGA_PORTS);
 			}	
 			}	
 			
 			
-			index = ide_register_hw(&hw, &hwif);
+			index = ide_register_hw(&hw, 1, &hwif);
 			if (index != -1) {
 			if (index != -1) {
 				hwif->mmio = 1;
 				hwif->mmio = 1;
 				printk("ide%d: ", index);
 				printk("ide%d: ", index);

+ 1 - 1
drivers/ide/legacy/falconide.c

@@ -70,7 +70,7 @@ void __init falconide_init(void)
 			0, 0, NULL,
 			0, 0, NULL,
 //			falconide_iops,
 //			falconide_iops,
 			IRQ_MFP_IDE);
 			IRQ_MFP_IDE);
-	index = ide_register_hw(&hw, NULL);
+	index = ide_register_hw(&hw, 1, NULL);
 
 
 	if (index != -1)
 	if (index != -1)
 	    printk("ide%d: Falcon IDE interface\n", index);
 	    printk("ide%d: Falcon IDE interface\n", index);

+ 1 - 1
drivers/ide/legacy/gayle.c

@@ -165,7 +165,7 @@ found:
 //			&gayle_iops,
 //			&gayle_iops,
 			IRQ_AMIGA_PORTS);
 			IRQ_AMIGA_PORTS);
 
 
-	index = ide_register_hw(&hw, &hwif);
+	index = ide_register_hw(&hw, 1, &hwif);
 	if (index != -1) {
 	if (index != -1) {
 	    hwif->mmio = 1;
 	    hwif->mmio = 1;
 	    switch (i) {
 	    switch (i) {

+ 1 - 1
drivers/ide/legacy/ide-cs.c

@@ -153,7 +153,7 @@ static int idecs_register(unsigned long io, unsigned long ctl, unsigned long irq
     hw.irq = irq;
     hw.irq = irq;
     hw.chipset = ide_pci;
     hw.chipset = ide_pci;
     hw.dev = &handle->dev;
     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);
 }
 }
 
 
 /*======================================================================
 /*======================================================================

+ 3 - 3
drivers/ide/legacy/macide.c

@@ -102,21 +102,21 @@ void macide_init(void)
 				0, 0, macide_ack_intr,
 				0, 0, macide_ack_intr,
 //				quadra_ide_iops,
 //				quadra_ide_iops,
 				IRQ_NUBUS_F);
 				IRQ_NUBUS_F);
-		index = ide_register_hw(&hw, &hwif);
+		index = ide_register_hw(&hw, 1, &hwif);
 		break;
 		break;
 	case MAC_IDE_PB:
 	case MAC_IDE_PB:
 		ide_setup_ports(&hw, IDE_BASE, macide_offsets,
 		ide_setup_ports(&hw, IDE_BASE, macide_offsets,
 				0, 0, macide_ack_intr,
 				0, 0, macide_ack_intr,
 //				macide_pb_iops,
 //				macide_pb_iops,
 				IRQ_NUBUS_C);
 				IRQ_NUBUS_C);
-		index = ide_register_hw(&hw, &hwif);
+		index = ide_register_hw(&hw, 1, &hwif);
 		break;
 		break;
 	case MAC_IDE_BABOON:
 	case MAC_IDE_BABOON:
 		ide_setup_ports(&hw, BABOON_BASE, macide_offsets,
 		ide_setup_ports(&hw, BABOON_BASE, macide_offsets,
 				0, 0, NULL,
 				0, 0, NULL,
 //				macide_baboon_iops,
 //				macide_baboon_iops,
 				IRQ_BABOON_1);
 				IRQ_BABOON_1);
-		index = ide_register_hw(&hw, &hwif);
+		index = ide_register_hw(&hw, 1, &hwif);
 		if (index == -1) break;
 		if (index == -1) break;
 		if (macintosh_config->ident == MAC_MODEL_PB190) {
 		if (macintosh_config->ident == MAC_MODEL_PB190) {
 
 

+ 1 - 1
drivers/ide/legacy/q40ide.c

@@ -142,7 +142,7 @@ void q40ide_init(void)
 			0, NULL,
 			0, NULL,
 //			m68kide_iops,
 //			m68kide_iops,
 			q40ide_default_irq(pcide_bases[i]));
 			q40ide_default_irq(pcide_bases[i]));
-	index = ide_register_hw(&hw, &hwif);
+	index = ide_register_hw(&hw, 1, &hwif);
 	// **FIXME**
 	// **FIXME**
 	if (index != -1)
 	if (index != -1)
 		hwif->mmio = 1;
 		hwif->mmio = 1;

+ 1 - 1
drivers/ide/pci/delkin_cb.c

@@ -80,7 +80,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
 	hw.irq = dev->irq;
 	hw.irq = dev->irq;
 	hw.chipset = ide_pci;		/* this enables IRQ sharing */
 	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) {
 	if (rc < 0) {
 		printk(KERN_ERR "delkin_cb: ide_register_hw failed (%d)\n", rc);
 		printk(KERN_ERR "delkin_cb: ide_register_hw failed (%d)\n", rc);
 		pci_disable_device(dev);
 		pci_disable_device(dev);

+ 1 - 1
drivers/macintosh/mediabay.c

@@ -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);
 				ide_init_hwif_ports(&hw, (unsigned long) bay->cd_base, (unsigned long) 0, NULL);
 				hw.irq = bay->cd_irq;
 				hw.irq = bay->cd_irq;
 				hw.chipset = ide_pmac;
 				hw.chipset = ide_pmac;
-				bay->cd_index = ide_register_hw(&hw, NULL);
+				bay->cd_index = ide_register_hw(&hw, 0, NULL);
 				pmu_resume();
 				pmu_resume();
 			}
 			}
 			if (bay->cd_index == -1) {
 			if (bay->cd_index == -1) {

+ 3 - 2
include/linux/ide.h

@@ -223,8 +223,9 @@ typedef struct hw_regs_s {
 /*
 /*
  * Register new hardware with ide
  * 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)
  * Set up hw_regs_t structure before calling ide_register_hw (optional)