summaryrefslogtreecommitdiff
path: root/docs/i2c-debugging.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/i2c-debugging.md')
-rw-r--r--docs/i2c-debugging.md48
1 files changed, 48 insertions, 0 deletions
diff --git a/docs/i2c-debugging.md b/docs/i2c-debugging.md
new file mode 100644
index 0000000000..a1a56db285
--- /dev/null
+++ b/docs/i2c-debugging.md
@@ -0,0 +1,48 @@
+I²C Debugging Tips
+==================
+
+The EC codebase has functionality to help you debug I²C errors without
+pulling out the scope. Some of the debug functionality is disabled by
+default to save space, but can be enabled with the `CONFIG_I2C_DEBUG`
+option.
+
+Tracing
+-------
+
+You can use the `i2ctrace` command to monitor (ranges of) addresses:
+
+ i2ctrace [list
+ | disable <id>
+ | enable <port> <address>
+ | enable <port> <address-low> <address-high>]
+
+For example:
+
+ > i2ctrace enable 0 0x10 0x30
+ > i2ctrace enable 0 0x40 0x50
+ > i2ctrace list
+ id port address
+ -- ---- -------
+ 0 0 0x10 to 0x30
+ 1 0 0x40 to 0x50
+ ... debug spam may follow ...
+ i2c: write 0:0x50 A8
+ i2c: read 0:0x50 00 02 00 06 00 44
+ ...
+ > i2ctrace disable 1
+ > i2ctrace list
+ id port address
+ -- ---- -------
+ 0 0 0x10 to 0x30
+
+A maximum of 8 debug entries are supported at a single time.
+
+Note that `i2ctrace enable` will merge debug entries when possible:
+
+ > i2ctrace enable 0 0x10 0x30
+ > i2ctrace enable 0 0x40 0x50
+ > i2ctrace enable 0 0x31 0x3f
+ > i2ctrace list
+ id port address
+ -- ---- -------
+ 0 0 0x10 to 0x50