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 Original line Diff line number Diff line
@@ -327,7 +327,6 @@ config BLK_DEV_PLATFORM
config BLK_DEV_CMD640
config BLK_DEV_CMD640
	bool "CMD640 chipset bugfix/support"
	bool "CMD640 chipset bugfix/support"
	depends on X86
	depends on X86
	select IDE_GENERIC
	---help---
	---help---
	  The CMD-Technologies CMD640 IDE chip is used on many common 486 and
	  The CMD-Technologies CMD640 IDE chip is used on many common 486 and
	  Pentium motherboards, usually in combination with a "Neptune" or
	  Pentium motherboards, usually in combination with a "Neptune" or
@@ -362,7 +361,6 @@ config BLK_DEV_CMD640_ENHANCED
config BLK_DEV_IDEPNP
config BLK_DEV_IDEPNP
	bool "PNP EIDE support"
	bool "PNP EIDE support"
	depends on PNP
	depends on PNP
	select IDE_GENERIC
	help
	help
	  If you have a PnP (Plug and Play) compatible EIDE card and
	  If you have a PnP (Plug and Play) compatible EIDE card and
	  would like the kernel to automatically detect and activate
	  would like the kernel to automatically detect and activate
@@ -845,7 +843,6 @@ config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ


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


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


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


	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);
@@ -36,5 +37,8 @@ void __init ide_arm_init(void)
	hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
	hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
	if (hwif) {
	if (hwif) {
		ide_init_port_hw(hwif, &hw);
		ide_init_port_hw(hwif, &hw);
		idx[0] = hwif->index;

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


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


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

		idx[h] = hwif->index;
	}
	}


	/* Reset pulse */
	/* 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_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_DMA, 0, ATA_DMA2_STROBE, ATA_DMA2_HOLD);
	cris_ide_set_speed(TYPE_UDMA, ATA_UDMA2_CYC, ATA_UDMA2_DVS, 0);
	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)));
static cris_dma_descr_type mydescr __attribute__ ((__aligned__(16)));
+6 −0
Original line number Original line Diff line number Diff line
@@ -89,6 +89,7 @@ void __init h8300_ide_init(void)
	hw_regs_t hw;
	hw_regs_t hw;
	ide_hwif_t *hwif;
	ide_hwif_t *hwif;
	int index;
	int index;
	u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };


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

	idx[0] = index;

	ide_device_add(idx);

	return;
	return;


out_busy:
out_busy:
+4 −0
Original line number Original line 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]);
	hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
	if (hwif) {
	if (hwif) {
		u8 index = hwif->index;
		u8 index = hwif->index;
		u8 idx[4] = { index, 0xff, 0xff, 0xff };


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


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

		ide_device_add(idx);

		return 0;
		return 0;
	}
	}


Loading