Merge branch 'next-i2c' of git://aeryn.fluff.org.uk/bjdooks/linux

* 'next-i2c' of git://aeryn.fluff.org.uk/bjdooks/linux:
  i2c-stu300: Make driver depend on MACH_U300
  i2c-s3c2410: use resource_size()
  i2c: Use resource_size macro
  i2c: ST DDC I2C U300 bus driver v3
  i2c-bfin-twi: pull in io.h for ioremap()
This commit is contained in:
Linus Torvalds 2009-06-16 21:26:42 -07:00
commit 65795efbd3
15 changed files with 1074 additions and 33 deletions

View file

@ -513,6 +513,19 @@ config I2C_SIMTEC
This driver can also be built as a module. If so, the module
will be called i2c-simtec.
config I2C_STU300
tristate "ST Microelectronics DDC I2C interface"
depends on MACH_U300
default y if MACH_U300
help
If you say yes to this option, support will be included for the
I2C interface from ST Microelectronics simply called "DDC I2C"
supporting both I2C and DDC, used in e.g. the U300 series
mobile platforms.
This driver can also be built as a module. If so, the module
will be called i2c-stu300.
config I2C_VERSATILE
tristate "ARM Versatile/Realview I2C bus support"
depends on ARCH_VERSATILE || ARCH_REALVIEW

View file

@ -48,6 +48,7 @@ obj-$(CONFIG_I2C_S6000) += i2c-s6000.o
obj-$(CONFIG_I2C_SH7760) += i2c-sh7760.o
obj-$(CONFIG_I2C_SH_MOBILE) += i2c-sh_mobile.o
obj-$(CONFIG_I2C_SIMTEC) += i2c-simtec.o
obj-$(CONFIG_I2C_STU300) += i2c-stu300.o
obj-$(CONFIG_I2C_VERSATILE) += i2c-versatile.o
# External I2C/SMBus adapter drivers

View file

@ -200,10 +200,10 @@ static int __devinit at91_i2c_probe(struct platform_device *pdev)
if (!res)
return -ENXIO;
if (!request_mem_region(res->start, res->end - res->start + 1, "at91_i2c"))
if (!request_mem_region(res->start, resource_size(res), "at91_i2c"))
return -EBUSY;
twi_base = ioremap(res->start, res->end - res->start + 1);
twi_base = ioremap(res->start, resource_size(res));
if (!twi_base) {
rc = -ENOMEM;
goto fail0;
@ -252,7 +252,7 @@ fail2:
fail1:
iounmap(twi_base);
fail0:
release_mem_region(res->start, res->end - res->start + 1);
release_mem_region(res->start, resource_size(res));
return rc;
}
@ -268,7 +268,7 @@ static int __devexit at91_i2c_remove(struct platform_device *pdev)
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
iounmap(twi_base);
release_mem_region(res->start, res->end - res->start + 1);
release_mem_region(res->start, resource_size(res));
clk_disable(twi_clk); /* disable peripheral clock */
clk_put(twi_clk);

View file

@ -389,7 +389,7 @@ i2c_au1550_probe(struct platform_device *pdev)
goto out;
}
priv->ioarea = request_mem_region(r->start, r->end - r->start + 1,
priv->ioarea = request_mem_region(r->start, resource_size(r),
pdev->name);
if (!priv->ioarea) {
ret = -EBUSY;

View file

@ -12,6 +12,7 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/io.h>
#include <linux/mm.h>
#include <linux/timer.h>
#include <linux/spinlock.h>
@ -651,7 +652,7 @@ static int i2c_bfin_twi_probe(struct platform_device *pdev)
goto out_error_get_res;
}
iface->regs_base = ioremap(res->start, res->end - res->start + 1);
iface->regs_base = ioremap(res->start, resource_size(res));
if (iface->regs_base == NULL) {
dev_err(&pdev->dev, "Cannot map IO\n");
rc = -ENXIO;

View file

@ -373,7 +373,7 @@ static int __devinit highlander_i2c_probe(struct platform_device *pdev)
if (unlikely(!dev))
return -ENOMEM;
dev->base = ioremap_nocache(res->start, res->end - res->start + 1);
dev->base = ioremap_nocache(res->start, resource_size(res));
if (unlikely(!dev->base)) {
ret = -ENXIO;
goto err;

View file

@ -469,7 +469,7 @@ mv64xxx_i2c_map_regs(struct platform_device *pd,
if (!r)
return -ENODEV;
size = r->end - r->start + 1;
size = resource_size(r);
if (!request_mem_region(r->start, size, drv_data->adapter.name))
return -EBUSY;

View file

@ -234,14 +234,14 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev)
if (!i2c)
return -ENOMEM;
if (!request_mem_region(res->start, res->end - res->start + 1,
if (!request_mem_region(res->start, resource_size(res),
pdev->name)) {
dev_err(&pdev->dev, "Memory region busy\n");
ret = -EBUSY;
goto request_mem_failed;
}
i2c->base = ioremap(res->start, res->end - res->start + 1);
i2c->base = ioremap(res->start, resource_size(res));
if (!i2c->base) {
dev_err(&pdev->dev, "Unable to map registers\n");
ret = -EIO;
@ -283,7 +283,7 @@ add_adapter_failed:
request_irq_failed:
iounmap(i2c->base);
map_failed:
release_mem_region(res->start, res->end - res->start + 1);
release_mem_region(res->start, resource_size(res));
request_mem_failed:
kfree(i2c);
@ -311,7 +311,7 @@ static int __devexit ocores_i2c_remove(struct platform_device* pdev)
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (res)
release_mem_region(res->start, res->end - res->start + 1);
release_mem_region(res->start, resource_size(res));
kfree(i2c);

View file

@ -828,7 +828,7 @@ omap_i2c_probe(struct platform_device *pdev)
dev->idle = 1;
dev->dev = &pdev->dev;
dev->irq = irq->start;
dev->base = ioremap(mem->start, mem->end - mem->start + 1);
dev->base = ioremap(mem->start, resource_size(mem));
if (!dev->base) {
r = -ENOMEM;
goto err_free_mem;

View file

@ -27,8 +27,6 @@
#include <asm/irq.h>
#include <asm/io.h>
#define res_len(r) ((r)->end - (r)->start + 1)
struct i2c_pca_pf_data {
void __iomem *reg_base;
int irq; /* if 0, use polling */
@ -148,7 +146,7 @@ static int __devinit i2c_pca_pf_probe(struct platform_device *pdev)
goto e_print;
}
if (!request_mem_region(res->start, res_len(res), res->name)) {
if (!request_mem_region(res->start, resource_size(res), res->name)) {
ret = -ENOMEM;
goto e_print;
}
@ -161,13 +159,13 @@ static int __devinit i2c_pca_pf_probe(struct platform_device *pdev)
init_waitqueue_head(&i2c->wait);
i2c->reg_base = ioremap(res->start, res_len(res));
i2c->reg_base = ioremap(res->start, resource_size(res));
if (!i2c->reg_base) {
ret = -ENOMEM;
goto e_remap;
}
i2c->io_base = res->start;
i2c->io_size = res_len(res);
i2c->io_size = resource_size(res);
i2c->irq = irq;
i2c->adap.nr = pdev->id >= 0 ? pdev->id : 0;
@ -250,7 +248,7 @@ e_reqirq:
e_remap:
kfree(i2c);
e_alloc:
release_mem_region(res->start, res_len(res));
release_mem_region(res->start, resource_size(res));
e_print:
printk(KERN_ERR "Registering PCA9564/PCA9665 FAILED! (%d)\n", ret);
return ret;

View file

@ -283,7 +283,7 @@ static int __devinit pmcmsptwi_probe(struct platform_device *pldev)
}
/* reserve the memory region */
if (!request_mem_region(res->start, res->end - res->start + 1,
if (!request_mem_region(res->start, resource_size(res),
pldev->name)) {
dev_err(&pldev->dev,
"Unable to get memory/io address region 0x%08x\n",
@ -294,7 +294,7 @@ static int __devinit pmcmsptwi_probe(struct platform_device *pldev)
/* remap the memory */
pmcmsptwi_data.iobase = ioremap_nocache(res->start,
res->end - res->start + 1);
resource_size(res));
if (!pmcmsptwi_data.iobase) {
dev_err(&pldev->dev,
"Unable to ioremap address 0x%08x\n", res->start);
@ -360,7 +360,7 @@ ret_unmap:
iounmap(pmcmsptwi_data.iobase);
ret_unreserve:
release_mem_region(res->start, res->end - res->start + 1);
release_mem_region(res->start, resource_size(res));
ret_err:
return rc;
@ -385,7 +385,7 @@ static int __devexit pmcmsptwi_remove(struct platform_device *pldev)
iounmap(pmcmsptwi_data.iobase);
res = platform_get_resource(pldev, IORESOURCE_MEM, 0);
release_mem_region(res->start, res->end - res->start + 1);
release_mem_region(res->start, resource_size(res));
return 0;
}

View file

@ -993,7 +993,6 @@ static const struct i2c_algorithm i2c_pxa_pio_algorithm = {
.functionality = i2c_pxa_functionality,
};
#define res_len(r) ((r)->end - (r)->start + 1)
static int i2c_pxa_probe(struct platform_device *dev)
{
struct pxa_i2c *i2c;
@ -1008,7 +1007,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
if (res == NULL || irq < 0)
return -ENODEV;
if (!request_mem_region(res->start, res_len(res), res->name))
if (!request_mem_region(res->start, resource_size(res), res->name))
return -ENOMEM;
i2c = kzalloc(sizeof(struct pxa_i2c), GFP_KERNEL);
@ -1038,7 +1037,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
goto eclk;
}
i2c->reg_base = ioremap(res->start, res_len(res));
i2c->reg_base = ioremap(res->start, resource_size(res));
if (!i2c->reg_base) {
ret = -EIO;
goto eremap;
@ -1046,7 +1045,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
i2c->reg_shift = REG_SHIFT(id->driver_data);
i2c->iobase = res->start;
i2c->iosize = res_len(res);
i2c->iosize = resource_size(res);
i2c->irq = irq;
@ -1110,7 +1109,7 @@ eremap:
eclk:
kfree(i2c);
emalloc:
release_mem_region(res->start, res_len(res));
release_mem_region(res->start, resource_size(res));
return ret;
}

View file

@ -828,7 +828,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
goto err_clk;
}
i2c->ioarea = request_mem_region(res->start, (res->end-res->start)+1,
i2c->ioarea = request_mem_region(res->start, resource_size(res),
pdev->name);
if (i2c->ioarea == NULL) {
@ -837,7 +837,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
goto err_clk;
}
i2c->regs = ioremap(res->start, (res->end-res->start)+1);
i2c->regs = ioremap(res->start, resource_size(res));
if (i2c->regs == NULL) {
dev_err(&pdev->dev, "cannot map IO\n");

File diff suppressed because it is too large Load diff

View file

@ -76,7 +76,7 @@ static int i2c_versatile_probe(struct platform_device *dev)
goto err_out;
}
if (!request_mem_region(r->start, r->end - r->start + 1, "versatile-i2c")) {
if (!request_mem_region(r->start, resource_size(r), "versatile-i2c")) {
ret = -EBUSY;
goto err_out;
}
@ -87,7 +87,7 @@ static int i2c_versatile_probe(struct platform_device *dev)
goto err_release;
}
i2c->base = ioremap(r->start, r->end - r->start + 1);
i2c->base = ioremap(r->start, resource_size(r));
if (!i2c->base) {
ret = -ENOMEM;
goto err_free;
@ -118,7 +118,7 @@ static int i2c_versatile_probe(struct platform_device *dev)
err_free:
kfree(i2c);
err_release:
release_mem_region(r->start, r->end - r->start + 1);
release_mem_region(r->start, resource_size(r));
err_out:
return ret;
}