summaryrefslogtreecommitdiff
path: root/docs/i2c-debugging.md
blob: 125e72b7771714e982c476ae764759d0e4bad996 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 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 1 0x20
> i2ctrace list
id port address
-- ---- -------
0     0 0x10 to 0x30
1     1 0x40 to 0x50
... debug spam may follow ...
i2c: 1:0x20 wr 0x10   rd 0x01 0x00
i2c: 1:0x20 wr 0x10 0x01 0x00
...
> 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
```