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

Commit eb716beb authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

ide: register ports with non-present devices (for warm-plug)

parent d703b79e
Loading
Loading
Loading
Loading
+17 −20
Original line number Diff line number Diff line
@@ -1537,17 +1537,14 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d)
			continue;
		}

		if (ide_probe_port(hwif) < 0) {
			ide_hwif_release_regions(hwif);
			continue;
		}

		if (ide_probe_port(hwif) == 0)
			hwif->present = 1;

		if (hwif->chipset != ide_4drives || !hwif->mate ||
		    !hwif->mate->present)
			ide_register_port(hwif);

		if (hwif->present)
			ide_port_tune_devices(hwif);
	}

@@ -1557,9 +1554,6 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d)

		hwif = &ide_hwifs[idx[i]];

		if (!hwif->present)
			continue;

		if (hwif_init(hwif) == 0) {
			printk(KERN_INFO "%s: failed to initialize IDE "
					 "interface\n", hwif->name);
@@ -1568,9 +1562,12 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d)
			continue;
		}

		if (hwif->present)
			ide_port_setup_devices(hwif);

		ide_acpi_init(hwif);

		if (hwif->present)
			ide_acpi_port_init_devices(hwif);
	}

@@ -1580,12 +1577,12 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d)

		hwif = &ide_hwifs[idx[i]];

		if (hwif->present) {
		if (hwif->chipset == ide_unknown)
			hwif->chipset = ide_generic;

		if (hwif->present)
			hwif_register_devices(hwif);
	}
	}

	for (i = 0; i < MAX_HWIFS; i++) {
		if (idx[i] == 0xff)
@@ -1593,12 +1590,12 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d)

		hwif = &ide_hwifs[idx[i]];

		if (hwif->present) {
		ide_sysfs_register_port(hwif);
		ide_proc_register_port(hwif);

		if (hwif->present)
			ide_proc_port_register_devices(hwif);
	}
	}

	return rc;
}