Lines Matching +full:i2c +full:- +full:sda +full:- +full:delay

2 Linux I2C fault injection
5 The GPIO based I2C bus master driver can be configured to provide fault
6 injection capabilities. It is then meant to be connected to another I2C bus
7 which is driven by the I2C bus master driver under test. The GPIO fault
8 injection driver can create special states on the bus which the other I2C bus
12 'i2c-fault-injector' subdirectory in the Kernel debugfs filesystem, usually
14 driven I2C bus. Each subdirectory will contain files to trigger the fault
15 injection. They will be described now along with their intended use-cases.
21 -----
30 "sda"
31 -----
33 By reading this file, you get the current state of SDA. By writing, you can
35 "echo 0 > sda" you force SDA low and thus, data cannot be transmitted. The bus
37 I2C specification version 4, section 3.1.16) using the helpers of the Linux I2C
39 succeed because SDA is still pinned low until you manually release it again
40 with "echo 1 > sda". A test with an automatic release can be done with the
46 The following fault injectors create situations where SDA will be held low by a
48 there are I2C client devices which detect a stuck SDA on their side and release
50 device deglitching and monitoring the I2C bus. It could also detect a stuck SDA
56 --------------------------
58 This file is write only and you need to write the address of an existing I2C
61 transmitted. Because the device will ACK its presence, this results in SDA
62 being pulled low by the device while SCL is high. So, similar to the "sda" file
65 SDA after toggling SCL.
68 -----------------------
71 an existing I2C client device to it.
73 The injector will again stop at one ACK phase, so the device will keep SDA low
82 This is why bus recovery (up to 9 clock pulses) must either check SDA or send
90 bus arbitration against another master in a multi-master setup.
93 ------------------
100 test and then pulling SDA low for some time. So, the I2C address sent out
110 # i2cget -y <bus_to_test> 0x3f
122 --------------
124 This file is write only and you need to write the delay between the detected
133 # i2cget -y <bus_to_test> <some_address>