diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2017-03-25 09:12:04 -0400 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2017-03-30 11:31:22 -0400 |
commit | 3911764cfbe7f5d229498d818aa2eff6e5611da8 (patch) | |
tree | 045434604ea6eacf454facd2514951a6afd10457 | |
parent | 3f205d7b47611f82316776c9ef7317525242307b (diff) |
i2c: meson: remove meson_i2c_write_tokens
meson_i2c_write_tokens is always called directly after
meson_i2c_prepare_xfer (and only then). So we can simplify the code by
removing meson_i2c_write_tokens and moving the two statements of
meson_i2c_write_tokens to the end of meson_i2c_prepare_xfer.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
-rw-r--r-- | drivers/i2c/busses/i2c-meson.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/drivers/i2c/busses/i2c-meson.c b/drivers/i2c/busses/i2c-meson.c index 3b3be0c8d1f1..be9f83bd92fc 100644 --- a/drivers/i2c/busses/i2c-meson.c +++ b/drivers/i2c/busses/i2c-meson.c | |||
@@ -123,12 +123,6 @@ static void meson_i2c_add_token(struct meson_i2c *i2c, int token) | |||
123 | i2c->num_tokens++; | 123 | i2c->num_tokens++; |
124 | } | 124 | } |
125 | 125 | ||
126 | static void meson_i2c_write_tokens(struct meson_i2c *i2c) | ||
127 | { | ||
128 | writel(i2c->tokens[0], i2c->regs + REG_TOK_LIST0); | ||
129 | writel(i2c->tokens[1], i2c->regs + REG_TOK_LIST1); | ||
130 | } | ||
131 | |||
132 | static void meson_i2c_set_clk_div(struct meson_i2c *i2c, unsigned int freq) | 126 | static void meson_i2c_set_clk_div(struct meson_i2c *i2c, unsigned int freq) |
133 | { | 127 | { |
134 | unsigned long clk_rate = clk_get_rate(i2c->clk); | 128 | unsigned long clk_rate = clk_get_rate(i2c->clk); |
@@ -210,6 +204,9 @@ static void meson_i2c_prepare_xfer(struct meson_i2c *i2c) | |||
210 | 204 | ||
211 | if (i2c->last && i2c->pos + i2c->count >= i2c->msg->len) | 205 | if (i2c->last && i2c->pos + i2c->count >= i2c->msg->len) |
212 | meson_i2c_add_token(i2c, TOKEN_STOP); | 206 | meson_i2c_add_token(i2c, TOKEN_STOP); |
207 | |||
208 | writel(i2c->tokens[0], i2c->regs + REG_TOK_LIST0); | ||
209 | writel(i2c->tokens[1], i2c->regs + REG_TOK_LIST1); | ||
213 | } | 210 | } |
214 | 211 | ||
215 | static irqreturn_t meson_i2c_irq(int irqno, void *dev_id) | 212 | static irqreturn_t meson_i2c_irq(int irqno, void *dev_id) |
@@ -275,12 +272,10 @@ static irqreturn_t meson_i2c_irq(int irqno, void *dev_id) | |||
275 | } | 272 | } |
276 | 273 | ||
277 | out: | 274 | out: |
278 | if (i2c->state != STATE_IDLE) { | 275 | if (i2c->state != STATE_IDLE) |
279 | /* Restart the processing */ | 276 | /* Restart the processing */ |
280 | meson_i2c_write_tokens(i2c); | ||
281 | meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_START, | 277 | meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_START, |
282 | REG_CTRL_START); | 278 | REG_CTRL_START); |
283 | } | ||
284 | 279 | ||
285 | spin_unlock(&i2c->lock); | 280 | spin_unlock(&i2c->lock); |
286 | 281 | ||
@@ -321,7 +316,6 @@ static int meson_i2c_xfer_msg(struct meson_i2c *i2c, struct i2c_msg *msg, | |||
321 | 316 | ||
322 | i2c->state = (msg->flags & I2C_M_RD) ? STATE_READ : STATE_WRITE; | 317 | i2c->state = (msg->flags & I2C_M_RD) ? STATE_READ : STATE_WRITE; |
323 | meson_i2c_prepare_xfer(i2c); | 318 | meson_i2c_prepare_xfer(i2c); |
324 | meson_i2c_write_tokens(i2c); | ||
325 | reinit_completion(&i2c->done); | 319 | reinit_completion(&i2c->done); |
326 | 320 | ||
327 | /* Start the transfer */ | 321 | /* Start the transfer */ |