diff options
-rw-r--r-- | common/i2c_master.c | 10 | ||||
-rw-r--r-- | common/i2c_trace.c | 11 | ||||
-rw-r--r-- | include/i2c.h | 3 |
3 files changed, 18 insertions, 6 deletions
diff --git a/common/i2c_master.c b/common/i2c_master.c index b7b490b7dd..086f5f1edf 100644 --- a/common/i2c_master.c +++ b/common/i2c_master.c @@ -1349,6 +1349,7 @@ static int command_scan(int argc, char **argv) { int port; char *e; + const struct i2c_port_t *i2c_port; if (argc == 1) { for (port = 0; port < i2c_ports_used; port++) @@ -1364,10 +1365,15 @@ static int command_scan(int argc, char **argv) port = strtoi(argv[1], &e, 0); - if ((*e) || (port >= i2c_ports_used)) + if (*e) + return EC_ERROR_PARAM2; + + i2c_port = get_i2c_port(port); + if (!i2c_port) return EC_ERROR_PARAM2; - scan_bus(i2c_ports[port].port, i2c_ports[port].name); + scan_bus(port, i2c_port->name); + return EC_SUCCESS; } DECLARE_CONSOLE_COMMAND(i2cscan, command_scan, diff --git a/common/i2c_trace.c b/common/i2c_trace.c index 6645b9a303..340de901f9 100644 --- a/common/i2c_trace.c +++ b/common/i2c_trace.c @@ -56,15 +56,18 @@ trace_enabled: static int command_i2ctrace_list(void) { size_t i; + const struct i2c_port_t *i2c_port; - ccprintf("id port address\n"); - ccprintf("-- ---- -------\n"); + ccprintf("id port address\n"); + ccprintf("-- ---- -------\n"); for (i = 0; i < ARRAY_SIZE(trace_entries); i++) { if (trace_entries[i].enabled) { - ccprintf("%2d %4d 0x%X", + i2c_port = get_i2c_port(trace_entries[i].port); + ccprintf("%-2zd %d %-8s 0x%X", i, trace_entries[i].port, + i2c_port->name, trace_entries[i].slave_addr_lo); if (trace_entries[i].slave_addr_hi != trace_entries[i].slave_addr_lo) @@ -92,7 +95,7 @@ static int command_i2ctrace_enable(int port, int slave_addr_lo, struct i2c_trace_range *t; struct i2c_trace_range *new_entry = NULL; - if (port >= i2c_ports_used) + if (!get_i2c_port(port)) return EC_ERROR_PARAM2; if (slave_addr_lo > slave_addr_hi) diff --git a/include/i2c.h b/include/i2c.h index 3557d8e32b..1ba56e51bf 100644 --- a/include/i2c.h +++ b/include/i2c.h @@ -584,4 +584,7 @@ int i2c_set_freq(int port, enum i2c_freq freq); */ enum i2c_freq i2c_get_freq(int port); +/* Find the matching port in i2c_ports[] table. */ +const struct i2c_port_t *get_i2c_port(const int port); + #endif /* __CROS_EC_I2C_H */ |