Adresses below 0x04 and above 0x77 are reserved in the i2c bus specification, so don't probe these addresses unless requested explicitly. Also do more strict boundary checking: - ensure start address is greater or equal to zero; - don't decrease stopaddr after checking it being greater or equal to startaddr. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> --- commands/i2c.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/commands/i2c.c b/commands/i2c.c index 2f7f820d4d55..65ff7378ec14 100644 --- a/commands/i2c.c +++ b/commands/i2c.c @@ -44,7 +44,7 @@ static void i2c_probe_range(struct i2c_adapter *adapter, int startaddr, int stop static int do_i2c_probe(int argc, char *argv[]) { struct i2c_adapter *adapter = NULL; - int startaddr = 0, stopaddr = 0x7f; + int startaddr = 4, stopaddr = 0x77; if (argc > 1) { adapter = i2c_get_adapter(simple_strtoul(argv[1], NULL, 0)); @@ -57,13 +57,15 @@ static int do_i2c_probe(int argc, char *argv[]) if (argc > 3) stopaddr = simple_strtol(argv[3], NULL, 0); + if (stopaddr > 0x7f) + stopaddr = 0x7f; + + if (startaddr < 0) + startaddr = 0; if (startaddr > stopaddr) return COMMAND_ERROR_USAGE; - if (stopaddr > 0x7F) - stopaddr = 0x7F; - if (adapter) { i2c_probe_range(adapter, startaddr, stopaddr); } else { -- 2.20.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox