u-boot/drivers
Sam Edwards 250454c59b i2c: mvtwsi: reset controller if stuck in "bus error" state
The MVTWSI controller can act either as a master or slave device. When
acting as a master, the FSM is driven by the CPU. As a slave, the FSM is
driven by the bus directly. In what is (apparently) a safety mechanism,
if the bus transitions our FSM in any improper way, the FSM goes to a
"bus error" state (0x00). I could find no documented or experimental way
to get the FSM out of this state, except for a controller reset.

Since U-Boot only uses the MVTWSI controller as a bus master, this
feature only gets in the way: we do not care what happened on the bus
previously as long as the bus is ready for a new transaction. So, when
trying to start a new transaction, check for this state and reset the
controller if necessary.

Note that this should not be confused with the "deblocking" technique
(used by the `i2c reset` command), which involves pulsing SCL repeatedly
if SDA is found to be held low, in an attempt to force the bus back to
an idle state. This patch only resets the controller in case something
else had previously upset it, and (in principle) results in no
externally-observable change in behavior.

Signed-off-by: Sam Edwards <CFSworks@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Reviewed-by: Heiko Schocher <hs@denx.de>
2023-08-15 06:52:04 +02:00
..
adc dm: adc: add iMX93 ADC support 2023-07-13 11:29:40 +02:00
ata ata: dwc_ahci: Fix support for other platforms 2023-07-28 18:45:03 +08:00
axi axi: fix definition of axi_sandbox_get_emul() 2023-06-01 12:32:03 -04:00
bios_emulator bios_emulator: Drop VIDEO_IO_OFFSET 2023-07-17 17:08:44 +08:00
block bootstd: Correct creating of bootdev sibling 2023-08-09 23:31:11 +08:00
bootcount
bus
button
cache drivers: use dev_read_addr_ptr when cast to pointer 2023-05-06 17:28:18 +08:00
clk clk: rockchip: rk3308: Support reading UART rate and clock registers 2023-08-12 10:37:57 +08:00
core core: read: add dev_read_addr_size_index_ptr function 2023-07-28 18:45:03 +08:00
cpu imx9: add i.MX93 variants support 2023-05-21 16:54:41 +02:00
crypto
ddr ddr: imx9: update the rank setting for multi fsp support 2023-05-21 16:54:41 +02:00
demo
dfu dfu: Add proper dependency for CONFIG_DFU_MMC 2023-07-17 15:38:11 -04:00
dma
extcon extcon: add MAX14526 MUIC support 2023-05-02 14:23:58 -04:00
fastboot lib: sparse: allocate FASTBOOT_MAX_BLK_WRITE instead of small number 2023-07-25 12:44:46 -04:00
firmware arm_ffa: introduce armffa command 2023-08-08 10:22:03 -04:00
fpga event: Add fpga load event 2023-07-21 09:00:39 +02:00
fuzz
fwu-mdata FWU: Add FWU metadata access driver for MTD storage regions 2023-06-09 13:52:40 -04:00
gpio x86: Convert some debug statements to use logging 2023-07-17 17:23:14 +08:00
hwspinlock
i2c i2c: mvtwsi: reset controller if stuck in "bus error" state 2023-08-15 06:52:04 +02:00
input input: Flush the keyboard buffer before resetting it 2023-05-11 10:25:29 +08:00
iommu
led drivers: led: bcm6858: do not use null label to find the top 2023-07-25 12:44:46 -04:00
mailbox mailbox: k3-sec-proxy: Fill non-message tx data fields with 0x0 2023-07-25 12:44:46 -04:00
memory
mfd
misc x86: Record the start and end of the tables 2023-07-17 17:23:08 +08:00
mmc bootstd: Rename bootdev_setup_sibling_blk() 2023-08-09 23:31:11 +08:00
mtd mtd: nand: raw: rockchip_nfc: copy hwecc PA data to oob_poi buffer 2023-07-28 18:45:03 +08:00
mux
net net: mediatek: add support for MediaTek MT7988 SoC 2023-08-03 09:40:50 -04:00
nvme bootstd: Rename bootdev_setup_sibling_blk() 2023-08-09 23:31:11 +08:00
pch x86: Convert some debug statements to use logging 2023-07-17 17:23:14 +08:00
pci pci: rockchip: Release resources on failing probe 2023-08-12 09:59:18 +08:00
pci_endpoint
phy phy: rockchip-inno-usb2: Add USB2 PHY for RK3328 2023-07-31 20:33:18 +08:00
pinctrl pinctrl: rockchip: Fix drive and input schmitt on RK3568 2023-08-14 11:07:27 +08:00
power power: regulator: rk8xx: Add 500us delay after LDO regulator is enabled 2023-07-31 20:33:18 +08:00
pwm pwm: mtk: add support for MediaTek MT7988 SoC 2023-08-03 09:40:49 -04:00
qe
ram board: mediatek: update config headers 2023-08-03 09:40:49 -04:00
reboot-mode
remoteproc remoteproc: ti_k3_arm64: Change the startup of arm64 core 2023-04-24 13:18:48 -04:00
reset reset: mediatek: check malloc return valaue before use 2023-08-03 09:40:49 -04:00
rng rockchip: rng: add trngv1 for rk3588 2023-04-21 15:16:01 +08:00
rtc drivers: rtc: max313xx: provide read8/write8 2023-07-25 12:44:46 -04:00
scsi bootstd: Rename bootdev_setup_sibling_blk() 2023-08-09 23:31:11 +08:00
serial serial: mtk: initial priv data before using 2023-08-03 09:40:49 -04:00
smem
soc arm64: zynqmp: Switch to amd.com emails 2023-07-21 09:00:38 +02:00
sound
spi spi: mtk_spim: clear IRQ enable bits 2023-08-03 09:40:49 -04:00
spmi
sysinfo
sysreset sysreset: Change Kconfig GPIO dependency 2023-07-07 16:47:15 -04:00
tee drivers: tee: sandbox: Fix SCP03 control emulator 2023-04-28 11:30:17 -06:00
thermal imx: move imx8 sci header file to include/firmware/imx 2023-05-21 16:54:32 +02:00
timer omap: timer: add ti,am654-timer compatibility 2023-07-28 10:10:29 -04:00
tpm
ufs ufs: Use 'TASK_TAG' to construct the ucd_req_ptr->header.dword_0 2023-07-14 15:21:08 -04:00
usb usb: Return -ENOENT when no devices are found 2023-08-09 23:31:11 +08:00
video Merge tag 'u-boot-rockchip-20230814' of https://source.denx.de/u-boot/custodians/u-boot-rockchip 2023-08-14 09:11:09 -04:00
virtio bootstd: Rename bootdev_setup_sibling_blk() 2023-08-09 23:31:11 +08:00
w1
w1-eeprom
watchdog watchdog: ftwdt010: need to reset watchdog in ftwdt010_wdt_start() 2023-08-10 08:39:16 +02:00
xen xen: Limit execution to EL1 only 2023-04-25 15:31:28 -04:00
Kconfig bios_emulator: Add Kconfig and adjust Makefile for SPL 2023-07-17 17:08:44 +08:00
Makefile video: Tidy up Makefile rule for video 2023-08-09 23:31:11 +08:00