Loading drivers/char/hw_random/omap-rng.c +25 −8 Original line number Diff line number Diff line Loading @@ -118,18 +118,21 @@ static int __init omap_rng_probe(struct platform_device *pdev) mem = request_mem_region(res->start, res->end - res->start + 1, pdev->name); if (mem == NULL) return -EBUSY; if (mem == NULL) { ret = -EBUSY; goto err_region; } dev_set_drvdata(&pdev->dev, mem); rng_base = (u32 __force __iomem *)io_p2v(res->start); rng_base = ioremap(res->start, res->end - res->start + 1); if (!rng_base) { ret = -ENOMEM; goto err_ioremap; } ret = hwrng_register(&omap_rng_ops); if (ret) { release_resource(mem); rng_base = NULL; return ret; } if (ret) goto err_register; dev_info(&pdev->dev, "OMAP Random Number Generator ver. %02x\n", omap_rng_read_reg(RNG_REV_REG)); Loading @@ -138,6 +141,18 @@ static int __init omap_rng_probe(struct platform_device *pdev) rng_dev = pdev; return 0; err_register: iounmap(rng_base); rng_base = NULL; err_ioremap: release_resource(mem); err_region: if (cpu_is_omap24xx()) { clk_disable(rng_ick); clk_put(rng_ick); } return ret; } static int __exit omap_rng_remove(struct platform_device *pdev) Loading @@ -148,6 +163,8 @@ static int __exit omap_rng_remove(struct platform_device *pdev) omap_rng_write_reg(RNG_MASK_REG, 0x0); iounmap(rng_base); if (cpu_is_omap24xx()) { clk_disable(rng_ick); clk_put(rng_ick); Loading drivers/i2c/busses/i2c-omap.c +10 −2 Original line number Diff line number Diff line Loading @@ -589,11 +589,16 @@ omap_i2c_probe(struct platform_device *pdev) dev->dev = &pdev->dev; dev->irq = irq->start; dev->base = (void __iomem *) IO_ADDRESS(mem->start); dev->base = ioremap(mem->start, mem->end - mem->start + 1); if (!dev->base) { r = -ENOMEM; goto err_free_mem; } platform_set_drvdata(pdev, dev); if ((r = omap_i2c_get_clocks(dev)) != 0) goto err_free_mem; goto err_iounmap; omap_i2c_unidle(dev); Loading Loading @@ -640,6 +645,8 @@ omap_i2c_probe(struct platform_device *pdev) omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); omap_i2c_idle(dev); omap_i2c_put_clocks(dev); err_iounmap: iounmap(dev->base); err_free_mem: platform_set_drvdata(pdev, NULL); kfree(dev); Loading @@ -661,6 +668,7 @@ omap_i2c_remove(struct platform_device *pdev) i2c_del_adapter(&dev->adapter); omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); omap_i2c_put_clocks(dev); iounmap(dev->base); kfree(dev); mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(mem->start, (mem->end - mem->start) + 1); Loading drivers/mmc/host/omap.c +6 −1 Original line number Diff line number Diff line Loading @@ -1455,7 +1455,9 @@ static int __init mmc_omap_probe(struct platform_device *pdev) host->irq = irq; host->phys_base = host->mem_res->start; host->virt_base = (void __iomem *) IO_ADDRESS(host->phys_base); host->virt_base = ioremap(res->start, res->end - res->start + 1); if (!host->virt_base) goto err_ioremap; if (cpu_is_omap24xx()) { host->iclk = clk_get(&pdev->dev, "mmc_ick"); Loading Loading @@ -1510,6 +1512,8 @@ static int __init mmc_omap_probe(struct platform_device *pdev) clk_put(host->iclk); } err_free_mmc_host: iounmap(host->virt_base); err_ioremap: kfree(host); err_free_mem_region: release_mem_region(res->start, res->end - res->start + 1); Loading @@ -1536,6 +1540,7 @@ static int mmc_omap_remove(struct platform_device *pdev) if (host->fclk && !IS_ERR(host->fclk)) clk_put(host->fclk); iounmap(host->virt_base); release_mem_region(pdev->resource[0].start, pdev->resource[0].end - pdev->resource[0].start + 1); Loading drivers/spi/omap2_mcspi.c +11 −1 Original line number Diff line number Diff line Loading @@ -1009,7 +1009,12 @@ static int __init omap2_mcspi_probe(struct platform_device *pdev) } mcspi->phys = r->start; mcspi->base = (void __iomem *) io_p2v(r->start); mcspi->base = ioremap(r->start, r->end - r->start + 1); if (!mcspi->base) { dev_dbg(&pdev->dev, "can't ioremap MCSPI\n"); status = -ENOMEM; goto err1aa; } INIT_WORK(&mcspi->work, omap2_mcspi_work); Loading Loading @@ -1059,6 +1064,8 @@ static int __init omap2_mcspi_probe(struct platform_device *pdev) err2: clk_put(mcspi->ick); err1a: iounmap(mcspi->base); err1aa: release_mem_region(r->start, (r->end - r->start) + 1); err1: spi_master_put(master); Loading @@ -1071,6 +1078,7 @@ static int __exit omap2_mcspi_remove(struct platform_device *pdev) struct omap2_mcspi *mcspi; struct omap2_mcspi_dma *dma_channels; struct resource *r; void __iomem *base; master = dev_get_drvdata(&pdev->dev); mcspi = spi_master_get_devdata(master); Loading @@ -1082,7 +1090,9 @@ static int __exit omap2_mcspi_remove(struct platform_device *pdev) r = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(r->start, (r->end - r->start) + 1); base = mcspi->base; spi_unregister_master(master); iounmap(base); kfree(dma_channels); return 0; Loading drivers/spi/omap_uwire.c +19 −4 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ * and irqs should show there too... */ #define UWIRE_BASE_PHYS 0xFFFB3000 #define UWIRE_BASE ((void *__iomem)IO_ADDRESS(UWIRE_BASE_PHYS)) /* uWire Registers: */ #define UWIRE_IO_SIZE 0x20 Loading Loading @@ -103,16 +102,21 @@ struct uwire_state { }; /* REVISIT compile time constant for idx_shift? */ /* * Or, put it in a structure which is used throughout the driver; * that avoids having to issue two loads for each bit of static data. */ static unsigned int uwire_idx_shift; static void __iomem *uwire_base; static inline void uwire_write_reg(int idx, u16 val) { __raw_writew(val, UWIRE_BASE + (idx << uwire_idx_shift)); __raw_writew(val, uwire_base + (idx << uwire_idx_shift)); } static inline u16 uwire_read_reg(int idx) { return __raw_readw(UWIRE_BASE + (idx << uwire_idx_shift)); return __raw_readw(uwire_base + (idx << uwire_idx_shift)); } static inline void omap_uwire_configure_mode(u8 cs, unsigned long flags) Loading Loading @@ -492,6 +496,14 @@ static int __init uwire_probe(struct platform_device *pdev) return -ENODEV; uwire = spi_master_get_devdata(master); uwire_base = ioremap(UWIRE_BASE_PHYS, UWIRE_IO_SIZE); if (!uwire_base) { dev_dbg(&pdev->dev, "can't ioremap UWIRE\n"); spi_master_put(master); return -ENOMEM; } dev_set_drvdata(&pdev->dev, uwire); uwire->ck = clk_get(&pdev->dev, "armxor_ck"); Loading Loading @@ -520,8 +532,10 @@ static int __init uwire_probe(struct platform_device *pdev) uwire->bitbang.txrx_bufs = uwire_txrx; status = spi_bitbang_start(&uwire->bitbang); if (status < 0) if (status < 0) { uwire_off(uwire); iounmap(uwire_base); } return status; } Loading @@ -534,6 +548,7 @@ static int __exit uwire_remove(struct platform_device *pdev) status = spi_bitbang_stop(&uwire->bitbang); uwire_off(uwire); iounmap(uwire_base); return status; } Loading Loading
drivers/char/hw_random/omap-rng.c +25 −8 Original line number Diff line number Diff line Loading @@ -118,18 +118,21 @@ static int __init omap_rng_probe(struct platform_device *pdev) mem = request_mem_region(res->start, res->end - res->start + 1, pdev->name); if (mem == NULL) return -EBUSY; if (mem == NULL) { ret = -EBUSY; goto err_region; } dev_set_drvdata(&pdev->dev, mem); rng_base = (u32 __force __iomem *)io_p2v(res->start); rng_base = ioremap(res->start, res->end - res->start + 1); if (!rng_base) { ret = -ENOMEM; goto err_ioremap; } ret = hwrng_register(&omap_rng_ops); if (ret) { release_resource(mem); rng_base = NULL; return ret; } if (ret) goto err_register; dev_info(&pdev->dev, "OMAP Random Number Generator ver. %02x\n", omap_rng_read_reg(RNG_REV_REG)); Loading @@ -138,6 +141,18 @@ static int __init omap_rng_probe(struct platform_device *pdev) rng_dev = pdev; return 0; err_register: iounmap(rng_base); rng_base = NULL; err_ioremap: release_resource(mem); err_region: if (cpu_is_omap24xx()) { clk_disable(rng_ick); clk_put(rng_ick); } return ret; } static int __exit omap_rng_remove(struct platform_device *pdev) Loading @@ -148,6 +163,8 @@ static int __exit omap_rng_remove(struct platform_device *pdev) omap_rng_write_reg(RNG_MASK_REG, 0x0); iounmap(rng_base); if (cpu_is_omap24xx()) { clk_disable(rng_ick); clk_put(rng_ick); Loading
drivers/i2c/busses/i2c-omap.c +10 −2 Original line number Diff line number Diff line Loading @@ -589,11 +589,16 @@ omap_i2c_probe(struct platform_device *pdev) dev->dev = &pdev->dev; dev->irq = irq->start; dev->base = (void __iomem *) IO_ADDRESS(mem->start); dev->base = ioremap(mem->start, mem->end - mem->start + 1); if (!dev->base) { r = -ENOMEM; goto err_free_mem; } platform_set_drvdata(pdev, dev); if ((r = omap_i2c_get_clocks(dev)) != 0) goto err_free_mem; goto err_iounmap; omap_i2c_unidle(dev); Loading Loading @@ -640,6 +645,8 @@ omap_i2c_probe(struct platform_device *pdev) omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); omap_i2c_idle(dev); omap_i2c_put_clocks(dev); err_iounmap: iounmap(dev->base); err_free_mem: platform_set_drvdata(pdev, NULL); kfree(dev); Loading @@ -661,6 +668,7 @@ omap_i2c_remove(struct platform_device *pdev) i2c_del_adapter(&dev->adapter); omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0); omap_i2c_put_clocks(dev); iounmap(dev->base); kfree(dev); mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(mem->start, (mem->end - mem->start) + 1); Loading
drivers/mmc/host/omap.c +6 −1 Original line number Diff line number Diff line Loading @@ -1455,7 +1455,9 @@ static int __init mmc_omap_probe(struct platform_device *pdev) host->irq = irq; host->phys_base = host->mem_res->start; host->virt_base = (void __iomem *) IO_ADDRESS(host->phys_base); host->virt_base = ioremap(res->start, res->end - res->start + 1); if (!host->virt_base) goto err_ioremap; if (cpu_is_omap24xx()) { host->iclk = clk_get(&pdev->dev, "mmc_ick"); Loading Loading @@ -1510,6 +1512,8 @@ static int __init mmc_omap_probe(struct platform_device *pdev) clk_put(host->iclk); } err_free_mmc_host: iounmap(host->virt_base); err_ioremap: kfree(host); err_free_mem_region: release_mem_region(res->start, res->end - res->start + 1); Loading @@ -1536,6 +1540,7 @@ static int mmc_omap_remove(struct platform_device *pdev) if (host->fclk && !IS_ERR(host->fclk)) clk_put(host->fclk); iounmap(host->virt_base); release_mem_region(pdev->resource[0].start, pdev->resource[0].end - pdev->resource[0].start + 1); Loading
drivers/spi/omap2_mcspi.c +11 −1 Original line number Diff line number Diff line Loading @@ -1009,7 +1009,12 @@ static int __init omap2_mcspi_probe(struct platform_device *pdev) } mcspi->phys = r->start; mcspi->base = (void __iomem *) io_p2v(r->start); mcspi->base = ioremap(r->start, r->end - r->start + 1); if (!mcspi->base) { dev_dbg(&pdev->dev, "can't ioremap MCSPI\n"); status = -ENOMEM; goto err1aa; } INIT_WORK(&mcspi->work, omap2_mcspi_work); Loading Loading @@ -1059,6 +1064,8 @@ static int __init omap2_mcspi_probe(struct platform_device *pdev) err2: clk_put(mcspi->ick); err1a: iounmap(mcspi->base); err1aa: release_mem_region(r->start, (r->end - r->start) + 1); err1: spi_master_put(master); Loading @@ -1071,6 +1078,7 @@ static int __exit omap2_mcspi_remove(struct platform_device *pdev) struct omap2_mcspi *mcspi; struct omap2_mcspi_dma *dma_channels; struct resource *r; void __iomem *base; master = dev_get_drvdata(&pdev->dev); mcspi = spi_master_get_devdata(master); Loading @@ -1082,7 +1090,9 @@ static int __exit omap2_mcspi_remove(struct platform_device *pdev) r = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(r->start, (r->end - r->start) + 1); base = mcspi->base; spi_unregister_master(master); iounmap(base); kfree(dma_channels); return 0; Loading
drivers/spi/omap_uwire.c +19 −4 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ * and irqs should show there too... */ #define UWIRE_BASE_PHYS 0xFFFB3000 #define UWIRE_BASE ((void *__iomem)IO_ADDRESS(UWIRE_BASE_PHYS)) /* uWire Registers: */ #define UWIRE_IO_SIZE 0x20 Loading Loading @@ -103,16 +102,21 @@ struct uwire_state { }; /* REVISIT compile time constant for idx_shift? */ /* * Or, put it in a structure which is used throughout the driver; * that avoids having to issue two loads for each bit of static data. */ static unsigned int uwire_idx_shift; static void __iomem *uwire_base; static inline void uwire_write_reg(int idx, u16 val) { __raw_writew(val, UWIRE_BASE + (idx << uwire_idx_shift)); __raw_writew(val, uwire_base + (idx << uwire_idx_shift)); } static inline u16 uwire_read_reg(int idx) { return __raw_readw(UWIRE_BASE + (idx << uwire_idx_shift)); return __raw_readw(uwire_base + (idx << uwire_idx_shift)); } static inline void omap_uwire_configure_mode(u8 cs, unsigned long flags) Loading Loading @@ -492,6 +496,14 @@ static int __init uwire_probe(struct platform_device *pdev) return -ENODEV; uwire = spi_master_get_devdata(master); uwire_base = ioremap(UWIRE_BASE_PHYS, UWIRE_IO_SIZE); if (!uwire_base) { dev_dbg(&pdev->dev, "can't ioremap UWIRE\n"); spi_master_put(master); return -ENOMEM; } dev_set_drvdata(&pdev->dev, uwire); uwire->ck = clk_get(&pdev->dev, "armxor_ck"); Loading Loading @@ -520,8 +532,10 @@ static int __init uwire_probe(struct platform_device *pdev) uwire->bitbang.txrx_bufs = uwire_txrx; status = spi_bitbang_start(&uwire->bitbang); if (status < 0) if (status < 0) { uwire_off(uwire); iounmap(uwire_base); } return status; } Loading @@ -534,6 +548,7 @@ static int __exit uwire_remove(struct platform_device *pdev) status = spi_bitbang_stop(&uwire->bitbang); uwire_off(uwire); iounmap(uwire_base); return status; } Loading