diff options
Diffstat (limited to 'drivers/i2c/busses/i2c-omap.c')
-rw-r--r-- | drivers/i2c/busses/i2c-omap.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index e7eb7bf9ddec..608038d64f81 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c | |||
@@ -589,11 +589,16 @@ omap_i2c_probe(struct platform_device *pdev) | |||
589 | 589 | ||
590 | dev->dev = &pdev->dev; | 590 | dev->dev = &pdev->dev; |
591 | dev->irq = irq->start; | 591 | dev->irq = irq->start; |
592 | dev->base = (void __iomem *) IO_ADDRESS(mem->start); | 592 | dev->base = ioremap(mem->start, mem->end - mem->start + 1); |
593 | if (!dev->base) { | ||
594 | r = -ENOMEM; | ||
595 | goto err_free_mem; | ||
596 | } | ||
597 | |||
593 | platform_set_drvdata(pdev, dev); | 598 | platform_set_drvdata(pdev, dev); |
594 | 599 | ||
595 | if ((r = omap_i2c_get_clocks(dev)) != 0) | 600 | if ((r = omap_i2c_get_clocks(dev)) != 0) |
596 | goto err_free_mem; | 601 | goto err_iounmap; |
597 | 602 | ||
598 | omap_i2c_unidle(dev); | 603 | omap_i2c_unidle(dev); |
599 | 604 | ||
@@ -640,6 +645,8 @@ err_unuse_clocks: | |||
640 | omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); | 645 | omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); |
641 | omap_i2c_idle(dev); | 646 | omap_i2c_idle(dev); |
642 | omap_i2c_put_clocks(dev); | 647 | omap_i2c_put_clocks(dev); |
648 | err_iounmap: | ||
649 | iounmap(dev->base); | ||
643 | err_free_mem: | 650 | err_free_mem: |
644 | platform_set_drvdata(pdev, NULL); | 651 | platform_set_drvdata(pdev, NULL); |
645 | kfree(dev); | 652 | kfree(dev); |
@@ -661,6 +668,7 @@ omap_i2c_remove(struct platform_device *pdev) | |||
661 | i2c_del_adapter(&dev->adapter); | 668 | i2c_del_adapter(&dev->adapter); |
662 | omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); | 669 | omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); |
663 | omap_i2c_put_clocks(dev); | 670 | omap_i2c_put_clocks(dev); |
671 | iounmap(dev->base); | ||
664 | kfree(dev); | 672 | kfree(dev); |
665 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 673 | mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
666 | release_mem_region(mem->start, (mem->end - mem->start) + 1); | 674 | release_mem_region(mem->start, (mem->end - mem->start) + 1); |