summaryrefslogtreecommitdiff
path: root/drivers/i2c/busses/i2c-pxa.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-30 17:04:01 (GMT)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-30 17:04:01 (GMT)
commitf54496f55a729078e9eef90bf9e0783857a27db1 (patch)
tree104cf71ea8349a35990a9d3b58679229a604df31 /drivers/i2c/busses/i2c-pxa.c
parentaa2d3322989d8fd40fb2e417142c9a029d7831a4 (diff)
parentcdea460643072e1ee3647434aa254b5b81364f68 (diff)
downloadlinux-fsl-qoriq-f54496f55a729078e9eef90bf9e0783857a27db1.tar.xz
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] Fix some section mismatch warnings [ARM] 4417/1: Serial: Fix AMBA drivers locking [ARM] 4394/1: ARMv7: Add the TLB range operations [ARM] 4410/1: Remove extern declarations in coyote/ixdpg425-pci.c [ARM] 4416/1: NWFPE: fix undeclared symbols [ARM] 4415/1: AML5900: fix sparse warnings from map_io [ARM] 4414/1: S3C2443: sparse fix for clock.c [ARM] 4412/1: S3C2412: reset errata fix [ARM] 4411/1: KS8695: Another serial driver fix [ARM] oprofile: avoid lockdep warnings on mpcore oprofile init [ARM] Fix stacktrace FP range checking [ARM] use __used attribute [ARM] enable arbitary speed tty ioctls and split input/output speed [ARM] remove unused header file: arch/arm/mach-s3c2410/bast.h [ARM] 4406/1: Trivial NSLU2 / NAS-100D header & setup code cleanup [ARM] 4405/1: NSLU2, DSM-G600 frequency fixup code [ARM] 4404/1: Trivial IXP42x Kconfig cleanup [ARM] 4403/1: Make the PXA-I2C driver work with lockdep validator [ARM] 4402/1: S3C2443: Add physical address of HSMMC controller [ARM] 4401/1: S3C2443: Add definitions for port GPIOJ
Diffstat (limited to 'drivers/i2c/busses/i2c-pxa.c')
-rw-r--r--drivers/i2c/busses/i2c-pxa.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
index 8a0a99b..28e7b91 100644
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
@@ -837,20 +837,10 @@ static const struct i2c_algorithm i2c_pxa_algorithm = {
.functionality = i2c_pxa_functionality,
};
-static struct pxa_i2c i2c_pxa = {
- .lock = __SPIN_LOCK_UNLOCKED(i2c_pxa.lock),
- .adap = {
- .owner = THIS_MODULE,
- .algo = &i2c_pxa_algorithm,
- .name = "pxa2xx-i2c.0",
- .retries = 5,
- },
-};
-
#define res_len(r) ((r)->end - (r)->start + 1)
static int i2c_pxa_probe(struct platform_device *dev)
{
- struct pxa_i2c *i2c = &i2c_pxa;
+ struct pxa_i2c *i2c;
struct resource *res;
struct i2c_pxa_platform_data *plat = dev->dev.platform_data;
int ret;
@@ -864,15 +854,20 @@ static int i2c_pxa_probe(struct platform_device *dev)
if (!request_mem_region(res->start, res_len(res), res->name))
return -ENOMEM;
- i2c = kmalloc(sizeof(struct pxa_i2c), GFP_KERNEL);
+ i2c = kzalloc(sizeof(struct pxa_i2c), GFP_KERNEL);
if (!i2c) {
ret = -ENOMEM;
goto emalloc;
}
- memcpy(i2c, &i2c_pxa, sizeof(struct pxa_i2c));
+ i2c->adap.owner = THIS_MODULE;
+ i2c->adap.algo = &i2c_pxa_algorithm;
+ i2c->adap.retries = 5;
+
+ spin_lock_init(&i2c->lock);
init_waitqueue_head(&i2c->wait);
- i2c->adap.name[strlen(i2c->adap.name) - 1] = '0' + dev->id % 10;
+
+ sprintf(i2c->adap.name, "pxa_i2c-i2c.%u", dev->id);
i2c->reg_base = ioremap(res->start, res_len(res));
if (!i2c->reg_base) {