hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
kernel/drivers/i2c/busses/i2c-imx-lpi2c.c
....@@ -200,8 +200,8 @@
200200 /* CLKLO = I2C_CLK_RATIO * CLKHI, SETHOLD = CLKHI, DATAVD = CLKHI/2 */
201201 static int lpi2c_imx_config(struct lpi2c_imx_struct *lpi2c_imx)
202202 {
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;
205205 enum lpi2c_imx_pincfg pincfg;
206206 unsigned int temp;
207207
....@@ -462,6 +462,8 @@
462462 if (num == 1 && msgs[0].len == 0)
463463 goto stop;
464464
465
+ lpi2c_imx->rx_buf = NULL;
466
+ lpi2c_imx->tx_buf = NULL;
465467 lpi2c_imx->delivered = 0;
466468 lpi2c_imx->msglen = msgs[i].len;
467469 init_completion(&lpi2c_imx->complete);
....@@ -502,10 +504,14 @@
502504 static irqreturn_t lpi2c_imx_isr(int irq, void *dev_id)
503505 {
504506 struct lpi2c_imx_struct *lpi2c_imx = dev_id;
507
+ unsigned int enabled;
505508 unsigned int temp;
509
+
510
+ enabled = readl(lpi2c_imx->base + LPI2C_MIER);
506511
507512 lpi2c_imx_intctrl(lpi2c_imx, 0);
508513 temp = readl(lpi2c_imx->base + LPI2C_MSR);
514
+ temp &= enabled;
509515
510516 if (temp & MSR_RDF)
511517 lpi2c_imx_read_rxfifo(lpi2c_imx);