.. | .. |
---|
200 | 200 | /* CLKLO = I2C_CLK_RATIO * CLKHI, SETHOLD = CLKHI, DATAVD = CLKHI/2 */ |
---|
201 | 201 | static int lpi2c_imx_config(struct lpi2c_imx_struct *lpi2c_imx) |
---|
202 | 202 | { |
---|
203 | | - u8 prescale, filt, sethold, clkhi, clklo, datavd; |
---|
204 | | - unsigned int clk_rate, clk_cycle; |
---|
| 203 | + u8 prescale, filt, sethold, datavd; |
---|
| 204 | + unsigned int clk_rate, clk_cycle, clkhi, clklo; |
---|
205 | 205 | enum lpi2c_imx_pincfg pincfg; |
---|
206 | 206 | unsigned int temp; |
---|
207 | 207 | |
---|
.. | .. |
---|
462 | 462 | if (num == 1 && msgs[0].len == 0) |
---|
463 | 463 | goto stop; |
---|
464 | 464 | |
---|
| 465 | + lpi2c_imx->rx_buf = NULL; |
---|
| 466 | + lpi2c_imx->tx_buf = NULL; |
---|
465 | 467 | lpi2c_imx->delivered = 0; |
---|
466 | 468 | lpi2c_imx->msglen = msgs[i].len; |
---|
467 | 469 | init_completion(&lpi2c_imx->complete); |
---|
.. | .. |
---|
502 | 504 | static irqreturn_t lpi2c_imx_isr(int irq, void *dev_id) |
---|
503 | 505 | { |
---|
504 | 506 | struct lpi2c_imx_struct *lpi2c_imx = dev_id; |
---|
| 507 | + unsigned int enabled; |
---|
505 | 508 | unsigned int temp; |
---|
| 509 | + |
---|
| 510 | + enabled = readl(lpi2c_imx->base + LPI2C_MIER); |
---|
506 | 511 | |
---|
507 | 512 | lpi2c_imx_intctrl(lpi2c_imx, 0); |
---|
508 | 513 | temp = readl(lpi2c_imx->base + LPI2C_MSR); |
---|
| 514 | + temp &= enabled; |
---|
509 | 515 | |
---|
510 | 516 | if (temp & MSR_RDF) |
---|
511 | 517 | lpi2c_imx_read_rxfifo(lpi2c_imx); |
---|