summaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/i2c/gpio-fault-injection25
1 files changed, 25 insertions, 0 deletions
diff --git a/Documentation/i2c/gpio-fault-injection b/Documentation/i2c/gpio-fault-injection
index 1a44e3edc0c4..1f1bb96a64bd 100644
--- a/Documentation/i2c/gpio-fault-injection
+++ b/Documentation/i2c/gpio-fault-injection
@@ -83,3 +83,28 @@ This is why bus recovery (up to 9 clock pulses) must either check SDA or send
83additional STOP conditions to ensure the bus has been released. Otherwise 83additional STOP conditions to ensure the bus has been released. Otherwise
84random data will be written to a device! 84random data will be written to a device!
85 85
86Lost arbitration
87================
88
89Here, we want to simulate the condition where the master under test loses the
90bus arbitration against another master in a multi-master setup.
91
92"lose_arbitration"
93------------------
94
95This file is write only and you need to write the duration of the arbitration
96intereference (in µs, maximum is 100ms). The calling process will then sleep
97and wait for the next bus clock. The process is interruptible, though.
98
99Arbitration lost is achieved by waiting for SCL going down by the master under
100test and then pulling SDA low for some time. So, the I2C address sent out
101should be corrupted and that should be detected properly. That means that the
102address sent out should have a lot of '1' bits to be able to detect corruption.
103There doesn't need to be a device at this address because arbitration lost
104should be detected beforehand. Also note, that SCL going down is monitored
105using interrupts, so the interrupt latency might cause the first bits to be not
106corrupted. A good starting point for using this fault injector on an otherwise
107idle bus is:
108
109# echo 200 > lose_arbitration &
110# i2cget -y <bus_to_test> 0x3f