diff options
Diffstat (limited to 'driver/usb_mux/it5205.c')
-rw-r--r-- | driver/usb_mux/it5205.c | 40 |
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; |