Commit b94c820f authored by Wolfram Sang's avatar Wolfram Sang

i2c: cpm: make use of the new infrastructure for quirks

Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent 994647db
...@@ -308,22 +308,12 @@ static int cpm_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) ...@@ -308,22 +308,12 @@ static int cpm_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
struct i2c_reg __iomem *i2c_reg = cpm->i2c_reg; struct i2c_reg __iomem *i2c_reg = cpm->i2c_reg;
struct i2c_ram __iomem *i2c_ram = cpm->i2c_ram; struct i2c_ram __iomem *i2c_ram = cpm->i2c_ram;
struct i2c_msg *pmsg; struct i2c_msg *pmsg;
int ret, i; int ret;
int tptr; int tptr;
int rptr; int rptr;
cbd_t __iomem *tbdf; cbd_t __iomem *tbdf;
cbd_t __iomem *rbdf; cbd_t __iomem *rbdf;
if (num > CPM_MAXBD)
return -EINVAL;
/* Check if we have any oversized READ requests */
for (i = 0; i < num; i++) {
pmsg = &msgs[i];
if (pmsg->len >= CPM_MAX_READ)
return -EINVAL;
}
/* Reset to use first buffer */ /* Reset to use first buffer */
out_be16(&i2c_ram->rbptr, in_be16(&i2c_ram->rbase)); out_be16(&i2c_ram->rbptr, in_be16(&i2c_ram->rbase));
out_be16(&i2c_ram->tbptr, in_be16(&i2c_ram->tbase)); out_be16(&i2c_ram->tbptr, in_be16(&i2c_ram->tbase));
...@@ -424,10 +414,18 @@ static const struct i2c_algorithm cpm_i2c_algo = { ...@@ -424,10 +414,18 @@ static const struct i2c_algorithm cpm_i2c_algo = {
.functionality = cpm_i2c_func, .functionality = cpm_i2c_func,
}; };
/* CPM_MAX_READ is also limiting writes according to the code! */
static struct i2c_adapter_quirks cpm_i2c_quirks = {
.max_num_msgs = CPM_MAXBD,
.max_read_len = CPM_MAX_READ,
.max_write_len = CPM_MAX_READ,
};
static const struct i2c_adapter cpm_ops = { static const struct i2c_adapter cpm_ops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = "i2c-cpm", .name = "i2c-cpm",
.algo = &cpm_i2c_algo, .algo = &cpm_i2c_algo,
.quirks = &cpm_i2c_quirks,
}; };
static int cpm_i2c_setup(struct cpm_i2c *cpm) static int cpm_i2c_setup(struct cpm_i2c *cpm)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment