i2c: Add request/release_mem_region to i2c-ibm_iic bus driver
Reserving I/O memory for a driver with request_mem_region is necessary to avoid memory access conflicts. Even if it's never going to happen, it is cleaner and it allows to monitor I/O memory used in /proc/iomem. Signed-off-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@teamlog.com> Signed-off-by: Jean Delvare <khali@linux-fr.org>
This commit is contained in:
parent
41561f28e7
commit
31c095b09e
@ -680,6 +680,12 @@ static int __devinit iic_probe(struct ocp_device *ocp){
|
|||||||
dev->idx = ocp->def->index;
|
dev->idx = ocp->def->index;
|
||||||
ocp_set_drvdata(ocp, dev);
|
ocp_set_drvdata(ocp, dev);
|
||||||
|
|
||||||
|
if (!request_mem_region(ocp->def->paddr, sizeof(struct iic_regs),
|
||||||
|
"ibm_iic")) {
|
||||||
|
ret = -EBUSY;
|
||||||
|
goto fail1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(dev->vaddr = ioremap(ocp->def->paddr, sizeof(struct iic_regs)))){
|
if (!(dev->vaddr = ioremap(ocp->def->paddr, sizeof(struct iic_regs)))){
|
||||||
printk(KERN_CRIT "ibm-iic%d: failed to ioremap device registers\n",
|
printk(KERN_CRIT "ibm-iic%d: failed to ioremap device registers\n",
|
||||||
dev->idx);
|
dev->idx);
|
||||||
@ -750,6 +756,8 @@ fail:
|
|||||||
|
|
||||||
iounmap(dev->vaddr);
|
iounmap(dev->vaddr);
|
||||||
fail2:
|
fail2:
|
||||||
|
release_mem_region(ocp->def->paddr, sizeof(struct iic_regs));
|
||||||
|
fail1:
|
||||||
ocp_set_drvdata(ocp, NULL);
|
ocp_set_drvdata(ocp, NULL);
|
||||||
kfree(dev);
|
kfree(dev);
|
||||||
return ret;
|
return ret;
|
||||||
@ -777,6 +785,7 @@ static void __devexit iic_remove(struct ocp_device *ocp)
|
|||||||
free_irq(dev->irq, dev);
|
free_irq(dev->irq, dev);
|
||||||
}
|
}
|
||||||
iounmap(dev->vaddr);
|
iounmap(dev->vaddr);
|
||||||
|
release_mem_region(ocp->def->paddr, sizeof(struct iic_regs));
|
||||||
kfree(dev);
|
kfree(dev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user