summaryrefslogtreecommitdiff
path: root/tools/lib/python
diff options
context:
space:
mode:
authorHitesh Patel <hitesh@ebytelogic.com>2026-10-07 10:31:46 +0530
committerAndi Shyti <andi.shyti@kernel.org>2026-10-09 10:55:01 +0200
commit0265dfc5d2a8de303561ced996c46b38f95cb4ef (patch)
tree1fdc415c52129bc28a8504cee9014d005ec539f8 /tools/lib/python
parent898f9403066a96e74b97b0554d372fd49149fd05 (diff)
downloadlinux-next-0265dfc5d2a8de303561ced996c46b38f95cb4ef.tar.gz
linux-next-0265dfc5d2a8de303561ced996c46b38f95cb4ef.zip
i2c: qcom-cci: always enable SCL clock stretching
The CCI timing tables leave SCL clock stretching disabled. A slave that holds SCL low is then not waited for: the master keeps its own clock timing and the transfer fails with a NACK or returns corrupt data. This is hit with a camera reached through a GMSL serializer/deserializer I2C tunnel (MAX9296A/MAX96717 on the RB3 Gen2 vision mezzanine). The deserializer acknowledges the address locally, but forwards the transaction over the coax link and stretches SCL until the remote side has completed it, which takes well over one clock period at 100 kHz. Without stretching the register reads of the sensor behind the link intermittently return garbage and writes are dropped, which shows up as random sensor init failures. Clock stretching is part of the I2C specification for every speed mode and a device that does not stretch is unaffected by enabling it, so set the bit unconditionally in cci_init() and drop the per-table scl_stretch_en field, which is zero in every table. Signed-off-by: Hitesh Patel <hitesh@ebytelogic.com> Reviewed-by: Loic Poulain <loic.poulain@oss.qualcomm.com> Tested-by: Hangxiang Ma <hangxiang.ma@oss.qualcomm.com> # S5KJN5 on Kaanapali Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://patch.msgid.link/20261007050147.274096-1-hitesh@ebytelogic.com
Diffstat (limited to 'tools/lib/python')
0 files changed, 0 insertions, 0 deletions