[ARM] pxa: add platform device ID table to pxa i2c driver

Signed-off-by: Eric Miao <eric.miao@marvell.com>
This commit is contained in:
Eric Miao 2009-04-13 14:43:25 +08:00 committed by Eric Miao
parent 9fa7eb283c
commit f23d491131
2 changed files with 19 additions and 3 deletions

View file

@ -287,7 +287,7 @@ static struct resource pxa3xx_resources_i2c_power[] = {
}; };
struct platform_device pxa3xx_device_i2c_power = { struct platform_device pxa3xx_device_i2c_power = {
.name = "pxa2xx-i2c", .name = "pxa3xx-pwri2c",
.id = 1, .id = 1,
.resource = pxa3xx_resources_i2c_power, .resource = pxa3xx_resources_i2c_power,
.num_resources = ARRAY_SIZE(pxa3xx_resources_i2c_power), .num_resources = ARRAY_SIZE(pxa3xx_resources_i2c_power),

View file

@ -34,11 +34,25 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <mach/hardware.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/io.h> #include <asm/io.h>
#include <mach/i2c.h> #include <mach/i2c.h>
/*
* I2C register offsets will be shifted 0 or 1 bit left, depending on
* different SoCs
*/
#define REG_SHIFT_0 (0 << 0)
#define REG_SHIFT_1 (1 << 0)
#define REG_SHIFT(d) ((d) & 0x1)
static const struct platform_device_id i2c_pxa_id_table[] = {
{ "pxa2xx-i2c", REG_SHIFT_1 },
{ "pxa3xx-pwri2c", REG_SHIFT_0 },
{ },
};
MODULE_DEVICE_TABLE(platform, i2c_pxa_id_table);
/* /*
* I2C registers and bit definitions * I2C registers and bit definitions
*/ */
@ -985,6 +999,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
struct pxa_i2c *i2c; struct pxa_i2c *i2c;
struct resource *res; struct resource *res;
struct i2c_pxa_platform_data *plat = dev->dev.platform_data; struct i2c_pxa_platform_data *plat = dev->dev.platform_data;
struct platform_device_id *id = platform_get_device_id(dev);
int ret; int ret;
int irq; int irq;
@ -1028,7 +1043,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
ret = -EIO; ret = -EIO;
goto eremap; goto eremap;
} }
i2c->reg_shift = (cpu_is_pxa3xx() && (dev->id == 1)) ? 0 : 1; i2c->reg_shift = REG_SHIFT(id->driver_data);
i2c->iobase = res->start; i2c->iobase = res->start;
i2c->iosize = res_len(res); i2c->iosize = res_len(res);
@ -1150,6 +1165,7 @@ static struct platform_driver i2c_pxa_driver = {
.name = "pxa2xx-i2c", .name = "pxa2xx-i2c",
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
.id_table = i2c_pxa_id_table,
}; };
static int __init i2c_adap_pxa_init(void) static int __init i2c_adap_pxa_init(void)