u-boot/drivers/i2c
Andrea Merello 419ddf944c I2C: cdns: Fix broken retry mechanism on arbitration lost.
In the current implementation, in case of I2C arbitration lost, a retry is
attempted; the message counter and pointer are reset to the original values
and the I2C xfer process is restart from the beginning.

However the message counter and message pointer are respectively
decremented and incremented by one before attempting any transfer, causing
the 1st transfer not to be actually retried (in case of a single transfer,
nothing is actually retried at all).

This patch fixes this: in case of retry, the 1st transfer is also retried.

Tested on a ZynqMP Kria board, with upstream older u-boot, but the involved
file and underlying logic seem basically the same.

Signed-off-by: Andrea Merello <andrea.merello@iit.it>
2023-06-05 06:54:25 +02:00
..
muxes spl: Ensure all SPL symbols in Kconfig have some SPL dependency 2022-07-07 09:29:08 -04:00
acpi_i2c.c dm: treewide: Rename ofdata_to_platdata() to of_to_plat() 2020-12-13 16:51:09 -07:00
acpi_i2c.h dm: treewide: Rename ofdata_to_platdata() to of_to_plat() 2020-12-13 16:51:09 -07:00
ast2600_i2c.c i2c:aspeed:support ast2600 i2c new register mode driver 2023-02-13 09:57:49 +01:00
ast2600_i2c.h i2c:aspeed:support ast2600 i2c new register mode driver 2023-02-13 09:57:49 +01:00
ast_i2c.c i2c: ast_i2c: Remove SCL direct drive mode 2022-07-19 13:46:28 +02:00
ast_i2c.h i2c: ast_i2c: Update to use standard enums for speed 2020-01-27 07:22:41 +01:00
at91_i2c.c i2c: at91: add compatible with microchip,sam9x60-i2c 2022-01-13 11:44:07 +02:00
at91_i2c.h common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
cros_ec_ldo.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
cros_ec_tunnel.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
davinci_i2c.c global: Move remaining CONFIG_SYS_* to CFG_SYS_* 2022-12-05 16:06:08 -05:00
davinci_i2c.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
designware_i2c.c stm32mp1: fix reference for STMicroelectronics 2022-06-17 14:12:27 +02:00
designware_i2c.h stm32mp1: fix reference for STMicroelectronics 2022-06-17 14:12:27 +02:00
designware_i2c_pci.c i2c: designware_i2c: remove apparently redundant read of 'i2c, speeds' DT property 2023-04-11 06:43:33 +02:00
exynos_hs_i2c.c arm: samsung: Migrate a number of symbols to Kconfig 2022-06-28 17:04:37 -04:00
fsl_i2c.c i2c: fsl_i2c: fix m68k transferts 2023-04-11 06:51:56 +02:00
i2c-cdns.c I2C: cdns: Fix broken retry mechanism on arbitration lost. 2023-06-05 06:54:25 +02:00
i2c-cortina.c dm: treewide: Rename ofdata_to_platdata() to of_to_plat() 2020-12-13 16:51:09 -07:00
i2c-cortina.h i2c: i2c-cortina: added CAxxxx I2C support 2020-07-09 06:02:44 +02:00
i2c-emul-uclass.c treewide: Use OF_REAL instead of !OF_PLATDATA 2021-09-25 09:46:15 -06:00
i2c-gpio.c i2c: i2c-gpio: add newline 2022-11-14 07:24:47 +01:00
i2c-microchip.c i2c: microchip: fix erroneous late ack send 2022-11-14 07:21:58 +01:00
i2c-uclass.c i2c: correct I2C deblock logic 2023-04-11 06:44:39 +02:00
i2c-uniphier-f.c i2c: uniphier-f: correct error recovery 2023-01-06 08:14:19 -05:00
i2c-uniphier.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
i2c-versatile.c i2c: Update for new sequence numbers 2020-12-18 20:32:21 -07:00
i2c_core.c global: Migrate CONFIG_SYS_I2C_DIRECT_BUS to CFG 2022-12-23 10:15:12 -05:00
ihs_i2c.c i2c: ihs: intel: Fix typo in comments (actual) 2022-05-10 06:47:13 +02:00
imx_lpi2c.c i2c: imx_lpi2c: Fix misuse the IS_ENABLED for DM clock 2023-04-11 06:45:29 +02:00
intel_i2c.c i2c: ihs: intel: Fix typo in comments (actual) 2022-05-10 06:47:13 +02:00
iproc_i2c.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
iproc_i2c.h drivers: i2c: add brcm iproc I2C driver support 2020-04-20 06:52:28 +02:00
Kconfig i2c: rcar_i2c: Add R-Car Gen4 support 2023-04-07 17:13:27 +02:00
lpc32xx_i2c.c global: Finish CONFIG -> CFG migration 2023-01-20 12:27:24 -05:00
Makefile i2c:aspeed:support ast2600 i2c new register mode driver 2023-02-13 09:57:49 +01:00
meson_i2c.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
mtk_i2c.c i2c: add support for MediaTek I2C interface 2022-09-23 15:09:15 -04:00
mv_i2c.c i2c: Remove CONFIG_I2C_MULTI_BUS 2022-12-22 10:31:48 -05:00
mv_i2c.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
mvtwsi.c global: Finish CONFIG -> CFG migration 2023-01-20 12:27:24 -05:00
mxc_i2c.c i2c: mxc_i2c: Use hex notation for the base address 2023-02-13 09:57:30 +01:00
npcm_i2c.c i2c: nuvoton: renamed the NPCM i2c driver 2022-12-05 06:00:37 +01:00
nx_i2c.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
ocores_i2c.c i2c: ocores: Fix -Wint-to-pointer-cast warning 2021-10-20 10:59:09 +08:00
octeon_i2c.c global: Finish CONFIG -> CFG migration 2023-01-20 12:27:24 -05:00
omap24xx_i2c.c ti: i2c: fix probe_chip() return value 2022-02-21 08:39:52 -05:00
omap24xx_i2c.h i2c: omap: Update to use standard enums for speed 2020-01-27 07:23:26 +01:00
qup_i2c.c i2c: Add support for Qualcomm I2C driver 2023-02-10 12:50:00 -05:00
rcar_i2c.c i2c: rcar_i2c: Add R-Car Gen4 support 2023-04-07 17:13:27 +02:00
rcar_iic.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
rk_i2c.c i2c: rockchip: De-initialize the bus after start bit failure 2023-06-05 06:52:46 +02:00
s3c24x0_i2c.c arm: samsung: Migrate a number of symbols to Kconfig 2022-06-28 17:04:37 -04:00
s3c24x0_i2c.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
sandbox_i2c.c sandbox: i2c: Move priv into a header file 2021-01-05 12:24:41 -07:00
sh_i2c.c rmobile: Drop CONFIG_SH73A0 and associated code 2023-02-07 14:33:49 -05:00
soft_i2c.c global: Remove unused CONFIG defines 2023-01-20 12:27:06 -05:00
stm32f7_i2c.c i2c: stm32: fix usage of rise/fall device tree properties 2022-09-15 14:59:29 +02:00
sun6i_p2wi.c i2c: sun6i_p2wi: Add support for DM clocks and resets 2022-04-04 23:24:17 +01:00
sun8i_rsb.c i2c: sun8i_rsb: Add support for DM clocks and resets 2022-04-04 23:24:17 +01:00
synquacer_i2c.c i2c: synquacer: SNI Synquacer I2C controller 2021-07-06 14:07:37 -04:00
tegra186_bpmp_i2c.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
tegra_i2c.c drivers: use dev_read_addr_ptr when cast to pointer 2023-05-06 17:28:18 +08:00
xilinx_xiic.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00