summaryrefslogtreecommitdiff
path: root/driver/usb_mux/it5205.c
diff options
context:
space:
mode:
Diffstat (limited to 'driver/usb_mux/it5205.c')
-rw-r--r--driver/usb_mux/it5205.c40
1 files changed, 22 insertions, 18 deletions
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;