summaryrefslogtreecommitdiff
path: root/driver/retimer
diff options
context:
space:
mode:
authorli feng <li1.feng@intel.com>2021-06-03 18:31:28 -0700
committerCommit Bot <commit-bot@chromium.org>2021-06-08 03:04:03 +0000
commit5de4b6f9206ffafc677d420d57db51fecaec609d (patch)
tree788b856c8d4506d0ae92e3b562dcbb2de07ca1da /driver/retimer
parent9b49f663bd6310fab9eeaf72435adf73df7d7fef (diff)
downloadchrome-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.c34
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,