aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiner Kallweit <hkallweit1@gmail.com>2017-03-25 09:12:04 -0400
committerWolfram Sang <wsa@the-dreams.de>2017-03-30 11:31:22 -0400
commit3911764cfbe7f5d229498d818aa2eff6e5611da8 (patch)
tree045434604ea6eacf454facd2514951a6afd10457
parent3f205d7b47611f82316776c9ef7317525242307b (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.c14
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
126static 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
132static void meson_i2c_set_clk_div(struct meson_i2c *i2c, unsigned int freq) 126static 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
215static irqreturn_t meson_i2c_irq(int irqno, void *dev_id) 212static 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
277out: 274out:
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 */