summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/i2c_master.c10
-rw-r--r--common/i2c_trace.c11
-rw-r--r--include/i2c.h3
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 */