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

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

ide-generic: manage I/O resources in driver



* Tell IDE layer to not manage resources by setting hwif->mmio flag.

* Use {request,release}_region() for resources management.

* Use driver name for resources management.

Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent d083c03f
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -94,7 +94,24 @@ static int __init ide_generic_init(void)
		unsigned long io_addr = ide_default_io_base(i);
		hw_regs_t hw;

		idx[i] = 0xff;

		if (io_addr) {
			if (!request_region(io_addr, 8, DRV_NAME)) {
				printk(KERN_ERR "%s: I/O resource 0x%lX-0x%lX "
						"not free.\n",
						DRV_NAME, io_addr, io_addr + 7);
				continue;
			}

			if (!request_region(io_addr + 0x206, 1, DRV_NAME)) {
				printk(KERN_ERR "%s: I/O resource 0x%lX "
						"not free.\n",
						DRV_NAME, io_addr + 0x206);
				release_region(io_addr, 8);
				continue;
			}

			/*
			 * Skip probing if the corresponding
			 * slot is already occupied.
@@ -109,10 +126,10 @@ static int __init ide_generic_init(void)
			ide_std_init_ports(&hw, io_addr, io_addr + 0x206);
			hw.irq = ide_default_irq(io_addr);
			ide_init_port_hw(hwif, &hw);
			hwif->mmio = 1;

			idx[i] = i;
		} else
			idx[i] = 0xff;
		}
	}

	ide_device_add_all(idx, NULL);