Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ac4ce74 authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

ide: fix host drivers depending on ide_generic to probe for interfaces (take 2)



* Add mpc8xx_ide_probe() to mpc8xx.c and call it from probe_for_hwifs().

* Convert ide_arm, ide-cris, ide-h8300, ide-pnp, buddha, falconide, gayle,
  macide, q40ide, cmd640 and mpc8xx host drivers to use ide_device_add().

  This removes dependency on ide_generic for these drivers so update
  ide/Kconfig accordingly.

v2:
* ide_arm build fix (s/ide_device_idx/ide_device_add/)
  (Thanks to Christoph Lameter <clameter@sgi.com> for reporting the problem).

Cc: Mikael Starvik <starvik@axis.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent ac87e411
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -327,7 +327,6 @@ config BLK_DEV_PLATFORM
config BLK_DEV_CMD640
	bool "CMD640 chipset bugfix/support"
	depends on X86
	select IDE_GENERIC
	---help---
	  The CMD-Technologies CMD640 IDE chip is used on many common 486 and
	  Pentium motherboards, usually in combination with a "Neptune" or
@@ -362,7 +361,6 @@ config BLK_DEV_CMD640_ENHANCED
config BLK_DEV_IDEPNP
	bool "PNP EIDE support"
	depends on PNP
	select IDE_GENERIC
	help
	  If you have a PnP (Plug and Play) compatible EIDE card and
	  would like the kernel to automatically detect and activate
@@ -845,7 +843,6 @@ config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ

config IDE_ARM
	def_bool ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK)
	select IDE_GENERIC

config BLK_DEV_IDE_ICSIDE
	tristate "ICS IDE interface support"
@@ -880,7 +877,6 @@ config ETRAX_IDE
	bool "ETRAX IDE support"
	depends on CRIS && BROKEN
	select BLK_DEV_IDEDMA
	select IDE_GENERIC
	help
	  Enables the ETRAX IDE driver.

@@ -914,7 +910,6 @@ endchoice
config IDE_H8300
	bool "H8300 IDE support"
	depends on H8300
	select IDE_GENERIC
	default y
	help
	  Enables the H8300 IDE driver.
@@ -922,7 +917,6 @@ config IDE_H8300
config BLK_DEV_GAYLE
	bool "Amiga Gayle IDE interface support"
	depends on AMIGA
	select IDE_GENERIC
	help
	  This is the IDE driver for the Amiga Gayle IDE interface. It supports
	  both the `A1200 style' and `A4000 style' of the Gayle IDE interface,
@@ -954,7 +948,6 @@ config BLK_DEV_IDEDOUBLER
config BLK_DEV_BUDDHA
	bool "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)"
	depends on ZORRO && EXPERIMENTAL
	select IDE_GENERIC
	help
	  This is the IDE driver for the IDE interfaces on the Buddha, 
	  Catweasel and X-Surf expansion boards.  It supports up to two interfaces 
@@ -967,7 +960,6 @@ config BLK_DEV_BUDDHA
config BLK_DEV_FALCON_IDE
	bool "Falcon IDE interface support"
	depends on ATARI
	select IDE_GENERIC
	help
	  This is the IDE driver for the builtin IDE interface on the Atari
	  Falcon. Say Y if you have a Falcon and want to use IDE devices (hard
@@ -977,7 +969,6 @@ config BLK_DEV_FALCON_IDE
config BLK_DEV_MAC_IDE
	bool "Macintosh Quadra/Powerbook IDE interface support"
	depends on MAC
	select IDE_GENERIC
	help
	  This is the IDE driver for the builtin IDE interface on some m68k
	  Macintosh models. It supports both the `Quadra style' (used in
@@ -991,7 +982,6 @@ config BLK_DEV_MAC_IDE
config BLK_DEV_Q40IDE
	bool "Q40/Q60 IDE interface support"
	depends on Q40
	select IDE_GENERIC
	help
	  Enable the on-board IDE controller in the Q40/Q60.  This should
	  normally be on; disable it only if you are running a custom hard
@@ -1000,7 +990,6 @@ config BLK_DEV_Q40IDE
config BLK_DEV_MPC8xx_IDE
	bool "MPC8xx IDE support"
	depends on 8xx && (LWMON || IVMS8 || IVML24 || TQM8xxL) && IDE=y && BLK_DEV_IDE=y && !PPC_MERGE
	select IDE_GENERIC
	help
	  This option provides support for IDE on Motorola MPC8xx Systems.
	  Please see 'Type of MPC8xx IDE interface' for details.
+4 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ void __init ide_arm_init(void)
{
	ide_hwif_t *hwif;
	hw_regs_t hw;
	u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };

	memset(&hw, 0, sizeof(hw));
	ide_std_init_ports(&hw, IDE_ARM_IO, IDE_ARM_IO + 0x206);
@@ -36,5 +37,8 @@ void __init ide_arm_init(void)
	hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
	if (hwif) {
		ide_init_port_hw(hwif, &hw);
		idx[0] = hwif->index;

		ide_device_add(idx);
	}
}
+6 −3
Original line number Diff line number Diff line
@@ -758,9 +758,8 @@ void __init
init_e100_ide (void)
{
	hw_regs_t hw;
	int ide_offsets[IDE_NR_PORTS];
	int h;
	int i;
	int ide_offsets[IDE_NR_PORTS], h, i;
	u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };

	printk("ide: ETRAX FS built-in ATA DMA controller\n");

@@ -808,6 +807,8 @@ init_e100_ide (void)
		hwif->drives[1].autotune = 1;
		hwif->ultra_mask = cris_ultra_mask;
		hwif->mwdma_mask = 0x07; /* Multiword DMA 0-2 */

		idx[h] = hwif->index;
	}

	/* Reset pulse */
@@ -820,6 +821,8 @@ init_e100_ide (void)
	cris_ide_set_speed(TYPE_PIO, ATA_PIO4_SETUP, ATA_PIO4_STROBE, ATA_PIO4_HOLD);
	cris_ide_set_speed(TYPE_DMA, 0, ATA_DMA2_STROBE, ATA_DMA2_HOLD);
	cris_ide_set_speed(TYPE_UDMA, ATA_UDMA2_CYC, ATA_UDMA2_DVS, 0);

	ide_device_add(idx);
}

static cris_dma_descr_type mydescr __attribute__ ((__aligned__(16)));
+6 −0
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ void __init h8300_ide_init(void)
	hw_regs_t hw;
	ide_hwif_t *hwif;
	int index;
	u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };

	if (!request_region(CONFIG_H8300_IDE_BASE, H8300_IDE_GAP*8, "ide-h8300"))
		goto out_busy;
@@ -111,6 +112,11 @@ void __init h8300_ide_init(void)
	ide_init_port_hw(hwif, &hw);
	hwif_setup(hwif);
	printk(KERN_INFO "ide%d: H8/300 generic IDE interface\n", index);

	idx[0] = index;

	ide_device_add(idx);

	return;

out_busy:
+4 −0
Original line number Diff line number Diff line
@@ -43,12 +43,16 @@ static int idepnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id
	hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
	if (hwif) {
		u8 index = hwif->index;
		u8 idx[4] = { index, 0xff, 0xff, 0xff };

		ide_init_port_data(hwif, index);
		ide_init_port_hw(hwif, &hw);

		printk(KERN_INFO "ide%d: generic PnP IDE interface\n", index);
		pnp_set_drvdata(dev,hwif);

		ide_device_add(idx);

		return 0;
	}

Loading