ide-generic: manage I/O resources in driver
PATCH 1/9 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 Bartlomiej Zolnierkiewicz <[email protected]>
--- drivers/ide/ide-generic.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-)
drivers/ide/ide-generic.c +19 -2
@@ -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 );