WSL2-Linux-Kernel/drivers/i2c/busses
Jean Delvare 1f8d0691c5 i2c: i801: Fix block process call transactions
[ Upstream commit c1c9d0f6f7f1dbf29db996bd8e166242843a5f21 ]

According to the Intel datasheets, software must reset the block
buffer index twice for block process call transactions: once before
writing the outgoing data to the buffer, and once again before
reading the incoming data from the buffer.

The driver is currently missing the second reset, causing the wrong
portion of the block buffer to be read.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Reported-by: Piotr Zakowski <piotr.zakowski@intel.com>
Closes: https://lore.kernel.org/linux-i2c/20240213120553.7b0ab120@endymion.delvare/
Fixes: 315cd67c94 ("i2c: i801: Add Block Write-Block Read Process Call support")
Reviewed-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-02-23 08:55:04 +01:00
..
Kconfig i2c: qup: allow COMPILE_TEST 2022-03-08 19:12:31 +01:00
Makefile i2c: virtio: add a virtio i2c frontend driver 2021-08-19 21:21:19 +02:00
i2c-acorn.c
i2c-ali15x3.c
i2c-ali1535.c i2c: ali1535: mention that the device should not be disabled 2021-07-02 09:14:46 +02:00
i2c-ali1563.c i2c: busses: i2c-ali1563: File headers are not good candidates for kernel-doc 2021-05-27 21:29:26 +02:00
i2c-altera.c i2c: altera: Fix formatting issue in struct and demote unworthy kernel-doc headers 2021-06-03 22:25:24 +02:00
i2c-amd-mp2-pci.c i2c: amd-mp2: convert to PCI logging functions 2021-02-01 23:01:29 +01:00
i2c-amd-mp2-plat.c i2c: amd-mp2: convert to PCI logging functions 2021-02-01 23:01:29 +01:00
i2c-amd-mp2.h i2c: amd-mp2: Remove unused macro 2021-02-01 23:01:50 +01:00
i2c-amd756-s4882.c
i2c-amd756.c
i2c-amd8111.c i2c: amd8111: Fix coding style issues 2021-04-15 22:24:11 +02:00
i2c-aspeed.c i2c: aspeed: Handle the coalesced stop conditions with the start conditions. 2024-01-05 15:13:31 +01:00
i2c-at91-core.c i2c: at91: mark PM ops as __maybe unused 2021-08-11 15:54:01 +02:00
i2c-at91-master.c i2c: at91: Initialize dma_buf in at91_twi_xfer() 2022-06-09 10:23:14 +02:00
i2c-at91-slave.c
i2c-at91.h i2c: at91: remove legacy DMA left overs 2020-11-03 21:34:40 +01:00
i2c-au1550.c
i2c-axxia.c
i2c-bcm-iproc.c i2c: iproc: handle invalid slave state 2023-11-20 11:08:29 +01:00
i2c-bcm-kona.c
i2c-bcm2835.c i2c: bcm2835: Fix the error handling in 'bcm2835_i2c_probe()' 2022-04-08 14:23:29 +02:00
i2c-brcmstb.c i2c: brcmstb: fix support for DSL and CM variants 2022-02-23 12:03:22 +01:00
i2c-cadence.c i2c: cadence: cdns_i2c_master_xfer(): Fix runtime PM leak on error path 2023-05-11 23:00:33 +09:00
i2c-cbus-gpio.c i2c: cbus-gpio: set atomic transfer callback 2021-12-08 09:04:46 +01:00
i2c-cht-wc.c i2c: cht-wc: Replace of_node by NULL 2021-06-20 22:47:24 +02:00
i2c-cp2615.c i2c: cp2615: check for allocation failure in cp2615_i2c_recv() 2021-06-20 23:13:34 +02:00
i2c-cpm.c
i2c-cros-ec-tunnel.c
i2c-davinci.c i2c: davinci: Simplify with dev_err_probe() 2021-06-23 18:23:55 +02:00
i2c-designware-baytrail.c
i2c-designware-common.c i2c: designware: Fix corrupted memory seen in the ISR 2023-12-13 18:36:32 +01:00
i2c-designware-core.h i2c: designware: fix i2c_dw_clk_rate() return size to be u32 2023-03-10 09:39:34 +01:00
i2c-designware-master.c i2c: designware: Disable TX_EMPTY irq while waiting for block length byte 2023-11-28 16:56:34 +00:00
i2c-designware-pcidrv.c i2c: designware-pci: Add new PCI IDs for AMD NAVI GPU 2023-02-09 11:26:38 +01:00
i2c-designware-platdrv.c i2c: designware: Use standard optional ref clock implementation 2022-06-22 14:22:02 +02:00
i2c-designware-slave.c i2c: designware: slave should do WRITE_REQUESTED before WRITE_RECEIVED 2020-11-06 16:02:00 +01:00
i2c-digicolor.c i2c: busses: Replace spin_lock_irqsave with spin_lock in hard IRQ 2021-02-12 08:21:57 +01:00
i2c-diolan-u2c.c
i2c-dln2.c
i2c-eg20t.c i2c: busses: i2c-eg20t: Fix 'bad line' issue and provide description for 'msgs' param 2021-05-27 21:33:10 +02:00
i2c-elektor.c Merge branch 'i2c/for-5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2021-02-22 09:02:24 -08:00
i2c-emev2.c i2c: emev2: add IRQ check 2021-04-14 10:20:00 +02:00
i2c-exynos5.c i2c: exynos5: correct top kerneldoc 2021-04-06 22:32:33 +02:00
i2c-fsi.c
i2c-gpio.c i2c: gpio: fix MODULE_LICENCE 2021-01-05 17:30:45 +01:00
i2c-highlander.c i2c: highlander: add IRQ check 2021-08-03 22:48:39 +02:00
i2c-hisi.c i2c: hisi: Only handle the interrupt of the driver's transfer 2023-08-26 14:23:31 +02:00
i2c-hix5hd2.c i2c: hix5hd2: fix IRQ check 2021-08-19 19:18:24 +02:00
i2c-hydra.c
i2c-i801.c i2c: i801: Fix block process call transactions 2024-02-23 08:55:04 +01:00
i2c-ibm_iic.c i2c: Delete error messages for failed memory allocations 2023-08-03 10:22:27 +02:00
i2c-ibm_iic.h
i2c-icy.c i2c: icy: Remove unused variable new_fwnode in icy_probe() 2021-05-25 21:21:32 +02:00
i2c-img-scb.c i2c: img-scb: fix reference leak when pm_runtime_get_sync fails 2021-04-14 09:49:06 +02:00
i2c-imx-lpi2c.c i2c: imx-lpi2c: fix type char overflow issue when calculating the clock cycle 2023-06-28 10:29:53 +02:00
i2c-imx.c i2c: imx: Only DMA messages with I2C_M_DMA_SAFE flag set 2022-12-08 11:28:45 +01:00
i2c-iop3xx.c i2c: iop3xx: fix deferred probing 2021-08-19 19:18:17 +02:00
i2c-iop3xx.h
i2c-isch.c
i2c-ismt.c i2c: ismt: Fix an out-of-bounds bug in ismt_access() 2022-12-31 13:14:31 +01:00
i2c-jz4780.c Merge branch 'i2c/for-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2021-04-30 13:01:02 -07:00
i2c-kempld.c
i2c-lpc2k.c
i2c-meson.c i2c: meson: Fix wrong speed use from probe 2022-04-08 14:23:42 +02:00
i2c-mlxbf.c i2c: mlxbf: support lock mechanism 2022-10-26 12:34:46 +02:00
i2c-mlxcpld.c i2c: mlxcpld: Fix register setting for 400KHz frequency 2022-07-29 17:25:16 +02:00
i2c-mpc.c i2c: mpc: Correct I2C reset procedure 2022-01-27 11:04:58 +01:00
i2c-mt65xx.c i2c: mediatek: fixing the incorrect register offset 2021-11-18 19:16:59 +01:00
i2c-mt7621.c i2c: mt7621: fix missing clk_disable_unprepare() on error in mtk_i2c_probe() 2022-05-25 09:57:37 +02:00
i2c-mv64xxx.c i2c: mv64xxx: Fix reading invalid status value in atomic mode 2023-06-14 11:13:08 +02:00
i2c-mxs.c i2c: mxs: suppress probe-deferral error message 2023-02-09 11:26:39 +01:00
i2c-nforce2-s4985.c
i2c-nforce2.c
i2c-nomadik.c i2c: nomadik: Remove a useless call in the remove function 2023-08-03 10:22:27 +02:00
i2c-npcm7xx.c i2c: npcm7xx: Fix callback completion ordering 2023-10-06 13:18:14 +02:00
i2c-nvidia-gpu.c i2c: nvidia-gpu: Constify the software node 2021-04-10 21:43:01 +02:00
i2c-ocores.c i2c: ocores: generate stop condition after timeout in polling mode 2023-04-20 12:13:56 +02:00
i2c-octeon-core.c i2c: octeon: check correct size of maximum RECV_LEN packet 2021-01-17 12:26:55 +01:00
i2c-octeon-core.h
i2c-octeon-platdrv.c
i2c-omap.c i2c: omap: Fix standard mode false ACK readings 2023-05-11 23:00:18 +09:00
i2c-opal.c
i2c-owl.c i2c: owl: Add compatible for the Actions Semi S500 I2C controller 2020-12-09 21:23:21 +01:00
i2c-parport.c i2c: parport: Switch to use module_parport_driver() 2021-08-10 23:07:37 +02:00
i2c-pasemi.c i2c: pasemi: Wait for write xfers to finish 2022-04-20 09:34:21 +02:00
i2c-pca-isa.c isa: Make the remove callback for isa drivers return void 2021-01-26 07:42:27 +01:00
i2c-pca-platform.c i2c: pca-platform: drop two members from driver data that are assigned to only 2020-12-02 21:29:31 +01:00
i2c-piix4.c i2c: piix4: Fix adapter not be removed in piix4_remove() 2022-11-10 18:15:36 +01:00
i2c-pnx.c i2c: busses: i2c-pnx: Provide descriptions for 'alg_data' data structure 2021-05-27 21:34:08 +02:00
i2c-powermac.c i2c: powermac: remove uncertainty about SMBUS_BLOCK transfers 2021-03-18 11:59:57 +01:00
i2c-pxa-pci.c i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe 2022-12-31 13:14:30 +01:00
i2c-pxa.c Revert "i2c: pxa: move to generic GPIO recovery" 2023-11-28 16:56:33 +00:00
i2c-qcom-cci.c i2c: qcom-cci: Fix ordering of pm_runtime_xx and i2c_add_adapter 2022-10-29 10:12:54 +02:00
i2c-qcom-geni.c i2c: qcom-geni: Suspend and resume the bus during SYSTEM_SLEEP_PM ops 2021-06-04 22:32:58 +02:00
i2c-qup.c i2c: qup: Add missing unwind goto in qup_i2c_probe() 2023-07-23 13:47:31 +02:00
i2c-rcar.c i2c: rcar: fix PM ref counts in probe error paths 2022-06-09 10:23:16 +02:00
i2c-riic.c i2c: riic: Add RZ/G2L support 2021-06-20 22:40:44 +02:00
i2c-rk3x.c i2c: rk3x: fix potential spinlock recursion on poll 2024-01-25 14:52:30 -08:00
i2c-robotfuzz-osif.c i2c: robotfuzz-osif: fix control-request directions 2021-06-24 22:08:00 +02:00
i2c-s3c2410.c i2c: s3c24xx: fix transferring more than one message in polling mode 2024-01-25 14:52:55 -08:00
i2c-scmi.c i2c: i2c-scmi: Drop unused ACPI_MODULE_NAME definition 2021-03-18 12:11:45 +01:00
i2c-sh7760.c i2c: Improve size determinations 2023-08-03 10:22:27 +02:00
i2c-sh_mobile.c i2c: sh_mobile: : use proper DMAENGINE API for termination 2021-08-11 15:22:24 +02:00
i2c-sibyte.c
i2c-simtec.c
i2c-sis96x.c
i2c-sis630.c
i2c-sis5595.c
i2c-sprd.c i2c: sprd: Delete i2c adapter in .remove's error path 2023-06-14 11:13:08 +02:00
i2c-st.c i2c: busses: i2c-st: Fix copy/paste function misnaming issues 2021-05-27 21:39:35 +02:00
i2c-stm32.c
i2c-stm32.h
i2c-stm32f4.c i2c: busses: i2c-stm32f4: Remove incorrectly placed ' ' from function name 2021-05-27 21:39:57 +02:00
i2c-stm32f7.c i2c: stm32f7: Fix PEC handling in case of SMBUS transfers 2023-11-08 17:26:40 +01:00
i2c-sun6i-p2wi.c i2c: sun6i-p2wi: Prevent potential division by zero 2023-11-28 16:56:20 +00:00
i2c-synquacer.c i2c: synquacer: fix deferred probing 2021-08-17 21:41:32 +02:00
i2c-taos-evm.c
i2c-tegra-bpmp.c i2c: tegra-bpmp: Demote kernel-doc abuses 2021-06-03 22:31:42 +02:00
i2c-tegra.c i2c: tegra: Allocate DMA memory for DMA engine 2022-11-26 09:24:31 +01:00
i2c-thunderx-pcidrv.c drivers: i2c: thunderx: Allow driver to work with ACPI defined TWSI controllers 2022-06-06 08:43:37 +02:00
i2c-tiny-usb.c i2c: Delete error messages for failed memory allocations 2023-08-03 10:22:27 +02:00
i2c-uniphier-f.c
i2c-uniphier.c
i2c-versatile.c
i2c-via.c
i2c-viapro.c
i2c-viperboard.c
i2c-virtio.c i2c: virtio: fix completion handling 2021-12-17 10:30:14 +01:00
i2c-wmt.c
i2c-xgene-slimpro.c i2c: xgene-slimpro: Fix out-of-bounds bug in xgene_slimpro_i2c_xfer() 2023-03-30 12:48:00 +02:00
i2c-xiic.c i2c: xiic: Don't try to handle more interrupt events after error 2023-07-23 13:47:31 +02:00
i2c-xlp9xx.c i2c: xlp9xx: fix main IRQ check 2021-08-25 23:04:17 +02:00
i2c-xlr.c i2c: xlr: Fix a resource leak in the error handling path of 'xlr_i2c_probe()' 2021-11-18 19:17:04 +01:00
scx200_acb.c