diff options
author | li feng <li1.feng@intel.com> | 2021-06-03 18:31:28 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-06-08 03:04:03 +0000 |
commit | 5de4b6f9206ffafc677d420d57db51fecaec609d (patch) | |
tree | 788b856c8d4506d0ae92e3b562dcbb2de07ca1da /driver/retimer | |
parent | 9b49f663bd6310fab9eeaf72435adf73df7d7fef (diff) | |
download | chrome-ec-5de4b6f9206ffafc677d420d57db51fecaec609d.tar.gz |
bb_retimer: update console command bb
This handles multiple retimers in one PD port case.
BRANCH=none
BUG=none
TEST=on ADL RVP, do "bb 0 r 4" "bb 0 w 4 <val>" can read/write
both retimers.
Signed-off-by: li feng <li1.feng@intel.com>
Change-Id: Ie4dc6da8dec83e95a090cbb68d4f53e5e12a62e5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2939382
Reviewed-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'driver/retimer')
-rw-r--r-- | driver/retimer/bb_retimer.c | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/driver/retimer/bb_retimer.c b/driver/retimer/bb_retimer.c index cbaf58cb61..26369ca7f5 100644 --- a/driver/retimer/bb_retimer.c +++ b/driver/retimer/bb_retimer.c @@ -519,7 +519,8 @@ const struct usb_mux_driver bb_usb_retimer = { static int console_command_bb_retimer(int argc, char **argv) { char rw, *e; - int rv, port, reg, data, val; + int port, reg, data, val = 0; + int rv = EC_SUCCESS; const struct usb_mux *mux; if (argc < 4) @@ -550,25 +551,32 @@ static int console_command_bb_retimer(int argc, char **argv) if (*e || reg < 0) return EC_ERROR_PARAM3; - if (rw == 'r') - rv = bb_retimer_read(mux, reg, &data); - else { - /* Get value to be written */ + /* Get value to be written */ + if (rw == 'w') { val = strtoi(argv[4], &e, 0); if (*e || val < 0) return EC_ERROR_PARAM4; + } - rv = bb_retimer_write(mux, reg, val); - if (rv == EC_SUCCESS) { - rv = bb_retimer_read(mux, reg, &data); - if (rv == EC_SUCCESS && data != val) - rv = EC_ERROR_UNKNOWN; + for (; mux != NULL; mux = mux->next_mux) { + if (mux->driver == &bb_usb_retimer) { + if (rw == 'r') + rv = bb_retimer_read(mux, reg, &data); + else { + rv = bb_retimer_write(mux, reg, val); + if (rv == EC_SUCCESS) { + rv = bb_retimer_read( + mux, reg, &data); + if (rv == EC_SUCCESS && data != val) + rv = EC_ERROR_UNKNOWN; + } + } + if (rv == EC_SUCCESS) + CPRINTS("Addr 0x%x register %d = 0x%x", + mux->i2c_addr_flags, reg, data); } } - if (rv == EC_SUCCESS) - CPRINTS("register 0x%x [%d] = 0x%x [%d]", reg, reg, data, data); - return rv; } DECLARE_CONSOLE_COMMAND(bb, console_command_bb_retimer, |