Merge tag 'i2c-for-6.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux

Pull i2c fixes from Wolfram Sang:
"Two fixes for i801 and qcom-geni devices. Meanwhile, a fix from Arnd
addresses a compilation error encountered during compile test on
powerpc"

* tag 'i2c-for-6.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
i2c: i801: Fix block process call transactions
i2c: pasemi: split driver into two separate modules
i2c: qcom-geni: Correct I2C TRE sequence

+18 -14
+2 -4
drivers/i2c/busses/Makefile
··· 90 obj-$(CONFIG_I2C_OCORES) += i2c-ocores.o 91 obj-$(CONFIG_I2C_OMAP) += i2c-omap.o 92 obj-$(CONFIG_I2C_OWL) += i2c-owl.o 93 - i2c-pasemi-objs := i2c-pasemi-core.o i2c-pasemi-pci.o 94 - obj-$(CONFIG_I2C_PASEMI) += i2c-pasemi.o 95 - i2c-apple-objs := i2c-pasemi-core.o i2c-pasemi-platform.o 96 - obj-$(CONFIG_I2C_APPLE) += i2c-apple.o 97 obj-$(CONFIG_I2C_PCA_PLATFORM) += i2c-pca-platform.o 98 obj-$(CONFIG_I2C_PNX) += i2c-pnx.o 99 obj-$(CONFIG_I2C_PXA) += i2c-pxa.o
··· 90 obj-$(CONFIG_I2C_OCORES) += i2c-ocores.o 91 obj-$(CONFIG_I2C_OMAP) += i2c-omap.o 92 obj-$(CONFIG_I2C_OWL) += i2c-owl.o 93 + obj-$(CONFIG_I2C_PASEMI) += i2c-pasemi-core.o i2c-pasemi-pci.o 94 + obj-$(CONFIG_I2C_APPLE) += i2c-pasemi-core.o i2c-pasemi-platform.o 95 obj-$(CONFIG_I2C_PCA_PLATFORM) += i2c-pca-platform.o 96 obj-$(CONFIG_I2C_PNX) += i2c-pnx.o 97 obj-$(CONFIG_I2C_PXA) += i2c-pxa.o
+2 -2
drivers/i2c/busses/i2c-i801.c
··· 498 /* Set block buffer mode */ 499 outb_p(inb_p(SMBAUXCTL(priv)) | SMBAUXCTL_E32B, SMBAUXCTL(priv)); 500 501 - inb_p(SMBHSTCNT(priv)); /* reset the data buffer index */ 502 - 503 if (read_write == I2C_SMBUS_WRITE) { 504 len = data->block[0]; 505 outb_p(len, SMBHSTDAT0(priv)); 506 for (i = 0; i < len; i++) 507 outb_p(data->block[i+1], SMBBLKDAT(priv)); 508 } ··· 519 } 520 521 data->block[0] = len; 522 for (i = 0; i < len; i++) 523 data->block[i + 1] = inb_p(SMBBLKDAT(priv)); 524 }
··· 498 /* Set block buffer mode */ 499 outb_p(inb_p(SMBAUXCTL(priv)) | SMBAUXCTL_E32B, SMBAUXCTL(priv)); 500 501 if (read_write == I2C_SMBUS_WRITE) { 502 len = data->block[0]; 503 outb_p(len, SMBHSTDAT0(priv)); 504 + inb_p(SMBHSTCNT(priv)); /* reset the data buffer index */ 505 for (i = 0; i < len; i++) 506 outb_p(data->block[i+1], SMBBLKDAT(priv)); 507 } ··· 520 } 521 522 data->block[0] = len; 523 + inb_p(SMBHSTCNT(priv)); /* reset the data buffer index */ 524 for (i = 0; i < len; i++) 525 data->block[i + 1] = inb_p(SMBBLKDAT(priv)); 526 }
+6
drivers/i2c/busses/i2c-pasemi-core.c
··· 369 370 return 0; 371 } 372 373 irqreturn_t pasemi_irq_handler(int irq, void *dev_id) 374 { ··· 379 complete(&smbus->irq_completion); 380 return IRQ_HANDLED; 381 }
··· 369 370 return 0; 371 } 372 + EXPORT_SYMBOL_GPL(pasemi_i2c_common_probe); 373 374 irqreturn_t pasemi_irq_handler(int irq, void *dev_id) 375 { ··· 378 complete(&smbus->irq_completion); 379 return IRQ_HANDLED; 380 } 381 + EXPORT_SYMBOL_GPL(pasemi_irq_handler); 382 + 383 + MODULE_LICENSE("GPL"); 384 + MODULE_AUTHOR("Olof Johansson <olof@lixom.net>"); 385 + MODULE_DESCRIPTION("PA Semi PWRficient SMBus driver");
+8 -8
drivers/i2c/busses/i2c-qcom-geni.c
··· 613 614 peripheral.addr = msgs[i].addr; 615 616 - if (msgs[i].flags & I2C_M_RD) { 617 - ret = geni_i2c_gpi(gi2c, &msgs[i], &config, 618 - &rx_addr, &rx_buf, I2C_READ, gi2c->rx_c); 619 - if (ret) 620 - goto err; 621 - } 622 - 623 ret = geni_i2c_gpi(gi2c, &msgs[i], &config, 624 &tx_addr, &tx_buf, I2C_WRITE, gi2c->tx_c); 625 if (ret) 626 goto err; 627 628 - if (msgs[i].flags & I2C_M_RD) 629 dma_async_issue_pending(gi2c->rx_c); 630 dma_async_issue_pending(gi2c->tx_c); 631 632 timeout = wait_for_completion_timeout(&gi2c->done, XFER_TIMEOUT);
··· 613 614 peripheral.addr = msgs[i].addr; 615 616 ret = geni_i2c_gpi(gi2c, &msgs[i], &config, 617 &tx_addr, &tx_buf, I2C_WRITE, gi2c->tx_c); 618 if (ret) 619 goto err; 620 621 + if (msgs[i].flags & I2C_M_RD) { 622 + ret = geni_i2c_gpi(gi2c, &msgs[i], &config, 623 + &rx_addr, &rx_buf, I2C_READ, gi2c->rx_c); 624 + if (ret) 625 + goto err; 626 + 627 dma_async_issue_pending(gi2c->rx_c); 628 + } 629 + 630 dma_async_issue_pending(gi2c->tx_c); 631 632 timeout = wait_for_completion_timeout(&gi2c->done, XFER_TIMEOUT);