diff options
author | Wolfram Sang <wsa@the-dreams.de> | 2015-01-07 06:24:10 -0500 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2015-03-13 10:10:59 -0400 |
commit | 338f1ab6c4ea60cbc8ee57b78707d4b8d0219519 (patch) | |
tree | c5e1ea4a17fca91e05c18e1d0da17261c2909245 /drivers/i2c/busses/i2c-bcm-iproc.c | |
parent | fb3de30cd9c7e90c3e58cfe51b02c768b291873b (diff) |
i2c: bcm-iproc: make use of the new infrastructure for quirks
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Tested-by: Ray Jui <rjui@broadcom.com>
Diffstat (limited to 'drivers/i2c/busses/i2c-bcm-iproc.c')
-rw-r--r-- | drivers/i2c/busses/i2c-bcm-iproc.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/i2c/busses/i2c-bcm-iproc.c b/drivers/i2c/busses/i2c-bcm-iproc.c index d3c89157b337..f9f2c2082151 100644 --- a/drivers/i2c/busses/i2c-bcm-iproc.c +++ b/drivers/i2c/busses/i2c-bcm-iproc.c | |||
@@ -160,14 +160,6 @@ static int bcm_iproc_i2c_xfer_single_msg(struct bcm_iproc_i2c_dev *iproc_i2c, | |||
160 | u32 val; | 160 | u32 val; |
161 | unsigned long time_left = msecs_to_jiffies(I2C_TIMEOUT_MESC); | 161 | unsigned long time_left = msecs_to_jiffies(I2C_TIMEOUT_MESC); |
162 | 162 | ||
163 | /* need to reserve one byte in the FIFO for the slave address */ | ||
164 | if (msg->len > M_TX_RX_FIFO_SIZE - 1) { | ||
165 | dev_err(iproc_i2c->device, | ||
166 | "only support data length up to %u bytes\n", | ||
167 | M_TX_RX_FIFO_SIZE - 1); | ||
168 | return -EOPNOTSUPP; | ||
169 | } | ||
170 | |||
171 | /* check if bus is busy */ | 163 | /* check if bus is busy */ |
172 | if (!!(readl(iproc_i2c->base + M_CMD_OFFSET) & | 164 | if (!!(readl(iproc_i2c->base + M_CMD_OFFSET) & |
173 | BIT(M_CMD_START_BUSY_SHIFT))) { | 165 | BIT(M_CMD_START_BUSY_SHIFT))) { |
@@ -287,6 +279,12 @@ static const struct i2c_algorithm bcm_iproc_algo = { | |||
287 | .functionality = bcm_iproc_i2c_functionality, | 279 | .functionality = bcm_iproc_i2c_functionality, |
288 | }; | 280 | }; |
289 | 281 | ||
282 | static struct i2c_adapter_quirks bcm_iproc_i2c_quirks = { | ||
283 | /* need to reserve one byte in the FIFO for the slave address */ | ||
284 | .max_read_len = M_TX_RX_FIFO_SIZE - 1, | ||
285 | .max_write_len = M_TX_RX_FIFO_SIZE - 1, | ||
286 | }; | ||
287 | |||
290 | static int bcm_iproc_i2c_cfg_speed(struct bcm_iproc_i2c_dev *iproc_i2c) | 288 | static int bcm_iproc_i2c_cfg_speed(struct bcm_iproc_i2c_dev *iproc_i2c) |
291 | { | 289 | { |
292 | unsigned int bus_speed; | 290 | unsigned int bus_speed; |
@@ -413,6 +411,7 @@ static int bcm_iproc_i2c_probe(struct platform_device *pdev) | |||
413 | i2c_set_adapdata(adap, iproc_i2c); | 411 | i2c_set_adapdata(adap, iproc_i2c); |
414 | strlcpy(adap->name, "Broadcom iProc I2C adapter", sizeof(adap->name)); | 412 | strlcpy(adap->name, "Broadcom iProc I2C adapter", sizeof(adap->name)); |
415 | adap->algo = &bcm_iproc_algo; | 413 | adap->algo = &bcm_iproc_algo; |
414 | adap->quirks = &bcm_iproc_i2c_quirks; | ||
416 | adap->dev.parent = &pdev->dev; | 415 | adap->dev.parent = &pdev->dev; |
417 | adap->dev.of_node = pdev->dev.of_node; | 416 | adap->dev.of_node = pdev->dev.of_node; |
418 | 417 | ||