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

Commit 3b36f66b authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

ide: add ide_legacy_device_add() helper



Add ide_legacy_device_add() helper for use by legacy VLB host drivers
(+ convert them to use it).

There should be no functional changes caused by this patch.

Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent e53cd458
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -1633,3 +1633,35 @@ void ide_port_scan(ide_hwif_t *hwif)
	ide_proc_port_register_devices(hwif);
}
EXPORT_SYMBOL_GPL(ide_port_scan);

int ide_legacy_device_add(const struct ide_port_info *d)
{
	ide_hwif_t *hwif, *mate;
	u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
	hw_regs_t hw[2];

	memset(&hw, 0, sizeof(hw));

	ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
	hw[0].irq = 14;

	ide_std_init_ports(&hw[1], 0x170, 0x376);
	hw[1].irq = 15;

	hwif = ide_find_port();
	if (hwif) {
		ide_init_port_hw(hwif, &hw[0]);
		idx[0] = hwif->index;
	}

	mate = ide_find_port();
	if (mate) {
		ide_init_port_hw(mate, &hw[1]);
		idx[1] = mate->index;
	}

	ide_device_add(idx, d);

	return 0;
}
EXPORT_SYMBOL_GPL(ide_legacy_device_add);
+1 −27
Original line number Diff line number Diff line
@@ -205,10 +205,6 @@ static const struct ide_port_info ali14xx_port_info = {

static int __init ali14xx_probe(void)
{
	ide_hwif_t *hwif, *mate;
	static u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
	hw_regs_t hw[2];

	printk(KERN_DEBUG "ali14xx: base=0x%03x, regOn=0x%02x.\n",
			  basePort, regOn);

@@ -218,29 +214,7 @@ static int __init ali14xx_probe(void)
		return 1;
	}

	memset(&hw, 0, sizeof(hw));

	ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
	hw[0].irq = 14;

	ide_std_init_ports(&hw[1], 0x170, 0x376);
	hw[1].irq = 15;

	hwif = ide_find_port();
	if (hwif) {
		ide_init_port_hw(hwif, &hw[0]);
		idx[0] = hwif->index;
	}

	mate = ide_find_port();
	if (mate) {
		ide_init_port_hw(mate, &hw[1]);
		idx[1] = mate->index;
	}

	ide_device_add(idx, &ali14xx_port_info);

	return 0;
	return ide_legacy_device_add(&ali14xx_port_info);
}

int probe_ali14xx;
+1 −26
Original line number Diff line number Diff line
@@ -106,9 +106,6 @@ static const struct ide_port_info dtc2278_port_info __initdata = {
static int __init dtc2278_probe(void)
{
	unsigned long flags;
	ide_hwif_t *hwif, *mate;
	static u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
	hw_regs_t hw[2];

	local_irq_save(flags);
	/*
@@ -128,29 +125,7 @@ static int __init dtc2278_probe(void)
#endif
	local_irq_restore(flags);

	memset(&hw, 0, sizeof(hw));

	ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
	hw[0].irq = 14;

	ide_std_init_ports(&hw[1], 0x170, 0x376);
	hw[1].irq = 15;

	hwif = ide_find_port();
	if (hwif) {
		ide_init_port_hw(hwif, &hw[0]);
		idx[0] = hwif->index;
	}

	mate = ide_find_port();
	if (mate) {
		ide_init_port_hw(mate, &hw[1]);
		idx[1] = mate->index;
	}

	ide_device_add(idx, &dtc2278_port_info);

	return 0;
	return ide_legacy_device_add(&dtc2278_port_info);
}

int probe_dtc2278 = 0;
+1 −27
Original line number Diff line number Diff line
@@ -346,10 +346,6 @@ static const struct ide_port_info ht6560b_port_info __initdata = {

static int __init ht6560b_init(void)
{
	ide_hwif_t *hwif, *mate;
	static u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
	hw_regs_t hw[2];

	if (probe_ht6560b == 0)
		return -ENODEV;

@@ -364,29 +360,7 @@ static int __init ht6560b_init(void)
		goto release_region;
	}

	memset(&hw, 0, sizeof(hw));

	ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
	hw[0].irq = 14;

	ide_std_init_ports(&hw[1], 0x170, 0x376);
	hw[1].irq = 15;

	hwif = ide_find_port();
	if (hwif) {
		ide_init_port_hw(hwif, &hw[0]);
		idx[0] = hwif->index;
	}

	mate = ide_find_port();
	if (mate) {
		ide_init_port_hw(mate, &hw[1]);
		idx[1] = mate->index;
	}

	ide_device_add(idx, &ht6560b_port_info);

	return 0;
	return ide_legacy_device_add(&ht6560b_port_info);

release_region:
	release_region(HT_CONFIG_PORT, 1);
+1 −26
Original line number Diff line number Diff line
@@ -133,10 +133,7 @@ static const struct ide_port_info umc8672_port_info __initdata = {

static int __init umc8672_probe(void)
{
	ide_hwif_t *hwif, *mate;
	unsigned long flags;
	static u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
	hw_regs_t hw[2];

	if (!request_region(0x108, 2, "umc8672")) {
		printk(KERN_ERR "umc8672: ports 0x108-0x109 already in use.\n");
@@ -155,29 +152,7 @@ static int __init umc8672_probe(void)
	umc_set_speeds(current_speeds);
	local_irq_restore(flags);

	memset(&hw, 0, sizeof(hw));

	ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
	hw[0].irq = 14;

	ide_std_init_ports(&hw[1], 0x170, 0x376);
	hw[1].irq = 15;

	hwif = ide_find_port();
	if (hwif) {
		ide_init_port_hw(hwif, &hw[0]);
		idx[0] = hwif->index;
	}

	mate = ide_find_port();
	if (mate) {
		ide_init_port_hw(mate, &hw[1]);
		idx[1] = mate->index;
	}

	ide_device_add(idx, &umc8672_port_info);

	return 0;
	return ide_legacy_device_add(&umc8672_port_info);
}

int probe_umc8672;
Loading