summaryrefslogtreecommitdiff
path: root/driver/usb_mux
diff options
context:
space:
mode:
Diffstat (limited to 'driver/usb_mux')
-rw-r--r--driver/usb_mux/amd_fp5.c46
-rw-r--r--driver/usb_mux/amd_fp5.h18
-rw-r--r--driver/usb_mux/amd_fp6.c20
-rw-r--r--driver/usb_mux/amd_fp6.h32
-rw-r--r--driver/usb_mux/anx3443.c27
-rw-r--r--driver/usb_mux/anx3443.h40
-rw-r--r--driver/usb_mux/anx7440.c17
-rw-r--r--driver/usb_mux/anx7440.h34
-rw-r--r--driver/usb_mux/anx7451.c17
-rw-r--r--driver/usb_mux/anx7451.h36
-rw-r--r--driver/usb_mux/it5205.c40
-rw-r--r--driver/usb_mux/it5205.h47
-rw-r--r--driver/usb_mux/pi3usb3x532.c27
-rw-r--r--driver/usb_mux/pi3usb3x532.h6
-rw-r--r--driver/usb_mux/ps8740.c14
-rw-r--r--driver/usb_mux/ps8740.h72
-rw-r--r--driver/usb_mux/ps8743.c32
-rw-r--r--driver/usb_mux/ps8743.h32
-rw-r--r--driver/usb_mux/ps8822.c22
-rw-r--r--driver/usb_mux/ps8822.h66
-rw-r--r--driver/usb_mux/tusb1064.c22
-rw-r--r--driver/usb_mux/tusb1064.h69
-rw-r--r--driver/usb_mux/usb_mux.c212
-rw-r--r--driver/usb_mux/virtual.c19
24 files changed, 495 insertions, 472 deletions
diff --git a/driver/usb_mux/amd_fp5.c b/driver/usb_mux/amd_fp5.c
index c32e6992c2..ca042b0fa0 100644
--- a/driver/usb_mux/amd_fp5.c
+++ b/driver/usb_mux/amd_fp5.c
@@ -1,4 +1,4 @@
-/* Copyright 2019 The Chromium OS Authors. All rights reserved.
+/* Copyright 2019 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -22,8 +22,7 @@ static inline int amd_fp5_mux_read(const struct usb_mux *me, uint8_t *val)
uint8_t buf[3] = { 0 };
int rv;
- rv = i2c_xfer(me->i2c_port, me->i2c_addr_flags,
- NULL, 0, buf, 3);
+ rv = i2c_xfer(me->i2c_port, me->i2c_addr_flags, NULL, 0, buf, 3);
if (rv)
return rv;
@@ -34,8 +33,7 @@ static inline int amd_fp5_mux_read(const struct usb_mux *me, uint8_t *val)
static inline int amd_fp5_mux_write(const struct usb_mux *me, uint8_t val)
{
- return i2c_write8(me->i2c_port, me->i2c_addr_flags,
- me->usb_port, val);
+ return i2c_write8(me->i2c_port, me->i2c_addr_flags, me->usb_port, val);
}
static int amd_fp5_init(const struct usb_mux *me)
@@ -51,6 +49,10 @@ static int amd_fp5_set_mux(const struct usb_mux *me, mux_state_t mux_state,
/* This driver does not use host command ACKs */
*ack_required = false;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
saved_mux_state[me->usb_port] = mux_state;
/*
@@ -60,20 +62,22 @@ static int amd_fp5_set_mux(const struct usb_mux *me, mux_state_t mux_state,
* it because a powered down MUX is off.
*/
if (chipset_in_state(CHIPSET_STATE_HARD_OFF))
- return (mux_state == USB_PD_MUX_NONE)
- ? EC_SUCCESS
- : EC_ERROR_NOT_POWERED;
+ return (mux_state == USB_PD_MUX_NONE) ? EC_SUCCESS :
+ EC_ERROR_NOT_POWERED;
if ((mux_state & USB_PD_MUX_USB_ENABLED) &&
- (mux_state & USB_PD_MUX_DP_ENABLED))
- val = (mux_state & USB_PD_MUX_POLARITY_INVERTED)
- ? AMD_FP5_MUX_DOCK_INVERTED : AMD_FP5_MUX_DOCK;
+ (mux_state & USB_PD_MUX_DP_ENABLED))
+ val = (mux_state & USB_PD_MUX_POLARITY_INVERTED) ?
+ AMD_FP5_MUX_DOCK_INVERTED :
+ AMD_FP5_MUX_DOCK;
else if (mux_state & USB_PD_MUX_USB_ENABLED)
- val = (mux_state & USB_PD_MUX_POLARITY_INVERTED)
- ? AMD_FP5_MUX_USB_INVERTED : AMD_FP5_MUX_USB;
+ val = (mux_state & USB_PD_MUX_POLARITY_INVERTED) ?
+ AMD_FP5_MUX_USB_INVERTED :
+ AMD_FP5_MUX_USB;
else if (mux_state & USB_PD_MUX_DP_ENABLED)
- val = (mux_state & USB_PD_MUX_POLARITY_INVERTED)
- ? AMD_FP5_MUX_DP_INVERTED : AMD_FP5_MUX_DP;
+ val = (mux_state & USB_PD_MUX_POLARITY_INVERTED) ?
+ AMD_FP5_MUX_DP_INVERTED :
+ AMD_FP5_MUX_DP;
return amd_fp5_mux_write(me, val);
}
@@ -101,21 +105,21 @@ static int amd_fp5_get_mux(const struct usb_mux *me, mux_state_t *mux_state)
break;
case AMD_FP5_MUX_USB_INVERTED:
*mux_state = USB_PD_MUX_USB_ENABLED |
- USB_PD_MUX_POLARITY_INVERTED;
+ USB_PD_MUX_POLARITY_INVERTED;
break;
case AMD_FP5_MUX_DOCK:
*mux_state = USB_PD_MUX_USB_ENABLED | USB_PD_MUX_DP_ENABLED;
break;
case AMD_FP5_MUX_DOCK_INVERTED:
- *mux_state = USB_PD_MUX_USB_ENABLED | USB_PD_MUX_DP_ENABLED
- | USB_PD_MUX_POLARITY_INVERTED;
+ *mux_state = USB_PD_MUX_USB_ENABLED | USB_PD_MUX_DP_ENABLED |
+ USB_PD_MUX_POLARITY_INVERTED;
break;
case AMD_FP5_MUX_DP:
*mux_state = USB_PD_MUX_DP_ENABLED;
break;
case AMD_FP5_MUX_DP_INVERTED:
*mux_state = USB_PD_MUX_DP_ENABLED |
- USB_PD_MUX_POLARITY_INVERTED;
+ USB_PD_MUX_POLARITY_INVERTED;
break;
case AMD_FP5_MUX_SAFE:
default:
@@ -126,8 +130,8 @@ static int amd_fp5_get_mux(const struct usb_mux *me, mux_state_t *mux_state)
return EC_SUCCESS;
}
-static struct queue const chipset_reset_queue
- = QUEUE_NULL(CONFIG_USB_PD_PORT_MAX_COUNT, struct usb_mux *);
+static struct queue const chipset_reset_queue =
+ QUEUE_NULL(CONFIG_USB_PD_PORT_MAX_COUNT, struct usb_mux *);
static void amd_fp5_chipset_reset_delay(void)
{
diff --git a/driver/usb_mux/amd_fp5.h b/driver/usb_mux/amd_fp5.h
index 7534ea0d8a..9a23cf57b0 100644
--- a/driver/usb_mux/amd_fp5.h
+++ b/driver/usb_mux/amd_fp5.h
@@ -1,4 +1,4 @@
-/* Copyright 2019 The Chromium OS Authors. All rights reserved.
+/* Copyright 2019 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -8,14 +8,14 @@
#ifndef __CROS_EC_USB_MUX_AMD_FP5_H
#define __CROS_EC_USB_MUX_AMD_FP5_H
-#define AMD_FP5_MUX_I2C_ADDR_FLAGS 0x5C
+#define AMD_FP5_MUX_I2C_ADDR_FLAGS 0x5C
-#define AMD_FP5_MUX_SAFE 0x00
-#define AMD_FP5_MUX_USB 0x02
-#define AMD_FP5_MUX_USB_INVERTED 0x11
-#define AMD_FP5_MUX_DOCK 0x06
-#define AMD_FP5_MUX_DOCK_INVERTED 0x19
-#define AMD_FP5_MUX_DP 0x0C
-#define AMD_FP5_MUX_DP_INVERTED 0x1C
+#define AMD_FP5_MUX_SAFE 0x00
+#define AMD_FP5_MUX_USB 0x02
+#define AMD_FP5_MUX_USB_INVERTED 0x11
+#define AMD_FP5_MUX_DOCK 0x06
+#define AMD_FP5_MUX_DOCK_INVERTED 0x19
+#define AMD_FP5_MUX_DP 0x0C
+#define AMD_FP5_MUX_DP_INVERTED 0x1C
#endif /* __CROS_EC_USB_MUX_AMD_FP5_H */
diff --git a/driver/usb_mux/amd_fp6.c b/driver/usb_mux/amd_fp6.c
index 4f31fae186..a776a696f7 100644
--- a/driver/usb_mux/amd_fp6.c
+++ b/driver/usb_mux/amd_fp6.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+/* Copyright 2021 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -15,8 +15,8 @@
#include "timer.h"
#include "usb_mux.h"
-#define CPRINTSUSB(format, args...) cprints(CC_USBCHARGE, format, ## args)
-#define CPRINTFUSB(format, args...) cprintf(CC_USBCHARGE, format, ## args)
+#define CPRINTSUSB(format, args...) cprints(CC_USBCHARGE, format, ##args)
+#define CPRINTFUSB(format, args...) cprintf(CC_USBCHARGE, format, ##args)
/*
* The recommendation from "3.3.2 Command Timeout" is 250ms,
@@ -50,8 +50,8 @@ static int amd_fp6_mux_port0_read(const struct usb_mux *me, uint8_t *val)
* payload[1]: Port 0 Control/Status
* payload[2]: Port 1 Control/Status (unused on FP6)
*/
- mux_ready = !!((payload[0] >> AMD_FP6_MUX_PD_STATUS_OFFSET)
- & AMD_FP6_MUX_PD_STATUS_READY);
+ mux_ready = !!((payload[0] >> AMD_FP6_MUX_PD_STATUS_OFFSET) &
+ AMD_FP6_MUX_PD_STATUS_READY);
if (!mux_ready)
return EC_ERROR_BUSY;
@@ -80,7 +80,6 @@ static int amd_fp6_mux_port0_write(const struct usb_mux *me, uint8_t write_val)
*/
start = get_time();
while (time_since32(start) < WRITE_CMD_TIMEOUT_MS * MSEC) {
-
RETURN_ERROR(amd_fp6_mux_port0_read(me, &read_val));
port_status = read_val >> AMD_FP6_MUX_PORT_STATUS_OFFSET;
@@ -134,7 +133,6 @@ static void amd_fp6_set_mux_retry(void)
CMD_RETRY_INTERVAL_MS * MSEC);
}
-
static int amd_fp6_set_mux(const struct usb_mux *me, mux_state_t mux_state,
bool *ack_required)
{
@@ -143,6 +141,10 @@ static int amd_fp6_set_mux(const struct usb_mux *me, mux_state_t mux_state,
/* This driver does not use host command ACKs */
*ack_required = false;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
if (mux_state == USB_PD_MUX_NONE)
/*
* LOW_POWER must be set when connection mode is
@@ -170,8 +172,8 @@ static int amd_fp6_set_mux(const struct usb_mux *me, mux_state_t mux_state,
/* Mux is not powered in Z1 */
if (chipset_in_state(CHIPSET_STATE_HARD_OFF))
- return (mux_state == USB_PD_MUX_NONE) ? EC_SUCCESS
- : EC_ERROR_NOT_POWERED;
+ return (mux_state == USB_PD_MUX_NONE) ? EC_SUCCESS :
+ EC_ERROR_NOT_POWERED;
saved_mux_state[me->usb_port].write_pending = true;
amd_fp6_set_mux_retry();
diff --git a/driver/usb_mux/amd_fp6.h b/driver/usb_mux/amd_fp6.h
index 913903e4c4..ba2b791ba5 100644
--- a/driver/usb_mux/amd_fp6.h
+++ b/driver/usb_mux/amd_fp6.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+/* Copyright 2021 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -8,24 +8,24 @@
#ifndef __CROS_EC_USB_MUX_AMD_FP6_H
#define __CROS_EC_USB_MUX_AMD_FP6_H
-#define AMD_FP6_C0_MUX_I2C_ADDR 0x5C
-#define AMD_FP6_C4_MUX_I2C_ADDR 0x52
+#define AMD_FP6_C0_MUX_I2C_ADDR 0x5C
+#define AMD_FP6_C4_MUX_I2C_ADDR 0x52
-#define AMD_FP6_MUX_MODE_SAFE 0x0
-#define AMD_FP6_MUX_MODE_USB 0x1
-#define AMD_FP6_MUX_MODE_DP 0x2
-#define AMD_FP6_MUX_MODE_DOCK 0x3
-#define AMD_FP6_MUX_MODE_MASK GENMASK(1, 0)
+#define AMD_FP6_MUX_MODE_SAFE 0x0
+#define AMD_FP6_MUX_MODE_USB 0x1
+#define AMD_FP6_MUX_MODE_DP 0x2
+#define AMD_FP6_MUX_MODE_DOCK 0x3
+#define AMD_FP6_MUX_MODE_MASK GENMASK(1, 0)
-#define AMD_FP6_MUX_ORIENTATION BIT(4)
-#define AMD_FP6_MUX_LOW_POWER BIT(5)
+#define AMD_FP6_MUX_ORIENTATION BIT(4)
+#define AMD_FP6_MUX_LOW_POWER BIT(5)
-#define AMD_FP6_MUX_PORT_STATUS_OFFSET 6
-#define AMD_FP6_MUX_PORT_CMD_BUSY 0x0
-#define AMD_FP6_MUX_PORT_CMD_COMPLETE 0x1
-#define AMD_FP6_MUX_PORT_CMD_TIMEOUT 0x2
+#define AMD_FP6_MUX_PORT_STATUS_OFFSET 6
+#define AMD_FP6_MUX_PORT_CMD_BUSY 0x0
+#define AMD_FP6_MUX_PORT_CMD_COMPLETE 0x1
+#define AMD_FP6_MUX_PORT_CMD_TIMEOUT 0x2
-#define AMD_FP6_MUX_PD_STATUS_READY BIT(5)
-#define AMD_FP6_MUX_PD_STATUS_OFFSET 1
+#define AMD_FP6_MUX_PD_STATUS_READY BIT(5)
+#define AMD_FP6_MUX_PD_STATUS_OFFSET 1
#endif /* __CROS_EC_USB_MUX_AMD_FP6_H */
diff --git a/driver/usb_mux/anx3443.c b/driver/usb_mux/anx3443.c
index c7158b645c..f3b0b08afd 100644
--- a/driver/usb_mux/anx3443.c
+++ b/driver/usb_mux/anx3443.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+/* Copyright 2021 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -23,22 +23,21 @@
#define ANX3443_I2C_WAKE_TIMEOUT_MS 20
#define ANX3443_I2C_WAKE_RETRY_DELAY_US 500
-#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
-#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args)
+#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ##args)
+#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ##args)
static struct {
mux_state_t mux_state;
bool awake;
} saved_mux_state[CONFIG_USB_PD_PORT_MAX_COUNT];
-static inline int anx3443_read(const struct usb_mux *me,
- uint8_t reg, int *val)
+static inline int anx3443_read(const struct usb_mux *me, uint8_t reg, int *val)
{
return i2c_read8(me->i2c_port, me->i2c_addr_flags, reg, val);
}
-static inline int anx3443_write(const struct usb_mux *me,
- uint8_t reg, uint8_t val)
+static inline int anx3443_write(const struct usb_mux *me, uint8_t reg,
+ uint8_t val)
{
return i2c_write8(me->i2c_port, me->i2c_addr_flags, reg, val);
}
@@ -97,6 +96,10 @@ static int anx3443_set_mux(const struct usb_mux *me, mux_state_t mux_state,
/* This driver does not use host command ACKs */
*ack_required = false;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
saved_mux_state[me->usb_port].mux_state = mux_state;
/* To disable both DP and USB the mux must be powered off. */
@@ -195,7 +198,7 @@ static bool anx3443_port_is_usb2_only(const struct usb_mux *me)
static void anx3443_suspend(void)
{
for (int i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) {
- const struct usb_mux *mux = &usb_muxes[i];
+ const struct usb_mux *mux = usb_muxes[i].mux;
if (mux->driver != &anx3443_usb_mux_driver)
continue;
@@ -209,14 +212,14 @@ DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, anx3443_suspend, HOOK_PRIO_DEFAULT);
static void anx3443_resume(void)
{
for (int i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) {
- int port = usb_muxes[i].usb_port;
+ int port = usb_muxes[i].mux->usb_port;
bool ack_required;
- if (usb_muxes[i].driver != &anx3443_usb_mux_driver)
+ if (usb_muxes[i].mux->driver != &anx3443_usb_mux_driver)
continue;
- anx3443_set_mux(&usb_muxes[i], saved_mux_state[port].mux_state,
- &ack_required);
+ anx3443_set_mux(usb_muxes[i].mux,
+ saved_mux_state[port].mux_state, &ack_required);
}
}
DECLARE_HOOK(HOOK_CHIPSET_RESUME, anx3443_resume, HOOK_PRIO_DEFAULT);
diff --git a/driver/usb_mux/anx3443.h b/driver/usb_mux/anx3443.h
index a8e84d5e5e..bd2dc2bf45 100644
--- a/driver/usb_mux/anx3443.h
+++ b/driver/usb_mux/anx3443.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+/* Copyright 2021 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -9,36 +9,36 @@
#ifndef __CROS_EC_USB_MUX_ANX3443_H
#define __CROS_EC_USB_MUX_ANX3443_H
-#define ANX3443_I2C_READY_DELAY (30 * MSEC)
+#define ANX3443_I2C_READY_DELAY (30 * MSEC)
/* I2C interface addresses */
-#define ANX3443_I2C_ADDR0_FLAGS 0x10
-#define ANX3443_I2C_ADDR1_FLAGS 0x14
-#define ANX3443_I2C_ADDR2_FLAGS 0x16
-#define ANX3443_I2C_ADDR3_FLAGS 0x11
+#define ANX3443_I2C_ADDR0_FLAGS 0x10
+#define ANX3443_I2C_ADDR1_FLAGS 0x14
+#define ANX3443_I2C_ADDR2_FLAGS 0x16
+#define ANX3443_I2C_ADDR3_FLAGS 0x11
/* This register is not documented in datasheet. */
-#define ANX3443_REG_POWER_CNTRL 0x2B
-#define ANX3443_POWER_CNTRL_OFF 0xFF
+#define ANX3443_REG_POWER_CNTRL 0x2B
+#define ANX3443_POWER_CNTRL_OFF 0xFF
-#define ANX3443_REG_USB_STATUS 0xD7
+#define ANX3443_REG_USB_STATUS 0xD7
/* status of downstream RX term */
-#define ANX3443_DN_EN_RTERM_ST BIT(7)
+#define ANX3443_DN_EN_RTERM_ST BIT(7)
/* status of upstream RX term */
-#define ANX3443_UP_EN_RTERM_ST BIT(6)
+#define ANX3443_UP_EN_RTERM_ST BIT(6)
/* Ultra low power control register */
-#define ANX3443_REG_ULTRA_LOW_POWER 0xE6
-#define ANX3443_ULTRA_LOW_POWER_EN 0x06
-#define ANX3443_ULTRA_LOW_POWER_DIS 0x00
+#define ANX3443_REG_ULTRA_LOW_POWER 0xE6
+#define ANX3443_ULTRA_LOW_POWER_EN 0x06
+#define ANX3443_ULTRA_LOW_POWER_DIS 0x00
/* Mux control register */
-#define ANX3443_REG_ULP_CFG_MODE 0xF8
-#define ANX3443_ULP_CFG_MODE_EN BIT(4)
-#define ANX3443_ULP_CFG_MODE_SWAP BIT(3)
-#define ANX3443_ULP_CFG_MODE_FLIP BIT(2)
-#define ANX3443_ULP_CFG_MODE_DP_EN BIT(1)
-#define ANX3443_ULP_CFG_MODE_USB_EN BIT(0)
+#define ANX3443_REG_ULP_CFG_MODE 0xF8
+#define ANX3443_ULP_CFG_MODE_EN BIT(4)
+#define ANX3443_ULP_CFG_MODE_SWAP BIT(3)
+#define ANX3443_ULP_CFG_MODE_FLIP BIT(2)
+#define ANX3443_ULP_CFG_MODE_DP_EN BIT(1)
+#define ANX3443_ULP_CFG_MODE_USB_EN BIT(0)
extern const struct usb_mux_driver anx3443_usb_mux_driver;
diff --git a/driver/usb_mux/anx7440.c b/driver/usb_mux/anx7440.c
index 89e593217d..456eaaa407 100644
--- a/driver/usb_mux/anx7440.c
+++ b/driver/usb_mux/anx7440.c
@@ -1,4 +1,4 @@
-/* Copyright 2019 The Chromium OS Authors. All rights reserved.
+/* Copyright 2019 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -13,17 +13,16 @@
#include "usb_mux.h"
#include "util.h"
-#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
-#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args)
+#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ##args)
+#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ##args)
-static inline int anx7440_read(const struct usb_mux *me,
- uint8_t reg, int *val)
+static inline int anx7440_read(const struct usb_mux *me, uint8_t reg, int *val)
{
return i2c_read8(me->i2c_port, me->i2c_addr_flags, reg, val);
}
-static inline int anx7440_write(const struct usb_mux *me,
- uint8_t reg, uint8_t val)
+static inline int anx7440_write(const struct usb_mux *me, uint8_t reg,
+ uint8_t val)
{
return i2c_write8(me->i2c_port, me->i2c_addr_flags, reg, val);
}
@@ -69,6 +68,10 @@ static int anx7440_set_mux(const struct usb_mux *me, mux_state_t mux_state,
/* This driver does not use host command ACKs */
*ack_required = false;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
res = anx7440_read(me, ANX7440_REG_CHIP_CTRL, &reg);
if (res)
return res;
diff --git a/driver/usb_mux/anx7440.h b/driver/usb_mux/anx7440.h
index 2147e3146a..3849837cd2 100644
--- a/driver/usb_mux/anx7440.h
+++ b/driver/usb_mux/anx7440.h
@@ -1,4 +1,4 @@
-/* Copyright 2019 The Chromium OS Authors. All rights reserved.
+/* Copyright 2019 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -16,25 +16,25 @@
#define I2C_ADDR_USB_MUX1_FLAGS ANX7440_I2C_ADDR2_FLAGS
/* Vendor / Device Id registers and expected fused values */
-#define ANX7440_REG_VENDOR_ID_L 0x00
-#define ANX7440_VENDOR_ID_L 0xaa
-#define ANX7440_REG_VENDOR_ID_H 0x01
-#define ANX7440_VENDOR_ID_H 0xaa
-#define ANX7440_REG_DEVICE_ID_L 0x02
-#define ANX7440_DEVICE_ID_L 0x40
-#define ANX7440_REG_DEVICE_ID_H 0x03
-#define ANX7440_DEVICE_ID_H 0x74
+#define ANX7440_REG_VENDOR_ID_L 0x00
+#define ANX7440_VENDOR_ID_L 0xaa
+#define ANX7440_REG_VENDOR_ID_H 0x01
+#define ANX7440_VENDOR_ID_H 0xaa
+#define ANX7440_REG_DEVICE_ID_L 0x02
+#define ANX7440_DEVICE_ID_L 0x40
+#define ANX7440_REG_DEVICE_ID_H 0x03
+#define ANX7440_DEVICE_ID_H 0x74
#define ANX7440_REG_DEVICE_VERSION 0x04
-#define ANX7440_DEVICE_VERSION 0xCB
+#define ANX7440_DEVICE_VERSION 0xCB
/* Chip control register for checking mux state */
-#define ANX7440_REG_CHIP_CTRL 0x05
-#define ANX7440_CHIP_CTRL_FINAL_FLIP BIT(6)
-#define ANX7440_CHIP_CTRL_OP_MODE_FINAL_DP BIT(5)
+#define ANX7440_REG_CHIP_CTRL 0x05
+#define ANX7440_CHIP_CTRL_FINAL_FLIP BIT(6)
+#define ANX7440_CHIP_CTRL_OP_MODE_FINAL_DP BIT(5)
#define ANX7440_CHIP_CTRL_OP_MODE_FINAL_USB BIT(4)
-#define ANX7440_CHIP_CTRL_SW_FLIP BIT(2)
-#define ANX7440_CHIP_CTRL_SW_OP_MODE_DP BIT(1)
-#define ANX7440_CHIP_CTRL_SW_OP_MODE_USB BIT(0)
-#define ANX7440_CHIP_CTRL_SW_OP_MODE_CLEAR 0x7
+#define ANX7440_CHIP_CTRL_SW_FLIP BIT(2)
+#define ANX7440_CHIP_CTRL_SW_OP_MODE_DP BIT(1)
+#define ANX7440_CHIP_CTRL_SW_OP_MODE_USB BIT(0)
+#define ANX7440_CHIP_CTRL_SW_OP_MODE_CLEAR 0x7
#endif /* __CROS_EC_USB_MUX_ANX7440_H */
diff --git a/driver/usb_mux/anx7451.c b/driver/usb_mux/anx7451.c
index db56457bb8..b974128740 100644
--- a/driver/usb_mux/anx7451.c
+++ b/driver/usb_mux/anx7451.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+/* Copyright 2021 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -22,17 +22,16 @@
#define ANX7451_I2C_WAKE_TIMEOUT_MS 20
#define ANX7451_I2C_WAKE_RETRY_DELAY_US 500
-#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
-#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args)
+#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ##args)
+#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ##args)
-static inline int anx7451_read(const struct usb_mux *me,
- uint8_t reg, int *val)
+static inline int anx7451_read(const struct usb_mux *me, uint8_t reg, int *val)
{
return i2c_read8(me->i2c_port, me->i2c_addr_flags, reg, val);
}
-static inline int anx7451_write(const struct usb_mux *me,
- uint8_t reg, uint8_t val)
+static inline int anx7451_write(const struct usb_mux *me, uint8_t reg,
+ uint8_t val)
{
return i2c_write8(me->i2c_port, me->i2c_addr_flags, reg, val);
}
@@ -97,6 +96,10 @@ static int anx7451_set_mux(const struct usb_mux *me, mux_state_t mux_state,
/* This driver does not use host command ACKs */
*ack_required = false;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
/*
* Mux is not powered in Z1, and will start up in USB mode. Ensure any
* mux sets when off get run again so we don't leave the retimer on with
diff --git a/driver/usb_mux/anx7451.h b/driver/usb_mux/anx7451.h
index 7eefb6e79e..4b63d513fd 100644
--- a/driver/usb_mux/anx7451.h
+++ b/driver/usb_mux/anx7451.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+/* Copyright 2021 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -12,38 +12,38 @@
#include "usb_mux.h"
/* I2C interface addresses */
-#define ANX7451_I2C_ADDR0_FLAGS 0x10
-#define ANX7451_I2C_ADDR1_FLAGS 0x14
-#define ANX7451_I2C_ADDR2_FLAGS 0x16
-#define ANX7451_I2C_ADDR3_FLAGS 0x11
+#define ANX7451_I2C_ADDR0_FLAGS 0x10
+#define ANX7451_I2C_ADDR1_FLAGS 0x14
+#define ANX7451_I2C_ADDR2_FLAGS 0x16
+#define ANX7451_I2C_ADDR3_FLAGS 0x11
/* This register is not documented in datasheet. */
-#define ANX7451_REG_POWER_CNTRL 0x2B
-#define ANX7451_POWER_CNTRL_OFF 0xFF
+#define ANX7451_REG_POWER_CNTRL 0x2B
+#define ANX7451_POWER_CNTRL_OFF 0xFF
/*
* Ultra low power control register.
* On ANX7451, this register should always be 0 (disabled).
* See figure 2-2 in family programming guide.
*/
-#define ANX7451_REG_ULTRA_LOW_POWER 0xE6
+#define ANX7451_REG_ULTRA_LOW_POWER 0xE6
/* #define ANX7451_ULTRA_LOW_POWER_EN 0x06 */
-#define ANX7451_ULTRA_LOW_POWER_DIS 0x00
+#define ANX7451_ULTRA_LOW_POWER_DIS 0x00
/* Mux control register */
-#define ANX7451_REG_ULP_CFG_MODE 0xF8
-#define ANX7451_ULP_CFG_MODE_EN BIT(4)
-#define ANX7451_ULP_CFG_MODE_SWAP BIT(3)
-#define ANX7451_ULP_CFG_MODE_FLIP BIT(2)
-#define ANX7451_ULP_CFG_MODE_DP_EN BIT(1)
-#define ANX7451_ULP_CFG_MODE_USB_EN BIT(0)
+#define ANX7451_REG_ULP_CFG_MODE 0xF8
+#define ANX7451_ULP_CFG_MODE_EN BIT(4)
+#define ANX7451_ULP_CFG_MODE_SWAP BIT(3)
+#define ANX7451_ULP_CFG_MODE_FLIP BIT(2)
+#define ANX7451_ULP_CFG_MODE_DP_EN BIT(1)
+#define ANX7451_ULP_CFG_MODE_USB_EN BIT(0)
/* Register to set USB I2C address, defaults to 0x29 (7-bit) */
-#define ANX7451_REG_USB_I2C_ADDR 0x38
+#define ANX7451_REG_USB_I2C_ADDR 0x38
/* ANX7451 AUX FLIP control */
-#define ANX7451_REG_USB_AUX_FLIP_CTRL 0xA4
-#define ANX7451_USB_AUX_FLIP_EN 0x20
+#define ANX7451_REG_USB_AUX_FLIP_CTRL 0xA4
+#define ANX7451_USB_AUX_FLIP_EN 0x20
extern const struct usb_mux_driver anx7451_usb_mux_driver;
diff --git a/driver/usb_mux/it5205.c b/driver/usb_mux/it5205.c
index 0cfecdeda0..de3d950c86 100644
--- a/driver/usb_mux/it5205.c
+++ b/driver/usb_mux/it5205.c
@@ -1,4 +1,4 @@
-/* Copyright 2017 The Chromium OS Authors. All rights reserved.
+/* Copyright 2017 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -25,15 +25,15 @@ static int it5205_write(const struct usb_mux *me, uint8_t reg, uint8_t val)
static int it5205h_sbu_update(const struct usb_mux *me, uint8_t reg,
uint8_t mask, enum mask_update_action action)
{
- return i2c_update8(me->i2c_port, IT5205H_SBU_I2C_ADDR_FLAGS,
- reg, mask, action);
+ return i2c_update8(me->i2c_port, IT5205H_SBU_I2C_ADDR_FLAGS, reg, mask,
+ action);
}
static int it5205h_sbu_field_update(const struct usb_mux *me, uint8_t reg,
uint8_t field_mask, uint8_t set_value)
{
- return i2c_field_update8(me->i2c_port, IT5205H_SBU_I2C_ADDR_FLAGS,
- reg, field_mask, set_value);
+ return i2c_field_update8(me->i2c_port, IT5205H_SBU_I2C_ADDR_FLAGS, reg,
+ field_mask, set_value);
}
struct mux_chip_id_t {
@@ -42,10 +42,10 @@ struct mux_chip_id_t {
};
static const struct mux_chip_id_t mux_chip_id_verify[] = {
- { '5', IT5205_REG_CHIP_ID3},
- { '2', IT5205_REG_CHIP_ID2},
- { '0', IT5205_REG_CHIP_ID1},
- { '5', IT5205_REG_CHIP_ID0},
+ { '5', IT5205_REG_CHIP_ID3 },
+ { '2', IT5205_REG_CHIP_ID2 },
+ { '0', IT5205_REG_CHIP_ID1 },
+ { '5', IT5205_REG_CHIP_ID0 },
};
static int it5205_init(const struct usb_mux *me)
@@ -67,16 +67,16 @@ static int it5205_init(const struct usb_mux *me)
}
if (IS_ENABLED(CONFIG_USB_MUX_IT5205H_SBU_OVP)) {
- RETURN_ERROR(it5205h_sbu_field_update(me, IT5205H_REG_VSR,
- IT5205H_VREF_SELECT_MASK,
- IT5205H_VREF_SELECT_3_3V));
+ RETURN_ERROR(it5205h_sbu_field_update(
+ me, IT5205H_REG_VSR, IT5205H_VREF_SELECT_MASK,
+ IT5205H_VREF_SELECT_3_3V));
RETURN_ERROR(it5205h_sbu_field_update(me, IT5205H_REG_CSBUOVPSR,
- IT5205H_OVP_SELECT_MASK,
- IT5205H_OVP_3_68V));
+ IT5205H_OVP_SELECT_MASK,
+ IT5205H_OVP_3_68V));
- RETURN_ERROR(it5205h_sbu_update(me, IT5205H_REG_ISR,
- IT5205H_ISR_CSBU_MASK, MASK_CLR));
+ RETURN_ERROR(it5205h_sbu_update(
+ me, IT5205H_REG_ISR, IT5205H_ISR_CSBU_MASK, MASK_CLR));
RETURN_ERROR(it5205h_enable_csbu_switch(me, true));
}
@@ -86,8 +86,8 @@ static int it5205_init(const struct usb_mux *me)
enum ec_error_list it5205h_enable_csbu_switch(const struct usb_mux *me, bool en)
{
- return it5205h_sbu_update(me, IT5205H_REG_CSBUSR,
- IT5205H_CSBUSR_SWITCH, en ? MASK_SET : MASK_CLR);
+ return it5205h_sbu_update(me, IT5205H_REG_CSBUSR, IT5205H_CSBUSR_SWITCH,
+ en ? MASK_SET : MASK_CLR);
}
/* Writes control register to set switch mode */
@@ -99,6 +99,10 @@ static int it5205_set_mux(const struct usb_mux *me, mux_state_t mux_state,
/* This driver does not use host command ACKs */
*ack_required = false;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
switch (mux_state & MUX_STATE_DP_USB_MASK) {
case USB_PD_MUX_USB_ENABLED:
reg = IT5205_USB;
diff --git a/driver/usb_mux/it5205.h b/driver/usb_mux/it5205.h
index 0fb9f009f6..6a8fc2bb24 100644
--- a/driver/usb_mux/it5205.h
+++ b/driver/usb_mux/it5205.h
@@ -1,4 +1,4 @@
-/* Copyright 2017 The Chromium OS Authors. All rights reserved.
+/* Copyright 2017 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -19,18 +19,17 @@
#define IT5205_REG_CHIP_ID0 0x7
/* MUX power down register */
-#define IT5205_REG_MUXPDR 0x10
-#define IT5205_MUX_POWER_DOWN BIT(0)
+#define IT5205_REG_MUXPDR 0x10
+#define IT5205_MUX_POWER_DOWN BIT(0)
/* MUX control register */
-#define IT5205_REG_MUXCR 0x11
+#define IT5205_REG_MUXCR 0x11
#define IT5205_POLARITY_INVERTED BIT(4)
-#define IT5205_DP_USB_CTRL_MASK 0x0f
-#define IT5205_DP 0x0f
-#define IT5205_DP_USB 0x03
-#define IT5205_USB 0x07
-
+#define IT5205_DP_USB_CTRL_MASK 0x0f
+#define IT5205_DP 0x0f
+#define IT5205_DP_USB 0x03
+#define IT5205_USB 0x07
/* IT5205-H SBU module */
@@ -38,27 +37,27 @@
#define IT5205H_SBU_I2C_ADDR_FLAGS 0x6a
/* Vref Select Register */
-#define IT5205H_REG_VSR 0x10
-#define IT5205H_VREF_SELECT_MASK 0x30
-#define IT5205H_VREF_SELECT_3_3V 0x00
-#define IT5205H_VREF_SELECT_OFF 0x20
+#define IT5205H_REG_VSR 0x10
+#define IT5205H_VREF_SELECT_MASK 0x30
+#define IT5205H_VREF_SELECT_3_3V 0x00
+#define IT5205H_VREF_SELECT_OFF 0x20
/* CSBU OVP Select Register */
-#define IT5205H_REG_CSBUOVPSR 0x1e
-#define IT5205H_OVP_SELECT_MASK 0x30
-#define IT5205H_OVP_3_90V 0x00
-#define IT5205H_OVP_3_68V 0x10
-#define IT5205H_OVP_3_62V 0x20
-#define IT5205H_OVP_3_57V 0x30
+#define IT5205H_REG_CSBUOVPSR 0x1e
+#define IT5205H_OVP_SELECT_MASK 0x30
+#define IT5205H_OVP_3_90V 0x00
+#define IT5205H_OVP_3_68V 0x10
+#define IT5205H_OVP_3_62V 0x20
+#define IT5205H_OVP_3_57V 0x30
/* CSBU Switch Register */
-#define IT5205H_REG_CSBUSR 0x22
-#define IT5205H_CSBUSR_SWITCH BIT(0)
+#define IT5205H_REG_CSBUSR 0x22
+#define IT5205H_CSBUSR_SWITCH BIT(0)
/* Interrupt Switch Register */
-#define IT5205H_REG_ISR 0x25
-#define IT5205H_ISR_CSBU_MASK BIT(4)
-#define IT5205H_ISR_CSBU_OVP BIT(0)
+#define IT5205H_REG_ISR 0x25
+#define IT5205H_ISR_CSBU_MASK BIT(4)
+#define IT5205H_ISR_CSBU_OVP BIT(0)
enum ec_error_list it5205h_enable_csbu_switch(const struct usb_mux *me,
bool en);
diff --git a/driver/usb_mux/pi3usb3x532.c b/driver/usb_mux/pi3usb3x532.c
index 2435157967..54eff928b7 100644
--- a/driver/usb_mux/pi3usb3x532.c
+++ b/driver/usb_mux/pi3usb3x532.c
@@ -1,4 +1,4 @@
-/* Copyright 2015 The Chromium OS Authors. All rights reserved.
+/* Copyright 2015 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -11,8 +11,7 @@
#include "usb_mux.h"
#include "util.h"
-static int pi3usb3x532_read(const struct usb_mux *me,
- uint8_t reg, uint8_t *val)
+static int pi3usb3x532_read(const struct usb_mux *me, uint8_t reg, uint8_t *val)
{
int read, res;
@@ -33,8 +32,7 @@ static int pi3usb3x532_read(const struct usb_mux *me,
return EC_SUCCESS;
}
-static int pi3usb3x532_write(const struct usb_mux *me,
- uint8_t reg, uint8_t val)
+static int pi3usb3x532_write(const struct usb_mux *me, uint8_t reg, uint8_t val)
{
if (reg != PI3USB3X532_REG_CONTROL)
return EC_ERROR_UNKNOWN;
@@ -58,11 +56,10 @@ int pi3usb3x532_check_vendor(const struct usb_mux *me, int *val)
static int pi3usb3x532_reset(const struct usb_mux *me)
{
- return pi3usb3x532_write(
- me,
- PI3USB3X532_REG_CONTROL,
- (PI3USB3X532_MODE_POWERDOWN & PI3USB3X532_CTRL_MASK) |
- PI3USB3X532_CTRL_RSVD);
+ return pi3usb3x532_write(me, PI3USB3X532_REG_CONTROL,
+ (PI3USB3X532_MODE_POWERDOWN &
+ PI3USB3X532_CTRL_MASK) |
+ PI3USB3X532_CTRL_RSVD);
}
static int pi3usb3x532_init(const struct usb_mux *me)
@@ -83,8 +80,7 @@ static int pi3usb3x532_init(const struct usb_mux *me)
}
/* Writes control register to set switch mode */
-static int pi3usb3x532_set_mux(const struct usb_mux *me,
- mux_state_t mux_state,
+static int pi3usb3x532_set_mux(const struct usb_mux *me, mux_state_t mux_state,
bool *ack_required)
{
uint8_t reg = 0;
@@ -92,6 +88,10 @@ static int pi3usb3x532_set_mux(const struct usb_mux *me,
/* This driver does not use host command ACKs */
*ack_required = false;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
if (mux_state & USB_PD_MUX_USB_ENABLED)
reg |= PI3USB3X532_MODE_USB;
if (mux_state & USB_PD_MUX_DP_ENABLED)
@@ -104,8 +104,7 @@ static int pi3usb3x532_set_mux(const struct usb_mux *me,
}
/* Reads control register and updates mux_state accordingly */
-static int pi3usb3x532_get_mux(const struct usb_mux *me,
- mux_state_t *mux_state)
+static int pi3usb3x532_get_mux(const struct usb_mux *me, mux_state_t *mux_state)
{
uint8_t reg = 0;
uint8_t res;
diff --git a/driver/usb_mux/pi3usb3x532.h b/driver/usb_mux/pi3usb3x532.h
index 6b398fdace..9214d349f0 100644
--- a/driver/usb_mux/pi3usb3x532.h
+++ b/driver/usb_mux/pi3usb3x532.h
@@ -1,4 +1,4 @@
-/* Copyright 2015 The Chromium OS Authors. All rights reserved.
+/* Copyright 2015 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -70,8 +70,8 @@
* dp0-1 : rx1, tx1
* hpd+/-: rfu2, rfu1
*/
-#define PI3USB3X532_MODE_DP_USB_SWAP (PI3USB3X532_MODE_DP_USB | \
- PI3USB3X532_BIT_SWAP)
+#define PI3USB3X532_MODE_DP_USB_SWAP \
+ (PI3USB3X532_MODE_DP_USB | PI3USB3X532_BIT_SWAP)
/* Get Vendor ID */
int pi3usb3x532_check_vendor(const struct usb_mux *me, int *val);
diff --git a/driver/usb_mux/ps8740.c b/driver/usb_mux/ps8740.c
index 618c74cd65..557c4f1976 100644
--- a/driver/usb_mux/ps8740.c
+++ b/driver/usb_mux/ps8740.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
+/* Copyright 2020 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -14,14 +14,12 @@
int ps8740_read(const struct usb_mux *me, uint8_t reg, int *val)
{
- return i2c_read8(me->i2c_port, me->i2c_addr_flags,
- reg, val);
+ return i2c_read8(me->i2c_port, me->i2c_addr_flags, reg, val);
}
int ps8740_write(const struct usb_mux *me, uint8_t reg, uint8_t val)
{
- return i2c_write8(me->i2c_port, me->i2c_addr_flags,
- reg, val);
+ return i2c_write8(me->i2c_port, me->i2c_addr_flags, reg, val);
}
static int ps8740_init(const struct usb_mux *me)
@@ -42,7 +40,7 @@ static int ps8740_init(const struct usb_mux *me)
if (res)
return res;
- res = ps8740_read(me, PS8740_REG_CHIP_ID2, &id2);
+ res = ps8740_read(me, PS8740_REG_CHIP_ID2, &id2);
if (res)
return res;
@@ -78,6 +76,10 @@ static int ps8740_set_mux(const struct usb_mux *me, mux_state_t mux_state,
/* This driver does not use host command ACKs */
*ack_required = false;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
if (mux_state & USB_PD_MUX_USB_ENABLED)
reg |= PS8740_MODE_USB_ENABLED;
if (mux_state & USB_PD_MUX_DP_ENABLED)
diff --git a/driver/usb_mux/ps8740.h b/driver/usb_mux/ps8740.h
index 3a669b5ad9..0b29a80cf1 100644
--- a/driver/usb_mux/ps8740.h
+++ b/driver/usb_mux/ps8740.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
+/* Copyright 2020 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -11,67 +11,67 @@
#include "usb_mux.h"
-#define PS8740_I2C_ADDR0_FLAG 0x10
-#define PS8740_I2C_ADDR1_FLAG 0x11
-#define PS8740_I2C_ADDR2_FLAG 0x19
-#define PS8740_I2C_ADDR3_FLAG 0x1a
+#define PS8740_I2C_ADDR0_FLAG 0x10
+#define PS8740_I2C_ADDR1_FLAG 0x11
+#define PS8740_I2C_ADDR2_FLAG 0x19
+#define PS8740_I2C_ADDR3_FLAG 0x1a
/* Mode register for setting mux */
#define PS8740_REG_MODE 0x00
#define PS8740_MODE_POLARITY_INVERTED BIT(4)
-#define PS8740_MODE_USB_ENABLED BIT(5)
-#define PS8740_MODE_DP_ENABLED BIT(6)
+#define PS8740_MODE_USB_ENABLED BIT(5)
+#define PS8740_MODE_DP_ENABLED BIT(6)
#ifdef CONFIG_USB_MUX_PS8740
- #define PS8740_MODE_POWER_DOWN BIT(7)
+#define PS8740_MODE_POWER_DOWN BIT(7)
#elif defined(CONFIG_USB_MUX_PS8742)
- #define PS8740_MODE_CE_DP_ENABLED BIT(7)
- /* To reset the state machine to default */
- #define PS8740_MODE_POWER_DOWN 0
+#define PS8740_MODE_CE_DP_ENABLED BIT(7)
+/* To reset the state machine to default */
+#define PS8740_MODE_POWER_DOWN 0
#endif
/* Status register for checking mux state */
#define PS8740_REG_STATUS 0x09
#define PS8740_STATUS_POLARITY_INVERTED BIT(2)
-#define PS8740_STATUS_USB_ENABLED BIT(3)
-#define PS8740_STATUS_DP_ENABLED BIT(4)
-#define PS8740_STATUS_HPD_ASSERTED BIT(7)
+#define PS8740_STATUS_USB_ENABLED BIT(3)
+#define PS8740_STATUS_DP_ENABLED BIT(4)
+#define PS8740_STATUS_HPD_ASSERTED BIT(7)
/* Chip ID / revision registers and expected fused values */
#define PS8740_REG_REVISION_ID1 0xf0
#define PS8740_REG_REVISION_ID2 0xf1
-#define PS8740_REG_CHIP_ID1 0xf2
-#define PS8740_REG_CHIP_ID2 0xf3
+#define PS8740_REG_CHIP_ID1 0xf2
+#define PS8740_REG_CHIP_ID2 0xf3
#ifdef CONFIG_USB_MUX_PS8740
- #define PS8740_REVISION_ID1 0x00
- #define PS8740_REVISION_ID2_0 0x0a
- #define PS8740_REVISION_ID2_1 0x0b
- #define PS8740_CHIP_ID1 0x40
+#define PS8740_REVISION_ID1 0x00
+#define PS8740_REVISION_ID2_0 0x0a
+#define PS8740_REVISION_ID2_1 0x0b
+#define PS8740_CHIP_ID1 0x40
#elif defined(CONFIG_USB_MUX_PS8742)
- #define PS8740_REVISION_ID1 0x01
- #define PS8740_REVISION_ID2_0 0x0a
- #define PS8740_REVISION_ID2_1 0x0a
- #define PS8740_CHIP_ID1 0x42
+#define PS8740_REVISION_ID1 0x01
+#define PS8740_REVISION_ID2_0 0x0a
+#define PS8740_REVISION_ID2_1 0x0a
+#define PS8740_CHIP_ID1 0x42
#endif
-#define PS8740_CHIP_ID2 0x87
+#define PS8740_CHIP_ID2 0x87
/* USB equalization settings for Host to Mux */
-#define PS8740_REG_USB_EQ_TX 0x32
+#define PS8740_REG_USB_EQ_TX 0x32
#define PS8740_USB_EQ_TX_10_1_DB 0x00
#define PS8740_USB_EQ_TX_14_3_DB 0x20
-#define PS8740_USB_EQ_TX_8_5_DB 0x40
-#define PS8740_USB_EQ_TX_6_5_DB 0x60
+#define PS8740_USB_EQ_TX_8_5_DB 0x40
+#define PS8740_USB_EQ_TX_6_5_DB 0x60
#define PS8740_USB_EQ_TX_11_5_DB 0x80
-#define PS8740_USB_EQ_TX_9_5_DB 0xc0
-#define PS8740_USB_EQ_TX_7_5_DB 0xe0
+#define PS8740_USB_EQ_TX_9_5_DB 0xc0
+#define PS8740_USB_EQ_TX_7_5_DB 0xe0
#define PS8740_USB_EQ_TERM_100_OHM (0 << 2)
-#define PS8740_USB_EQ_TERM_85_OHM BIT(2)
+#define PS8740_USB_EQ_TERM_85_OHM BIT(2)
/* USB equalization settings for Connector to Mux */
-#define PS8740_REG_USB_EQ_RX 0x3b
-#define PS8740_USB_EQ_RX_4_4_DB 0x00
-#define PS8740_USB_EQ_RX_7_0_DB 0x10
-#define PS8740_USB_EQ_RX_8_2_DB 0x20
-#define PS8740_USB_EQ_RX_9_4_DB 0x30
+#define PS8740_REG_USB_EQ_RX 0x3b
+#define PS8740_USB_EQ_RX_4_4_DB 0x00
+#define PS8740_USB_EQ_RX_7_0_DB 0x10
+#define PS8740_USB_EQ_RX_8_2_DB 0x20
+#define PS8740_USB_EQ_RX_9_4_DB 0x30
#define PS8740_USB_EQ_RX_10_2_DB 0x40
#define PS8740_USB_EQ_RX_11_4_DB 0x50
#define PS8740_USB_EQ_RX_14_3_DB 0x60
diff --git a/driver/usb_mux/ps8743.c b/driver/usb_mux/ps8743.c
index 28ad5e9546..86f0a7f9b2 100644
--- a/driver/usb_mux/ps8743.c
+++ b/driver/usb_mux/ps8743.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
+/* Copyright 2020 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -25,24 +25,21 @@ static enum usb_conn_status saved_usb_conn_status[CONFIG_USB_PD_PORT_MAX_COUNT];
int ps8743_read(const struct usb_mux *me, uint8_t reg, int *val)
{
- return i2c_read8(me->i2c_port, me->i2c_addr_flags,
- reg, val);
+ return i2c_read8(me->i2c_port, me->i2c_addr_flags, reg, val);
}
int ps8743_write(const struct usb_mux *me, uint8_t reg, uint8_t val)
{
- return i2c_write8(me->i2c_port, me->i2c_addr_flags,
- reg, val);
+ return i2c_write8(me->i2c_port, me->i2c_addr_flags, reg, val);
}
int ps8743_field_update(const struct usb_mux *me, uint8_t reg, uint8_t mask,
uint8_t val)
{
- return i2c_field_update8(me->i2c_port, me->i2c_addr_flags,
- reg, mask, val);
+ return i2c_field_update8(me->i2c_port, me->i2c_addr_flags, reg, mask,
+ val);
}
-
int ps8743_check_chip_id(const struct usb_mux *me, int *val)
{
int id1;
@@ -56,7 +53,7 @@ int ps8743_check_chip_id(const struct usb_mux *me, int *val)
if (res)
return res;
- res = ps8743_read(me, PS8743_REG_CHIP_ID2, &id2);
+ res = ps8743_read(me, PS8743_REG_CHIP_ID2, &id2);
if (res)
return res;
@@ -83,7 +80,7 @@ static int ps8743_init(const struct usb_mux *me)
if (res)
return res;
- res = ps8743_read(me, PS8743_REG_CHIP_ID2, &id2);
+ res = ps8743_read(me, PS8743_REG_CHIP_ID2, &id2);
if (res)
return res;
@@ -121,14 +118,17 @@ static int ps8743_set_mux(const struct usb_mux *me, mux_state_t mux_state,
* For CE_DP, CE_USB, and FLIP, disable pin control and enable I2C
* control.
*/
- uint8_t reg = (PS8743_MODE_IN_HPD_CONTROL |
- PS8743_MODE_DP_REG_CONTROL |
- PS8743_MODE_USB_REG_CONTROL |
- PS8743_MODE_FLIP_REG_CONTROL);
+ uint8_t reg =
+ (PS8743_MODE_IN_HPD_CONTROL | PS8743_MODE_DP_REG_CONTROL |
+ PS8743_MODE_USB_REG_CONTROL | PS8743_MODE_FLIP_REG_CONTROL);
/* This driver does not use host command ACKs */
*ack_required = false;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
if (mux_state & USB_PD_MUX_USB_ENABLED)
reg |= PS8743_MODE_USB_ENABLE;
else
@@ -214,7 +214,7 @@ static enum usb_conn_status ps8743_get_usb_conn_status(const struct usb_mux *me)
static void ps8743_suspend(void)
{
for (int i = 0; i < board_get_usb_pd_port_count(); i++) {
- const struct usb_mux *mux = &usb_muxes[i];
+ const struct usb_mux *mux = usb_muxes[i].mux;
if (mux->driver != &ps8743_usb_mux_driver)
continue;
@@ -233,7 +233,7 @@ DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, ps8743_suspend, HOOK_PRIO_DEFAULT);
static void ps8743_resume(void)
{
for (int i = 0; i < board_get_usb_pd_port_count(); i++) {
- const struct usb_mux *mux = &usb_muxes[i];
+ const struct usb_mux *mux = usb_muxes[i].mux;
if (mux->driver != &ps8743_usb_mux_driver)
continue;
diff --git a/driver/usb_mux/ps8743.h b/driver/usb_mux/ps8743.h
index 8e3a9d9b4c..e34d4f93e4 100644
--- a/driver/usb_mux/ps8743.h
+++ b/driver/usb_mux/ps8743.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
+/* Copyright 2020 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -14,30 +14,30 @@
/* Status register for checking mux state */
#define PS8743_REG_STATUS 0x09
#define PS8743_STATUS_POLARITY_INVERTED BIT(2)
-#define PS8743_STATUS_USB_ENABLED BIT(3)
-#define PS8743_STATUS_DP_ENABLED BIT(4)
-#define PS8743_STATUS_HPD_ASSERTED BIT(7)
+#define PS8743_STATUS_USB_ENABLED BIT(3)
+#define PS8743_STATUS_DP_ENABLED BIT(4)
+#define PS8743_STATUS_HPD_ASSERTED BIT(7)
/* Chip ID / revision registers and expected fused values */
#define PS8743_REG_REVISION_ID1 0xf0
#define PS8743_REG_REVISION_ID2 0xf1
-#define PS8743_REG_CHIP_ID1 0xf2
-#define PS8743_REG_CHIP_ID2 0xf3
-#define PS8743_REVISION_ID1_0 0x00
-#define PS8743_REVISION_ID1_1 0x01
-#define PS8743_REVISION_ID2 0x0b
-#define PS8743_CHIP_ID1 0x41
-#define PS8743_CHIP_ID2 0x87
+#define PS8743_REG_CHIP_ID1 0xf2
+#define PS8743_REG_CHIP_ID2 0xf3
+#define PS8743_REVISION_ID1_0 0x00
+#define PS8743_REVISION_ID1_1 0x01
+#define PS8743_REVISION_ID2 0x0b
+#define PS8743_CHIP_ID1 0x41
+#define PS8743_CHIP_ID2 0x87
/* Misc register for checking DCI / SS pair mode status */
-#define PS8743_MISC_DCI_SS_MODES 0x42
+#define PS8743_MISC_DCI_SS_MODES 0x42
#define PS8743_SSTX_NORMAL_OPERATION_MODE BIT(4)
-#define PS8743_SSTX_POWER_SAVING_MODE BIT(5)
-#define PS8743_SSTX_SUSPEND_MODE BIT(6)
+#define PS8743_SSTX_POWER_SAVING_MODE BIT(5)
+#define PS8743_SSTX_SUSPEND_MODE BIT(6)
/* Misc resiger for checking HPD / DP / USB / FLIP mode status */
#define PS8743_MISC_HPD_DP_USB_FLIP 0x09
-#define PS8743_USB_MODE_STATUS BIT(3)
-#define PS8743_DP_MODE_STATUS BIT(4)
+#define PS8743_USB_MODE_STATUS BIT(3)
+#define PS8743_DP_MODE_STATUS BIT(4)
#endif /* __CROS_EC_PS8743_H */
diff --git a/driver/usb_mux/ps8822.c b/driver/usb_mux/ps8822.c
index 7f25db37f4..d3ea76965d 100644
--- a/driver/usb_mux/ps8822.c
+++ b/driver/usb_mux/ps8822.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+/* Copyright 2021 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -15,15 +15,13 @@
static int ps8822_read(const struct usb_mux *me, int page, uint8_t reg,
int *val)
{
- return i2c_read8(me->i2c_port, me->i2c_addr_flags + page,
- reg, val);
+ return i2c_read8(me->i2c_port, me->i2c_addr_flags + page, reg, val);
}
static int ps8822_write(const struct usb_mux *me, int page, uint8_t reg,
int val)
{
- return i2c_write8(me->i2c_port, me->i2c_addr_flags + page,
- reg, val);
+ return i2c_write8(me->i2c_port, me->i2c_addr_flags + page, reg, val);
}
int ps8822_set_dp_rx_eq(const struct usb_mux *me, int db)
@@ -32,8 +30,7 @@ int ps8822_set_dp_rx_eq(const struct usb_mux *me, int db)
int rv;
/* Read DP EQ register */
- rv = ps8822_read(me, PS8822_REG_PAGE1, PS8822_REG_DP_EQ,
- &dpeq_reg);
+ rv = ps8822_read(me, PS8822_REG_PAGE1, PS8822_REG_DP_EQ, &dpeq_reg);
if (rv)
return rv;
@@ -44,13 +41,11 @@ int ps8822_set_dp_rx_eq(const struct usb_mux *me, int db)
dpeq_reg &= ~PS8822_DP_EQ_AUTO_EN;
/* Set gain to the requested value */
- dpeq_reg &= ~(PS8822_DPEQ_LEVEL_UP_MASK <<
- PS8822_REG_DP_EQ_SHIFT);
+ dpeq_reg &= ~(PS8822_DPEQ_LEVEL_UP_MASK << PS8822_REG_DP_EQ_SHIFT);
dpeq_reg |= (db << PS8822_REG_DP_EQ_SHIFT);
/* Apply new EQ setting */
- return ps8822_write(me, PS8822_REG_PAGE1, PS8822_REG_DP_EQ,
- dpeq_reg);
+ return ps8822_write(me, PS8822_REG_PAGE1, PS8822_REG_DP_EQ, dpeq_reg);
}
static int ps8822_init(const struct usb_mux *me)
@@ -88,6 +83,10 @@ static int ps8822_set_mux(const struct usb_mux *me, mux_state_t mux_state,
/* This driver does not use host command ACKs */
*ack_required = false;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
rv = ps8822_read(me, PS8822_REG_PAGE0, PS8822_REG_MODE, &reg);
if (rv)
return rv;
@@ -126,7 +125,6 @@ static int ps8822_get_mux(const struct usb_mux *me, mux_state_t *mux_state)
return EC_SUCCESS;
}
-
const struct usb_mux_driver ps8822_usb_mux_driver = {
.init = ps8822_init,
.set = ps8822_set_mux,
diff --git a/driver/usb_mux/ps8822.h b/driver/usb_mux/ps8822.h
index 86b911db70..4f7503b21b 100644
--- a/driver/usb_mux/ps8822.h
+++ b/driver/usb_mux/ps8822.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+/* Copyright 2021 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -11,48 +11,48 @@
#include "usb_mux.h"
-#define PS8822_I2C_ADDR0_FLAG 0x10
-#define PS8822_I2C_ADDR1_FLAG 0x18
-#define PS8822_I2C_ADDR2_FLAG 0x58
-#define PS8822_I2C_ADDR3_FLAG 0x60
+#define PS8822_I2C_ADDR0_FLAG 0x10
+#define PS8822_I2C_ADDR1_FLAG 0x18
+#define PS8822_I2C_ADDR2_FLAG 0x58
+#define PS8822_I2C_ADDR3_FLAG 0x60
-#define PS8822_REG_PAGE0 0x00
+#define PS8822_REG_PAGE0 0x00
/* Mode register for setting mux */
-#define PS8822_REG_MODE 0x01
-#define PS8822_MODE_ALT_DP_EN BIT(7)
-#define PS8822_MODE_USB_EN BIT(6)
-#define PS8822_MODE_FLIP BIT(5)
-#define PS8822_MODE_PIN_E BIT(4)
+#define PS8822_REG_MODE 0x01
+#define PS8822_MODE_ALT_DP_EN BIT(7)
+#define PS8822_MODE_USB_EN BIT(6)
+#define PS8822_MODE_FLIP BIT(5)
+#define PS8822_MODE_PIN_E BIT(4)
-#define PS8822_REG_CONFIG 0x02
+#define PS8822_REG_CONFIG 0x02
#define PS8822_CONFIG_HPD_IN_DIS BIT(7)
-#define PS8822_CONFIG_DP_PLUG BIT(6)
+#define PS8822_CONFIG_DP_PLUG BIT(6)
-#define PS8822_REG_DEV_ID1 0x06
-#define PS8822_REG_DEV_ID2 0x07
-#define PS8822_REG_DEV_ID3 0x08
-#define PS8822_REG_DEV_ID4 0x09
-#define PS8822_REG_DEV_ID5 0x0A
-#define PS8822_REG_DEV_ID6 0x0B
+#define PS8822_REG_DEV_ID1 0x06
+#define PS8822_REG_DEV_ID2 0x07
+#define PS8822_REG_DEV_ID3 0x08
+#define PS8822_REG_DEV_ID4 0x09
+#define PS8822_REG_DEV_ID5 0x0A
+#define PS8822_REG_DEV_ID6 0x0B
#define PS8822_ID_LEN 6
-#define PS8822_REG_PAGE1 0x01
-#define PS8822_REG_DP_EQ 0xB6
-#define PS8822_DP_EQ_AUTO_EN BIT(7)
+#define PS8822_REG_PAGE1 0x01
+#define PS8822_REG_DP_EQ 0xB6
+#define PS8822_DP_EQ_AUTO_EN BIT(7)
-#define PS8822_DPEQ_LEVEL_UP_9DB 0x00
-#define PS8822_DPEQ_LEVEL_UP_11DB 0x01
-#define PS8822_DPEQ_LEVEL_UP_12DB 0x02
-#define PS8822_DPEQ_LEVEL_UP_14DB 0x03
-#define PS8822_DPEQ_LEVEL_UP_17DB 0x04
-#define PS8822_DPEQ_LEVEL_UP_18DB 0x05
-#define PS8822_DPEQ_LEVEL_UP_19DB 0x06
-#define PS8822_DPEQ_LEVEL_UP_20DB 0x07
-#define PS8822_DPEQ_LEVEL_UP_21DB 0x08
-#define PS8822_DPEQ_LEVEL_UP_MASK 0x0F
-#define PS8822_REG_DP_EQ_SHIFT 3
+#define PS8822_DPEQ_LEVEL_UP_9DB 0x00
+#define PS8822_DPEQ_LEVEL_UP_11DB 0x01
+#define PS8822_DPEQ_LEVEL_UP_12DB 0x02
+#define PS8822_DPEQ_LEVEL_UP_14DB 0x03
+#define PS8822_DPEQ_LEVEL_UP_17DB 0x04
+#define PS8822_DPEQ_LEVEL_UP_18DB 0x05
+#define PS8822_DPEQ_LEVEL_UP_19DB 0x06
+#define PS8822_DPEQ_LEVEL_UP_20DB 0x07
+#define PS8822_DPEQ_LEVEL_UP_21DB 0x08
+#define PS8822_DPEQ_LEVEL_UP_MASK 0x0F
+#define PS8822_REG_DP_EQ_SHIFT 3
/**
* Set DP Rx Equalization value
diff --git a/driver/usb_mux/tusb1064.c b/driver/usb_mux/tusb1064.c
index 0d48725d40..7fd6cfe561 100644
--- a/driver/usb_mux/tusb1064.c
+++ b/driver/usb_mux/tusb1064.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+/* Copyright 2021 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
@@ -7,27 +7,27 @@
#include "tusb1064.h"
#include "usb_mux.h"
-#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
-#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args)
+#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ##args)
+#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ##args)
#if defined(CONFIG_USB_MUX_TUSB1044) + defined(CONFIG_USB_MUX_TUSB1064) + \
- defined(CONFIG_USB_MUX_TUSB546) != 1
+ defined(CONFIG_USB_MUX_TUSB546) != \
+ 1
#error "Must choose exactly one of CONFIG_USB_MUX_TUSB{546,1044,1064}"
#endif
static int tusb1064_read(const struct usb_mux *me, uint8_t reg, uint8_t *val)
{
int buffer = 0xee;
- int res = i2c_read8(me->i2c_port, me->i2c_addr_flags,
- (int)reg, &buffer);
+ int res =
+ i2c_read8(me->i2c_port, me->i2c_addr_flags, (int)reg, &buffer);
*val = buffer;
return res;
}
static int tusb1064_write(const struct usb_mux *me, uint8_t reg, uint8_t val)
{
- return i2c_write8(me->i2c_port, me->i2c_addr_flags,
- (int)reg, (int)val);
+ return i2c_write8(me->i2c_port, me->i2c_addr_flags, (int)reg, (int)val);
}
#if defined(CONFIG_USB_MUX_TUSB1044)
@@ -96,13 +96,17 @@ static int tusb1064_set_mux(const struct usb_mux *me, mux_state_t mux_state,
int rv;
int mask;
+ /* This driver treats safe mode as none */
+ if (mux_state == USB_PD_MUX_SAFE_MODE)
+ mux_state = USB_PD_MUX_NONE;
+
rv = tusb1064_read(me, TUSB1064_REG_GENERAL, &reg);
if (rv)
return rv;
/* Mask bits that may be set in this function */
mask = REG_GENERAL_CTLSEL_USB3 | REG_GENERAL_CTLSEL_ANYDP |
- REG_GENERAL_FLIPSEL;
+ REG_GENERAL_FLIPSEL;
#if defined(CONFIG_USB_MUX_TUSB1044) || defined(CONFIG_USB_MUX_TUSB546)
mask |= REG_GENERAL_HPDIN_OVERRIDE;
#endif
diff --git a/driver/usb_mux/tusb1064.h b/driver/usb_mux/tusb1064.h
index d6eb649532..1a38290174 100644
--- a/driver/usb_mux/tusb1064.h
+++ b/driver/usb_mux/tusb1064.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
+/* Copyright 2021 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
@@ -17,43 +17,43 @@
* F -> floating
* 1 -> tied to VCC
*/
-#define TUSB1064_I2C_ADDR0_FLAGS 0x44
-#define TUSB1064_I2C_ADDR1_FLAGS 0x45
-#define TUSB1064_I2C_ADDR2_FLAGS 0x46
-#define TUSB1064_I2C_ADDR3_FLAGS 0x47
-#define TUSB1064_I2C_ADDR4_FLAGS 0x20
-#define TUSB1064_I2C_ADDR5_FLAGS 0x21
-#define TUSB1064_I2C_ADDR6_FLAGS 0x22
-#define TUSB1064_I2C_ADDR7_FLAGS 0x23
-#define TUSB1064_I2C_ADDR8_FLAGS 0x10
-#define TUSB1064_I2C_ADDR9_FLAGS 0x11
-#define TUSB1064_I2C_ADDR10_FLAGS 0x12
-#define TUSB1064_I2C_ADDR11_FLAGS 0x13
-#define TUSB1064_I2C_ADDR12_FLAGS 0x0C
-#define TUSB1064_I2C_ADDR13_FLAGS 0x0D
-#define TUSB1064_I2C_ADDR14_FLAGS 0x0E
-#define TUSB1064_I2C_ADDR15_FLAGS 0x0F
+#define TUSB1064_I2C_ADDR0_FLAGS 0x44
+#define TUSB1064_I2C_ADDR1_FLAGS 0x45
+#define TUSB1064_I2C_ADDR2_FLAGS 0x46
+#define TUSB1064_I2C_ADDR3_FLAGS 0x47
+#define TUSB1064_I2C_ADDR4_FLAGS 0x20
+#define TUSB1064_I2C_ADDR5_FLAGS 0x21
+#define TUSB1064_I2C_ADDR6_FLAGS 0x22
+#define TUSB1064_I2C_ADDR7_FLAGS 0x23
+#define TUSB1064_I2C_ADDR8_FLAGS 0x10
+#define TUSB1064_I2C_ADDR9_FLAGS 0x11
+#define TUSB1064_I2C_ADDR10_FLAGS 0x12
+#define TUSB1064_I2C_ADDR11_FLAGS 0x13
+#define TUSB1064_I2C_ADDR12_FLAGS 0x0C
+#define TUSB1064_I2C_ADDR13_FLAGS 0x0D
+#define TUSB1064_I2C_ADDR14_FLAGS 0x0E
+#define TUSB1064_I2C_ADDR15_FLAGS 0x0F
/* TUSB1064 General Register */
-#define TUSB1064_REG_GENERAL 0x0a
-#define REG_GENERAL_CTLSEL_USB3 BIT(0)
-#define REG_GENERAL_CTLSEL_ANYDP BIT(1)
-#define REG_GENERAL_FLIPSEL BIT(2)
+#define TUSB1064_REG_GENERAL 0x0a
+#define REG_GENERAL_CTLSEL_USB3 BIT(0)
+#define REG_GENERAL_CTLSEL_ANYDP BIT(1)
+#define REG_GENERAL_FLIPSEL BIT(2)
#if defined(CONFIG_USB_MUX_TUSB1044) || defined(CONFIG_USB_MUX_TUSB546)
-#define REG_GENERAL_HPDIN_OVERRIDE BIT(3)
+#define REG_GENERAL_HPDIN_OVERRIDE BIT(3)
#else
-#define REG_GENERAL_DP_EN_CTRL BIT(3)
+#define REG_GENERAL_DP_EN_CTRL BIT(3)
#endif
-#define REG_GENERAL_EQ_OVERRIDE BIT(4)
+#define REG_GENERAL_EQ_OVERRIDE BIT(4)
/* AUX and DP Lane Control Register */
-#define TUSB1064_REG_AUXDPCTRL 0x13
+#define TUSB1064_REG_AUXDPCTRL 0x13
#define TUSB1064_AUXDPCTRL_AUX_SNOOP_DISABLE BIT(7)
-#define TUSB1064_AUXDPCTRL_AUX_SBU_OVR 0x30
-#define TUSB1064_AUXDPCTRL_DP3_DISABLE BIT(3)
-#define TUSB1064_AUXDPCTRL_DP2_DISABLE BIT(2)
-#define TUSB1064_AUXDPCTRL_DP1_DISABLE BIT(1)
-#define TUSB1064_AUXDPCTRL_DP0_DISABLE BIT(0)
+#define TUSB1064_AUXDPCTRL_AUX_SBU_OVR 0x30
+#define TUSB1064_AUXDPCTRL_DP3_DISABLE BIT(3)
+#define TUSB1064_AUXDPCTRL_DP2_DISABLE BIT(2)
+#define TUSB1064_AUXDPCTRL_DP1_DISABLE BIT(1)
+#define TUSB1064_AUXDPCTRL_DP0_DISABLE BIT(0)
/* Receiver Equalization GPIO Control */
#define TUSB1064_REG_DP1DP3EQ_SEL 0x10
@@ -78,19 +78,18 @@
#define TUSB1064_DP_EQ_RX_12_1_DB 0xF
#ifndef TUSB1064_DP1EQ
-#define TUSB1064_DP1EQ(nr) ((nr) << 4)
+#define TUSB1064_DP1EQ(nr) ((nr) << 4)
#endif
#ifndef TUSB1064_DP3EQ
-#define TUSB1064_DP3EQ(nr) ((nr) << 0)
+#define TUSB1064_DP3EQ(nr) ((nr) << 0)
#endif
#ifndef TUSB1064_DP0EQ
-#define TUSB1064_DP0EQ(nr) ((nr) << 4)
+#define TUSB1064_DP0EQ(nr) ((nr) << 4)
#endif
#ifndef TUSB1064_DP2EQ
-#define TUSB1064_DP2EQ(nr) ((nr) << 0)
+#define TUSB1064_DP2EQ(nr) ((nr) << 0)
#endif
-
/* TUSB1064 Receiver Equalization GPIO Control */
#define TUSB1064_REG_SSRX2RX1EQ_SEL 0x20
#define TUSB1064_REG_SSTXEQ_SEL 0x21
diff --git a/driver/usb_mux/usb_mux.c b/driver/usb_mux/usb_mux.c
index 1dea4b8d29..1edcf25179 100644
--- a/driver/usb_mux/usb_mux.c
+++ b/driver/usb_mux/usb_mux.c
@@ -1,4 +1,4 @@
-/* Copyright 2015 The Chromium OS Authors. All rights reserved.
+/* Copyright 2015 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
@@ -6,9 +6,11 @@
/* USB mux high-level driver. */
#include "atomic.h"
+#include "builtin/assert.h"
#include "common.h"
#include "console.h"
#include "chipset.h"
+#include "ec_commands.h"
#include "hooks.h"
#include "host_command.h"
#include "queue.h"
@@ -19,8 +21,8 @@
#include "util.h"
#ifdef CONFIG_COMMON_RUNTIME
-#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
-#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args)
+#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ##args)
+#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ##args)
#else
#define CPRINTS(format, args...)
#define CPRINTF(format, args...)
@@ -35,17 +37,18 @@ static int enable_debug_prints;
static atomic_t flags[CONFIG_USB_PD_PORT_MAX_COUNT];
/* Device is in low power mode. */
-#define USB_MUX_FLAG_IN_LPM BIT(0)
+#define USB_MUX_FLAG_IN_LPM BIT(0)
/* Device initialized at least once */
-#define USB_MUX_FLAG_INIT BIT(1)
+#define USB_MUX_FLAG_INIT BIT(1)
/* Coordinate mux accesses by-port among the tasks */
static mutex_t mux_lock[CONFIG_USB_PD_PORT_MAX_COUNT];
/* Coordinate which task requires an ACK event */
static task_id_t ack_task[CONFIG_USB_PD_PORT_MAX_COUNT] = {
- [0 ... CONFIG_USB_PD_PORT_MAX_COUNT - 1] = TASK_ID_INVALID };
+ [0 ... CONFIG_USB_PD_PORT_MAX_COUNT - 1] = TASK_ID_INVALID
+};
static void perform_mux_set(int port, int index, mux_state_t mux_mode,
enum usb_switch usb_mode, int polarity);
@@ -60,9 +63,6 @@ enum mux_config_type {
USB_MUX_HPD_UPDATE,
};
-/* Set all muxes for this board's port */
-#define USB_MUX_ALL_CHIPS -1
-
/* Define a USB mux task ID for the purpose of linking */
#ifndef HAS_TASK_USB_MUX
#define TASK_ID_USB_MUX TASK_ID_INVALID
@@ -79,7 +79,7 @@ enum mux_config_type {
* Depth must be a power of 2, which is normally enforced by the queue init
* code, but must be manually enforced here.
*/
-#define MUX_QUEUE_DEPTH 4
+#define MUX_QUEUE_DEPTH 4
BUILD_ASSERT(POWER_OF_TWO(MUX_QUEUE_DEPTH));
/* Define in order to enable debug info about how long the queue takes */
@@ -87,10 +87,10 @@ BUILD_ASSERT(POWER_OF_TWO(MUX_QUEUE_DEPTH));
struct mux_queue_entry {
enum mux_config_type type;
- int index; /* Index to set, or USB_MUX_ALL_CHIPS */
- mux_state_t mux_mode; /* For both HPD and mux set */
- enum usb_switch usb_config; /* Set only */
- int polarity; /* Set only */
+ int index; /* Index to set, or TYPEC_USB_MUX_SET_ALL_CHIPS */
+ mux_state_t mux_mode; /* For both HPD and mux set */
+ enum usb_switch usb_config; /* Set only */
+ int polarity; /* Set only */
#ifdef DEBUG_MUX_QUEUE_TIME
timestamp_t enqueued_time;
#endif
@@ -108,10 +108,9 @@ struct mux_queue_entry {
*/
static struct queue mux_queue[CONFIG_USB_PD_PORT_MAX_COUNT];
__maybe_unused static struct queue_state
- queue_states[CONFIG_USB_PD_PORT_MAX_COUNT];
+ queue_states[CONFIG_USB_PD_PORT_MAX_COUNT];
__maybe_unused static struct mux_queue_entry
- queue_buffers[CONFIG_USB_PD_PORT_MAX_COUNT]
- [MUX_QUEUE_DEPTH];
+ queue_buffers[CONFIG_USB_PD_PORT_MAX_COUNT][MUX_QUEUE_DEPTH];
static mutex_t queue_lock[CONFIG_USB_PD_PORT_MAX_COUNT];
#else
extern struct queue const mux_queue[];
@@ -136,11 +135,9 @@ static int init_mux_mutex(const struct device *dev)
SYS_INIT(init_mux_mutex, POST_KERNEL, 50);
#endif /* CONFIG_ZEPHYR */
-__maybe_unused static void mux_task_enqueue(int port, int index,
- enum mux_config_type type,
- mux_state_t mux_mode,
- enum usb_switch usb_config,
- int polarity)
+__maybe_unused static void
+mux_task_enqueue(int port, int index, enum mux_config_type type,
+ mux_state_t mux_mode, enum usb_switch usb_config, int polarity)
{
struct mux_queue_entry new_entry;
@@ -177,7 +174,7 @@ static void init_queue_structs(void)
mux_queue[i].buffer_units = MUX_QUEUE_DEPTH;
mux_queue[i].buffer_units_mask = MUX_QUEUE_DEPTH - 1;
mux_queue[i].unit_bytes = sizeof(struct mux_queue_entry);
- mux_queue[i].buffer = (uint8_t *) &queue_buffers[i][0];
+ mux_queue[i].buffer = (uint8_t *)&queue_buffers[i][0];
}
}
DECLARE_HOOK(HOOK_INIT, init_queue_structs, HOOK_PRIO_FIRST);
@@ -227,7 +224,8 @@ __maybe_unused void usb_mux_task(void *u)
next.mux_mode);
else
CPRINTS("Error: Unknown mux task type:"
- "%d", next.type);
+ "%d",
+ next.type);
#ifdef DEBUG_MUX_QUEUE_TIME
CPRINTS("C%d: Completed mux set queued %d "
@@ -254,16 +252,14 @@ __maybe_unused void usb_mux_task(void *u)
}
/* Configure the MUX */
-static int configure_mux(int port, int index,
- enum mux_config_type config,
+static int configure_mux(int port, int index, enum mux_config_type config,
mux_state_t *mux_state)
{
int rv = EC_SUCCESS;
- const struct usb_mux *mux_ptr;
+ const struct usb_mux_chain *mux_chain;
int chip = 0;
- if (config == USB_MUX_SET_MODE ||
- config == USB_MUX_GET_MODE) {
+ if (config == USB_MUX_SET_MODE || config == USB_MUX_GET_MODE) {
if (mux_state == NULL)
return EC_ERROR_INVAL;
@@ -276,14 +272,15 @@ static int configure_mux(int port, int index,
* MUXes. So when we change one, we traverse the whole list
* to make sure they are all updated appropriately.
*/
- for (mux_ptr = &usb_muxes[port];
- rv == EC_SUCCESS && mux_ptr != NULL;
- mux_ptr = mux_ptr->next_mux, chip++) {
+ for (mux_chain = &usb_muxes[port];
+ rv == EC_SUCCESS && mux_chain != NULL && mux_chain->mux != NULL;
+ mux_chain = mux_chain->next, chip++) {
mux_state_t lcl_state;
+ const struct usb_mux *mux_ptr = mux_chain->mux;
const struct usb_mux_driver *drv = mux_ptr->driver;
bool ack_required = false;
- if (index != USB_MUX_ALL_CHIPS && index != chip)
+ if (index != TYPEC_USB_MUX_SET_ALL_CHIPS && index != chip)
continue;
/* Action time! Lock this mux */
@@ -321,6 +318,10 @@ static int configure_mux(int port, int index,
if (mux_ptr->flags & USB_MUX_FLAG_SET_WITHOUT_FLIP)
lcl_state &= ~USB_PD_MUX_POLARITY_INVERTED;
+ if ((lcl_state != USB_PD_MUX_NONE) &&
+ (mux_ptr->flags & USB_MUX_FLAG_POLARITY_INVERTED))
+ lcl_state ^= USB_PD_MUX_POLARITY_INVERTED;
+
if (drv && drv->set) {
rv = drv->set(mux_ptr, lcl_state,
&ack_required);
@@ -335,10 +336,12 @@ static int configure_mux(int port, int index,
/* Inform the AP its selected mux is set */
if (IS_ENABLED(CONFIG_USB_MUX_AP_CONTROL)) {
if (chip == 0)
- pd_notify_event(port,
+ pd_notify_event(
+ port,
PD_STATUS_EVENT_MUX_0_SET_DONE);
else if (chip == 1)
- pd_notify_event(port,
+ pd_notify_event(
+ port,
PD_STATUS_EVENT_MUX_1_SET_DONE);
}
@@ -363,7 +366,6 @@ static int configure_mux(int port, int index,
if (mux_ptr->hpd_update)
mux_ptr->hpd_update(mux_ptr, *mux_state,
&ack_required);
-
}
/* Unlock before any host command waits */
@@ -380,10 +382,10 @@ static int configure_mux(int port, int index,
assert(task_get_current() == TASK_ID_USB_MUX);
} else {
#if defined(CONFIG_ZEPHYR) && defined(TEST_BUILD)
- assert(port ==
- TASK_ID_TO_PD_PORT(task_get_current()) ||
+ assert(port == TASK_ID_TO_PD_PORT(
+ task_get_current()) ||
task_get_current() ==
- TASK_ID_TEST_RUNNER);
+ TASK_ID_TEST_RUNNER);
#else
assert(port ==
TASK_ID_TO_PD_PORT(task_get_current()));
@@ -397,7 +399,7 @@ static int configure_mux(int port, int index,
* mux, but could be made configurable for other
* purposes.
*/
- task_wait_event_mask(PD_EVENT_AP_MUX_DONE, 100*MSEC);
+ task_wait_event_mask(PD_EVENT_AP_MUX_DONE, 100 * MSEC);
ack_task[port] = TASK_ID_INVALID;
usleep(12.5 * MSEC);
@@ -405,8 +407,7 @@ static int configure_mux(int port, int index,
}
if (rv)
- CPRINTS("mux config:%d, port:%d, rv:%d",
- config, port, rv);
+ CPRINTS("mux config:%d, port:%d, rv:%d", config, port, rv);
return rv;
}
@@ -421,7 +422,8 @@ static void enter_low_power_mode(int port)
atomic_or(&flags[port], USB_MUX_FLAG_IN_LPM);
/* Apply any low power customization if present */
- configure_mux(port, USB_MUX_ALL_CHIPS, USB_MUX_LOW_POWER, NULL);
+ configure_mux(port, TYPEC_USB_MUX_SET_ALL_CHIPS, USB_MUX_LOW_POWER,
+ NULL);
}
static int exit_low_power_mode(int port)
@@ -453,7 +455,8 @@ void usb_mux_init(int port)
return;
}
- rv = configure_mux(port, USB_MUX_ALL_CHIPS, USB_MUX_INIT, NULL);
+ rv = configure_mux(port, TYPEC_USB_MUX_SET_ALL_CHIPS, USB_MUX_INIT,
+ NULL);
if (rv == EC_SUCCESS)
atomic_or(&flags[port], USB_MUX_FLAG_INIT);
@@ -474,7 +477,7 @@ static void perform_mux_set(int port, int index, mux_state_t mux_mode,
mux_state_t mux_state;
const int should_enter_low_power_mode =
(mux_mode == USB_PD_MUX_NONE &&
- usb_mode == USB_SWITCH_DISCONNECT);
+ usb_mode == USB_SWITCH_DISCONNECT);
/* Perform initialization if not initialized yet */
if (!(flags[port] & USB_MUX_FLAG_INIT))
@@ -496,17 +499,16 @@ static void perform_mux_set(int port, int index, mux_state_t mux_mode,
return;
/* Configure superspeed lanes */
- mux_state = ((mux_mode != USB_PD_MUX_NONE) && polarity)
- ? mux_mode | USB_PD_MUX_POLARITY_INVERTED
- : mux_mode;
+ mux_state = ((mux_mode != USB_PD_MUX_NONE) && polarity) ?
+ mux_mode | USB_PD_MUX_POLARITY_INVERTED :
+ mux_mode;
if (configure_mux(port, index, USB_MUX_SET_MODE, &mux_state))
return;
if (enable_debug_prints)
- CPRINTS(
- "usb/dp mux: port(%d) typec_mux(%d) usb2(%d) polarity(%d)",
- port, mux_mode, usb_mode, polarity);
+ CPRINTS("usb/dp mux: port(%d) typec_mux(%d) usb2(%d) polarity(%d)",
+ port, mux_mode, usb_mode, polarity);
/*
* If we are completely disconnecting the mux, then we should put it in
@@ -516,20 +518,20 @@ static void perform_mux_set(int port, int index, mux_state_t mux_mode,
enter_low_power_mode(port);
}
-void usb_mux_set(int port, mux_state_t mux_mode,
- enum usb_switch usb_mode, int polarity)
+void usb_mux_set(int port, mux_state_t mux_mode, enum usb_switch usb_mode,
+ int polarity)
{
if (port >= board_get_usb_pd_port_count())
return;
/* Block if we have no mux task, but otherwise queue it up and return */
if (IS_ENABLED(HAS_TASK_USB_MUX))
- mux_task_enqueue(port, USB_MUX_ALL_CHIPS,
- USB_MUX_SET_MODE, mux_mode,
- usb_mode, polarity);
+ mux_task_enqueue(port, TYPEC_USB_MUX_SET_ALL_CHIPS,
+ USB_MUX_SET_MODE, mux_mode, usb_mode,
+ polarity);
else
- perform_mux_set(port, USB_MUX_ALL_CHIPS,
- mux_mode, usb_mode, polarity);
+ perform_mux_set(port, TYPEC_USB_MUX_SET_ALL_CHIPS, mux_mode,
+ usb_mode, polarity);
}
void usb_mux_set_single(int port, int index, mux_state_t mux_mode,
@@ -540,12 +542,10 @@ void usb_mux_set_single(int port, int index, mux_state_t mux_mode,
/* Block if we have no mux task, but otherwise queue it up and return */
if (IS_ENABLED(HAS_TASK_USB_MUX))
- mux_task_enqueue(port, index,
- USB_MUX_SET_MODE, mux_mode,
+ mux_task_enqueue(port, index, USB_MUX_SET_MODE, mux_mode,
usb_mode, polarity);
else
- perform_mux_set(port, index,
- mux_mode, usb_mode, polarity);
+ perform_mux_set(port, index, mux_mode, usb_mode, polarity);
}
bool usb_mux_set_completed(int port)
@@ -561,9 +561,9 @@ bool usb_mux_set_completed(int port)
mutex_lock(&queue_lock[port]);
for (queue_begin(&mux_queue[port], &it); it.ptr != NULL;
- queue_next(&mux_queue[port], &it)) {
+ queue_next(&mux_queue[port], &it)) {
const struct mux_queue_entry *check =
- (struct mux_queue_entry *) it.ptr;
+ (struct mux_queue_entry *)it.ptr;
if (check->type == USB_MUX_SET_MODE) {
sets_pending = true;
@@ -590,8 +590,8 @@ static enum ec_error_list try_usb_mux_get(int port, mux_state_t *mux_state)
return EC_SUCCESS;
}
- return configure_mux(port, USB_MUX_ALL_CHIPS, USB_MUX_GET_MODE,
- mux_state);
+ return configure_mux(port, TYPEC_USB_MUX_SET_ALL_CHIPS,
+ USB_MUX_GET_MODE, mux_state);
}
mux_state_t usb_mux_get(int port)
@@ -619,7 +619,7 @@ void usb_mux_flip(int port)
if (exit_low_power_mode(port) != EC_SUCCESS)
return;
- if (configure_mux(port, USB_MUX_ALL_CHIPS, USB_MUX_GET_MODE,
+ if (configure_mux(port, TYPEC_USB_MUX_SET_ALL_CHIPS, USB_MUX_GET_MODE,
&mux_state))
return;
@@ -628,7 +628,8 @@ void usb_mux_flip(int port)
else
mux_state |= USB_PD_MUX_POLARITY_INVERTED;
- configure_mux(port, USB_MUX_ALL_CHIPS, USB_MUX_SET_MODE, &mux_state);
+ configure_mux(port, TYPEC_USB_MUX_SET_ALL_CHIPS, USB_MUX_SET_MODE,
+ &mux_state);
}
static void perform_mux_hpd_update(int port, int index, mux_state_t hpd_state)
@@ -650,10 +651,11 @@ void usb_mux_hpd_update(int port, mux_state_t hpd_state)
/* Send to the mux task if present to maintain sequencing with sets */
if (IS_ENABLED(HAS_TASK_USB_MUX))
- mux_task_enqueue(port, USB_MUX_ALL_CHIPS, USB_MUX_HPD_UPDATE,
- hpd_state, 0, 0);
+ mux_task_enqueue(port, TYPEC_USB_MUX_SET_ALL_CHIPS,
+ USB_MUX_HPD_UPDATE, hpd_state, 0, 0);
else
- perform_mux_hpd_update(port, USB_MUX_ALL_CHIPS, hpd_state);
+ perform_mux_hpd_update(port, TYPEC_USB_MUX_SET_ALL_CHIPS,
+ hpd_state);
}
int usb_mux_retimer_fw_update_port_info(void)
@@ -661,15 +663,17 @@ int usb_mux_retimer_fw_update_port_info(void)
int i;
int port_info = 0;
const struct usb_mux *mux_ptr;
+ const struct usb_mux_chain *mux_chain;
for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) {
- mux_ptr = &usb_muxes[i];
- while (mux_ptr) {
+ mux_chain = &usb_muxes[i];
+ while (mux_chain && mux_chain->mux) {
+ mux_ptr = mux_chain->mux;
if (mux_ptr->driver &&
- mux_ptr->driver->is_retimer_fw_update_capable &&
- mux_ptr->driver->is_retimer_fw_update_capable())
+ mux_ptr->driver->is_retimer_fw_update_capable &&
+ mux_ptr->driver->is_retimer_fw_update_capable())
port_info |= BIT(i);
- mux_ptr = mux_ptr->next_mux;
+ mux_chain = mux_chain->next;
}
}
return port_info;
@@ -680,8 +684,8 @@ static void mux_chipset_reset(void)
int port;
for (port = 0; port < board_get_usb_pd_port_count(); ++port)
- configure_mux(port, USB_MUX_ALL_CHIPS, USB_MUX_CHIPSET_RESET,
- NULL);
+ configure_mux(port, TYPEC_USB_MUX_SET_ALL_CHIPS,
+ USB_MUX_CHIPSET_RESET, NULL);
}
DECLARE_HOOK(HOOK_CHIPSET_RESET, mux_chipset_reset, HOOK_PRIO_DEFAULT);
@@ -693,26 +697,28 @@ static void usb_mux_reset_in_g3(void)
{
int port;
const struct usb_mux *mux_ptr;
+ const struct usb_mux_chain *mux_chain;
for (port = 0; port < board_get_usb_pd_port_count(); port++) {
- mux_ptr = &usb_muxes[port];
+ mux_chain = &usb_muxes[port];
- while (mux_ptr) {
+ while (mux_chain && mux_chain->mux) {
+ mux_ptr = mux_chain->mux;
if (mux_ptr->flags & USB_MUX_FLAG_RESETS_IN_G3) {
atomic_clear_bits(&flags[port],
USB_MUX_FLAG_INIT |
- USB_MUX_FLAG_IN_LPM);
+ USB_MUX_FLAG_IN_LPM);
}
- mux_ptr = mux_ptr->next_mux;
+ mux_chain = mux_chain->next;
}
}
}
DECLARE_HOOK(HOOK_CHIPSET_HARD_OFF, usb_mux_reset_in_g3, HOOK_PRIO_DEFAULT);
#ifdef CONFIG_CMD_TYPEC
-static int command_typec(int argc, char **argv)
+static int command_typec(int argc, const char **argv)
{
- const char * const mux_name[] = {"none", "usb", "dp", "dock"};
+ const char *const mux_name[] = { "none", "usb", "dp", "dock" };
char *e;
int port;
mux_state_t mux = USB_PD_MUX_NONE;
@@ -735,16 +741,16 @@ static int command_typec(int argc, char **argv)
mux_state = usb_mux_get(port);
ccprintf("Port %d: USB=%d DP=%d POLARITY=%s HPD_IRQ=%d "
- "HPD_LVL=%d SAFE=%d TBT=%d USB4=%d\n", port,
- !!(mux_state & USB_PD_MUX_USB_ENABLED),
- !!(mux_state & USB_PD_MUX_DP_ENABLED),
- mux_state & USB_PD_MUX_POLARITY_INVERTED ?
- "INVERTED" : "NORMAL",
- !!(mux_state & USB_PD_MUX_HPD_IRQ),
- !!(mux_state & USB_PD_MUX_HPD_LVL),
- !!(mux_state & USB_PD_MUX_SAFE_MODE),
- !!(mux_state & USB_PD_MUX_TBT_COMPAT_ENABLED),
- !!(mux_state & USB_PD_MUX_USB4_ENABLED));
+ "HPD_LVL=%d SAFE=%d TBT=%d USB4=%d\n",
+ port, !!(mux_state & USB_PD_MUX_USB_ENABLED),
+ !!(mux_state & USB_PD_MUX_DP_ENABLED),
+ mux_state & USB_PD_MUX_POLARITY_INVERTED ? "INVERTED" :
+ "NORMAL",
+ !!(mux_state & USB_PD_MUX_HPD_IRQ),
+ !!(mux_state & USB_PD_MUX_HPD_LVL),
+ !!(mux_state & USB_PD_MUX_SAFE_MODE),
+ !!(mux_state & USB_PD_MUX_TBT_COMPAT_ENABLED),
+ !!(mux_state & USB_PD_MUX_USB4_ENABLED));
return EC_SUCCESS;
}
@@ -752,14 +758,13 @@ static int command_typec(int argc, char **argv)
for (i = 0; i < ARRAY_SIZE(mux_name); i++)
if (!strcasecmp(argv[2], mux_name[i]))
mux = i;
- usb_mux_set(port, mux, mux == USB_PD_MUX_NONE ?
- USB_SWITCH_DISCONNECT :
- USB_SWITCH_CONNECT,
- polarity_rm_dts(pd_get_polarity(port)));
+ usb_mux_set(port, mux,
+ mux == USB_PD_MUX_NONE ? USB_SWITCH_DISCONNECT :
+ USB_SWITCH_CONNECT,
+ polarity_rm_dts(pd_get_polarity(port)));
return EC_SUCCESS;
}
-DECLARE_CONSOLE_COMMAND(typec, command_typec,
- "[port|debug] [none|usb|dp|dock]",
+DECLARE_CONSOLE_COMMAND(typec, command_typec, "[port|debug] [none|usb|dp|dock]",
"Control type-C connector muxing");
#endif
@@ -786,8 +791,7 @@ static enum ec_status hc_usb_pd_mux_info(struct host_cmd_handler_args *args)
args->response_size = sizeof(*r);
return EC_RES_SUCCESS;
}
-DECLARE_HOST_COMMAND(EC_CMD_USB_PD_MUX_INFO,
- hc_usb_pd_mux_info,
+DECLARE_HOST_COMMAND(EC_CMD_USB_PD_MUX_INFO, hc_usb_pd_mux_info,
EC_VER_MASK(0));
static enum ec_status hc_usb_pd_mux_ack(struct host_cmd_handler_args *args)
@@ -802,6 +806,4 @@ static enum ec_status hc_usb_pd_mux_ack(struct host_cmd_handler_args *args)
return EC_RES_SUCCESS;
}
-DECLARE_HOST_COMMAND(EC_CMD_USB_PD_MUX_ACK,
- hc_usb_pd_mux_ack,
- EC_VER_MASK(0));
+DECLARE_HOST_COMMAND(EC_CMD_USB_PD_MUX_ACK, hc_usb_pd_mux_ack, EC_VER_MASK(0));
diff --git a/driver/usb_mux/virtual.c b/driver/usb_mux/virtual.c
index 23987fd676..417a48c577 100644
--- a/driver/usb_mux/virtual.c
+++ b/driver/usb_mux/virtual.c
@@ -1,4 +1,4 @@
-/* Copyright 2016 The Chromium OS Authors. All rights reserved.
+/* Copyright 2016 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
@@ -18,11 +18,11 @@
* configures the HPD mux state. Both states are independent of each other
* may differ when the PD role changes when in dock mode.
*/
-#define USB_PD_MUX_HPD_STATE (USB_PD_MUX_HPD_LVL | USB_PD_MUX_HPD_IRQ)
-#define USB_PD_MUX_USB_DP_STATE (USB_PD_MUX_USB_ENABLED | \
- USB_PD_MUX_DP_ENABLED | USB_PD_MUX_POLARITY_INVERTED | \
- USB_PD_MUX_SAFE_MODE | USB_PD_MUX_TBT_COMPAT_ENABLED | \
- USB_PD_MUX_USB4_ENABLED)
+#define USB_PD_MUX_HPD_STATE (USB_PD_MUX_HPD_LVL | USB_PD_MUX_HPD_IRQ)
+#define USB_PD_MUX_USB_DP_STATE \
+ (USB_PD_MUX_USB_ENABLED | USB_PD_MUX_DP_ENABLED | \
+ USB_PD_MUX_POLARITY_INVERTED | USB_PD_MUX_SAFE_MODE | \
+ USB_PD_MUX_TBT_COMPAT_ENABLED | USB_PD_MUX_USB4_ENABLED)
static mux_state_t virtual_mux_state[CONFIG_USB_PD_PORT_MAX_COUNT];
@@ -82,7 +82,8 @@ static int virtual_set_mux(const struct usb_mux *me, mux_state_t mux_state,
* is still active. Otherwise, don't preserve HPD state.
*/
if (mux_state & USB_PD_MUX_DP_ENABLED)
- new_mux_state = (mux_state & ~USB_PD_MUX_HPD_STATE) |
+ new_mux_state =
+ (mux_state & ~USB_PD_MUX_HPD_STATE) |
(virtual_mux_state[port] & USB_PD_MUX_HPD_STATE);
else
new_mux_state = mux_state;
@@ -112,8 +113,8 @@ void virtual_hpd_update(const struct usb_mux *me, mux_state_t mux_state,
int port = me->usb_port;
/* Current HPD related mux status + existing USB & DP mux status */
- mux_state_t new_mux_state = mux_state |
- (virtual_mux_state[port] & USB_PD_MUX_USB_DP_STATE);
+ mux_state_t new_mux_state =
+ mux_state | (virtual_mux_state[port] & USB_PD_MUX_USB_DP_STATE);
virtual_mux_update_state(port, new_mux_state, ack_required);
}