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

Changed files
+18 -14
drivers
+2 -4
drivers/i2c/busses/Makefile
··· 90 90 obj-$(CONFIG_I2C_OCORES) += i2c-ocores.o 91 91 obj-$(CONFIG_I2C_OMAP) += i2c-omap.o 92 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 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 97 95 obj-$(CONFIG_I2C_PCA_PLATFORM) += i2c-pca-platform.o 98 96 obj-$(CONFIG_I2C_PNX) += i2c-pnx.o 99 97 obj-$(CONFIG_I2C_PXA) += i2c-pxa.o
+2 -2
drivers/i2c/busses/i2c-i801.c
··· 498 498 /* Set block buffer mode */ 499 499 outb_p(inb_p(SMBAUXCTL(priv)) | SMBAUXCTL_E32B, SMBAUXCTL(priv)); 500 500 501 - inb_p(SMBHSTCNT(priv)); /* reset the data buffer index */ 502 - 503 501 if (read_write == I2C_SMBUS_WRITE) { 504 502 len = data->block[0]; 505 503 outb_p(len, SMBHSTDAT0(priv)); 504 + inb_p(SMBHSTCNT(priv)); /* reset the data buffer index */ 506 505 for (i = 0; i < len; i++) 507 506 outb_p(data->block[i+1], SMBBLKDAT(priv)); 508 507 } ··· 519 520 } 520 521 521 522 data->block[0] = len; 523 + inb_p(SMBHSTCNT(priv)); /* reset the data buffer index */ 522 524 for (i = 0; i < len; i++) 523 525 data->block[i + 1] = inb_p(SMBBLKDAT(priv)); 524 526 }
+6
drivers/i2c/busses/i2c-pasemi-core.c
··· 369 369 370 370 return 0; 371 371 } 372 + EXPORT_SYMBOL_GPL(pasemi_i2c_common_probe); 372 373 373 374 irqreturn_t pasemi_irq_handler(int irq, void *dev_id) 374 375 { ··· 379 378 complete(&smbus->irq_completion); 380 379 return IRQ_HANDLED; 381 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 613 614 614 peripheral.addr = msgs[i].addr; 615 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 616 ret = geni_i2c_gpi(gi2c, &msgs[i], &config, 624 617 &tx_addr, &tx_buf, I2C_WRITE, gi2c->tx_c); 625 618 if (ret) 626 619 goto err; 627 620 628 - if (msgs[i].flags & I2C_M_RD) 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 + 629 627 dma_async_issue_pending(gi2c->rx_c); 628 + } 629 + 630 630 dma_async_issue_pending(gi2c->tx_c); 631 631 632 632 timeout = wait_for_completion_timeout(&gi2c->done, XFER_TIMEOUT);