summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorEdward Hill <ecgh@chromium.org>2020-02-28 13:28:44 -0700
committerCommit Bot <commit-bot@chromium.org>2020-02-29 19:54:21 +0000
commit7453e9b1f8515df35ceb141a771d049001f55d61 (patch)
treee4df2fccde98cad66ba72799b9b4298ff6588f44 /driver
parent7345fbc90603f8d0d9161dc18e5579487b346593 (diff)
downloadchrome-ec-7453e9b1f8515df35ceb141a771d049001f55d61.tar.gz
PS8740: Allow 0xa or 0xb for REVISION_ID2
BUG=b:150384642 BRANCH=none TEST=ps874x_init succeeds on Dalboz Signed-off-by: Edward Hill <ecgh@chromium.org> Change-Id: I9213a1f12d2412db4d38eaf75daaa27507787e90 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2080644 Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r--driver/usb_mux/ps874x.c50
-rw-r--r--driver/usb_mux/ps874x.h3
2 files changed, 30 insertions, 23 deletions
diff --git a/driver/usb_mux/ps874x.c b/driver/usb_mux/ps874x.c
index fedb06b27c..bbc041e9c9 100644
--- a/driver/usb_mux/ps874x.c
+++ b/driver/usb_mux/ps874x.c
@@ -27,7 +27,8 @@ static inline int ps874x_write(const struct usb_mux *me,
static int ps874x_init(const struct usb_mux *me)
{
- int val;
+ int id1;
+ int id2;
int res;
/* Reset chip back to power-on state */
@@ -36,41 +37,46 @@ static int ps874x_init(const struct usb_mux *me)
return res;
/*
- * Verify revision / chip ID registers.
+ * Verify chip ID registers.
*/
- res = ps874x_read(me, PS874X_REG_REVISION_ID1, &val);
+ res = ps874x_read(me, PS874X_REG_CHIP_ID1, &id1);
if (res)
return res;
-#ifdef CONFIG_USB_MUX_PS8743
- /*
- * From Parade: PS8743 may have REVISION_ID1 as 0 or 1
- * Rev 1 is derived from Rev 0 and have same functionality.
- */
- if (val != PS874X_REVISION_ID1_0 && val != PS874X_REVISION_ID1_1)
- return EC_ERROR_UNKNOWN;
-#else
- if (val != PS874X_REVISION_ID1)
- return EC_ERROR_UNKNOWN;
-#endif
-
- res = ps874x_read(me, PS874X_REG_REVISION_ID2, &val);
+ res = ps874x_read(me, PS874X_REG_CHIP_ID2, &id2);
if (res)
return res;
- if (val != PS874X_REVISION_ID2)
+
+ if (id1 != PS874X_CHIP_ID1 || id2 != PS874X_CHIP_ID2)
return EC_ERROR_UNKNOWN;
- res = ps874x_read(me, PS874X_REG_CHIP_ID1, &val);
+ /*
+ * Verify revision ID registers.
+ */
+ res = ps874x_read(me, PS874X_REG_REVISION_ID1, &id1);
if (res)
return res;
- if (val != PS874X_CHIP_ID1)
- return EC_ERROR_UNKNOWN;
- res = ps874x_read(me, PS874X_REG_CHIP_ID2, &val);
+ res = ps874x_read(me, PS874X_REG_REVISION_ID2, &id2);
if (res)
return res;
- if (val != PS874X_CHIP_ID2)
+
+#ifdef CONFIG_USB_MUX_PS8740
+ if (id1 != PS874X_REVISION_ID1)
+ return EC_ERROR_UNKNOWN;
+ /* PS8740 may have REVISION_ID2 as 0xa or 0xb */
+ if (id2 != PS874X_REVISION_ID2_0 && id2 != PS874X_REVISION_ID2_1)
return EC_ERROR_UNKNOWN;
+#else
+ /*
+ * From Parade: PS8743 may have REVISION_ID1 as 0 or 1
+ * Rev 1 is derived from Rev 0 and have same functionality.
+ */
+ if (id1 != PS874X_REVISION_ID1_0 && id1 != PS874X_REVISION_ID1_1)
+ return EC_ERROR_UNKNOWN;
+ if (id2 != PS874X_REVISION_ID2)
+ return EC_ERROR_UNKNOWN;
+#endif
return EC_SUCCESS;
}
diff --git a/driver/usb_mux/ps874x.h b/driver/usb_mux/ps874x.h
index e7bd185bcf..f0caf7610b 100644
--- a/driver/usb_mux/ps874x.h
+++ b/driver/usb_mux/ps874x.h
@@ -41,7 +41,8 @@
#define PS874X_REG_CHIP_ID2 0xf3
#ifdef CONFIG_USB_MUX_PS8740
#define PS874X_REVISION_ID1 0x00
- #define PS874X_REVISION_ID2 0x0a
+ #define PS874X_REVISION_ID2_0 0x0a
+ #define PS874X_REVISION_ID2_1 0x0b
#define PS874X_CHIP_ID1 0x40
#elif defined(CONFIG_USB_MUX_PS8743)
#define PS874X_REVISION_ID1_0 0x00