Commit cabd10be authored by Finn Thain's avatar Finn Thain Committed by Jens Axboe
Browse files

m68k/mac: Replace macide driver with generic platform drivers



This allows m68k mac systems to switch from the deprecated IDE subsystem
to libata.

This was tested on my Quadra 630. I haven't tested it on my PowerBook 150
because I don't have a RAM adapter board for it. It appears that the
hardware I tested doesn't need macide_clear_irq() or macide_test_irq().
If it did, the generic driver would not have worked. It's possible that
those routines are needed for the PowerBook 150 but we can cross that
bridge if and when we come to it.

BTW, macide_clear_irq() appears to suffer from a race condition. The write
to the interrupt flags register could have unintended side effects as it
may alter other flag bits. Fortunately, all of the other bits are unused
by Linux. When tested on my Quadra 630, the assignment *ide_ifr &= ~0x20
was observed to have no effect on bit 5, so it may be redundant anyway.

Cc: Michael Schmitz <schmitzmic@gmail.com>
Cc: Joshua Thompson <funaho@jurai.org>
Reviewed-by: default avatarMichael Schmitz <schmitzmic@gmail.com>
Acked-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: default avatarFinn Thain <fthain@linux-m68k.org>
Link: https://lore.kernel.org/r/11a56b3317df3bb2ddc15fd29b40b6820e9c7444.1623287706.git.fthain@linux-m68k.org


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 5c812126
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -319,7 +319,6 @@ CONFIG_IDE=y
CONFIG_IDE_GD_ATAPI=y
CONFIG_BLK_DEV_IDECD=y
CONFIG_BLK_DEV_PLATFORM=y
CONFIG_BLK_DEV_MAC_IDE=y
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
+0 −1
Original line number Diff line number Diff line
@@ -351,7 +351,6 @@ CONFIG_BLK_DEV_PLATFORM=y
CONFIG_BLK_DEV_GAYLE=y
CONFIG_BLK_DEV_BUDDHA=y
CONFIG_BLK_DEV_FALCON_IDE=y
CONFIG_BLK_DEV_MAC_IDE=y
CONFIG_BLK_DEV_Q40IDE=y
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
+14 −10
Original line number Diff line number Diff line
@@ -933,13 +933,15 @@ static const struct resource mac_scsi_ccl_rsrc[] __initconst = {
	},
};

static const struct resource mac_ide_quadra_rsrc[] __initconst = {
	DEFINE_RES_MEM(0x50F1A000, 0x104),
static const struct resource mac_pata_quadra_rsrc[] __initconst = {
	DEFINE_RES_MEM(0x50F1A000, 0x38),
	DEFINE_RES_MEM(0x50F1A038, 0x04),
	DEFINE_RES_IRQ(IRQ_NUBUS_F),
};

static const struct resource mac_ide_pb_rsrc[] __initconst = {
	DEFINE_RES_MEM(0x50F1A000, 0x104),
static const struct resource mac_pata_pb_rsrc[] __initconst = {
	DEFINE_RES_MEM(0x50F1A000, 0x38),
	DEFINE_RES_MEM(0x50F1A038, 0x04),
	DEFINE_RES_IRQ(IRQ_NUBUS_C),
};

@@ -949,7 +951,7 @@ static const struct resource mac_pata_baboon_rsrc[] __initconst = {
	DEFINE_RES_IRQ(IRQ_BABOON_1),
};

static const struct pata_platform_info mac_pata_baboon_data __initconst = {
static const struct pata_platform_info mac_pata_data __initconst = {
	.ioport_shift = 2,
};

@@ -1067,17 +1069,19 @@ int __init mac_platform_init(void)

	switch (macintosh_config->ide_type) {
	case MAC_IDE_QUADRA:
		platform_device_register_simple("mac_ide", -1,
			mac_ide_quadra_rsrc, ARRAY_SIZE(mac_ide_quadra_rsrc));
		platform_device_register_resndata(NULL, "pata_platform", -1,
			mac_pata_quadra_rsrc, ARRAY_SIZE(mac_pata_quadra_rsrc),
			&mac_pata_data, sizeof(mac_pata_data));
		break;
	case MAC_IDE_PB:
		platform_device_register_simple("mac_ide", -1,
			mac_ide_pb_rsrc, ARRAY_SIZE(mac_ide_pb_rsrc));
		platform_device_register_resndata(NULL, "pata_platform", -1,
			mac_pata_pb_rsrc, ARRAY_SIZE(mac_pata_pb_rsrc),
			&mac_pata_data, sizeof(mac_pata_data));
		break;
	case MAC_IDE_BABOON:
		platform_device_register_resndata(NULL, "pata_platform", -1,
			mac_pata_baboon_rsrc, ARRAY_SIZE(mac_pata_baboon_rsrc),
			&mac_pata_baboon_data, sizeof(mac_pata_baboon_data));
			&mac_pata_data, sizeof(mac_pata_data));
		break;
	}

+0 −14
Original line number Diff line number Diff line
@@ -739,20 +739,6 @@ config BLK_DEV_FALCON_IDE
	  disks, CD-ROM drives, etc.) that are connected to the on-board IDE
	  interface.

config BLK_DEV_MAC_IDE
	tristate "Macintosh Quadra/Powerbook IDE interface support"
	depends on MAC
	help
	  This is the IDE driver for the on-board IDE interface on some m68k
	  Macintosh models, namely Quadra/Centris 630, Performa 588 and
	  Powerbook 150. The IDE interface on the Powerbook 190 is not
	  supported by this driver and requires BLK_DEV_PLATFORM or
	  PATA_PLATFORM.

	  Say Y if you have such an Macintosh model and want to use IDE
	  devices (hard disks, CD-ROM drives, etc.) that are connected to the
	  on-board IDE interface.

config BLK_DEV_Q40IDE
	tristate "Q40/Q60 IDE interface support"
	depends on Q40
+0 −1
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ obj-$(CONFIG_BLK_DEV_4DRIVES) += ide-4drives.o

obj-$(CONFIG_BLK_DEV_GAYLE)		+= gayle.o
obj-$(CONFIG_BLK_DEV_FALCON_IDE)	+= falconide.o
obj-$(CONFIG_BLK_DEV_MAC_IDE)		+= macide.o
obj-$(CONFIG_BLK_DEV_Q40IDE)		+= q40ide.o
obj-$(CONFIG_BLK_DEV_BUDDHA)		+= buddha.o

Loading