| .. | .. |
|---|
| 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); |
|---|