summaryrefslogtreecommitdiff
path: root/driver/ppc/rt1739.c
diff options
context:
space:
mode:
Diffstat (limited to 'driver/ppc/rt1739.c')
-rw-r--r--driver/ppc/rt1739.c105
1 files changed, 43 insertions, 62 deletions
diff --git a/driver/ppc/rt1739.c b/driver/ppc/rt1739.c
index 7b08faac83..d89599a7ae 100644
--- a/driver/ppc/rt1739.c
+++ b/driver/ppc/rt1739.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 The Chromium OS Authors. All rights reserved.
+/* Copyright 2022 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
@@ -15,7 +15,6 @@
#include "usbc_ppc.h"
#include "util.h"
-
#if defined(CONFIG_USBC_PPC_VCONN) && !defined(CONFIG_USBC_PPC_POLARITY)
#error "Can't use set_vconn without set_polarity"
#endif
@@ -24,35 +23,28 @@
#define RT1739_FLAGS_FRS_ENABLED BIT(1)
static atomic_t flags[CONFIG_USB_PD_PORT_MAX_COUNT];
-#define CPRINTS(format, args...) cprints(CC_USBPD, format, ## args)
-#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args)
+#define CPRINTS(format, args...) cprints(CC_USBPD, format, ##args)
+#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ##args)
static int read_reg(uint8_t port, int reg, int *val)
{
- return i2c_read8(
- ppc_chips[port].i2c_port,
- ppc_chips[port].i2c_addr_flags,
- reg, val);
+ return i2c_read8(ppc_chips[port].i2c_port,
+ ppc_chips[port].i2c_addr_flags, reg, val);
}
static int write_reg(uint8_t port, int reg, int val)
{
- return i2c_write8(
- ppc_chips[port].i2c_port,
- ppc_chips[port].i2c_addr_flags,
- reg, val);
+ return i2c_write8(ppc_chips[port].i2c_port,
+ ppc_chips[port].i2c_addr_flags, reg, val);
}
static int update_reg(int port, int reg, int mask,
enum mask_update_action action)
{
- return i2c_update8(
- ppc_chips[port].i2c_port,
- ppc_chips[port].i2c_addr_flags,
- reg, mask, action);
+ return i2c_update8(ppc_chips[port].i2c_port,
+ ppc_chips[port].i2c_addr_flags, reg, mask, action);
}
-
static int rt1739_is_sourcing_vbus(int port)
{
return flags[port] & RT1739_FLAGS_SOURCE_ENABLED;
@@ -63,11 +55,11 @@ static int rt1739_vbus_source_enable(int port, int enable)
atomic_t prev_flag;
if (enable)
- prev_flag = atomic_or(&flags[port],
- RT1739_FLAGS_SOURCE_ENABLED);
+ prev_flag =
+ atomic_or(&flags[port], RT1739_FLAGS_SOURCE_ENABLED);
else
prev_flag = atomic_clear_bits(&flags[port],
- RT1739_FLAGS_SOURCE_ENABLED);
+ RT1739_FLAGS_SOURCE_ENABLED);
/* Return if status doesn't change */
if (!!(prev_flag & RT1739_FLAGS_SOURCE_ENABLED) == !!enable)
@@ -90,10 +82,8 @@ static int rt1739_vbus_source_enable(int port, int enable)
static int rt1739_vbus_sink_enable(int port, int enable)
{
- return update_reg(port, RT1739_REG_VBUS_SWITCH_CTRL,
- RT1739_HV_SNK_EN,
+ return update_reg(port, RT1739_REG_VBUS_SWITCH_CTRL, RT1739_HV_SNK_EN,
enable ? MASK_SET : MASK_CLR);
-
}
#ifdef CONFIG_CMD_PPC_DUMP
@@ -145,8 +135,7 @@ static int rt1739_is_vbus_present(int port)
#ifdef CONFIG_USBC_PPC_POLARITY
static int rt1739_set_polarity(int port, int polarity)
{
- return update_reg(port, RT1739_REG_VCONN_CTRL1,
- RT1739_VCONN_ORIENT,
+ return update_reg(port, RT1739_REG_VCONN_CTRL1, RT1739_VCONN_ORIENT,
polarity ? RT1739_VCONN_ORIENT_CC1 :
RT1739_VCONN_ORIENT_CC2);
}
@@ -155,9 +144,8 @@ static int rt1739_set_polarity(int port, int polarity)
#ifdef CONFIG_USBC_PPC_VCONN
static int rt1739_set_vconn(int port, int enable)
{
- return update_reg(port, RT1739_REG_VCONN_CTRL1,
- RT1739_VCONN_EN,
- enable ? MASK_SET : MASK_CLR);
+ return update_reg(port, RT1739_REG_VCONN_CTRL1, RT1739_VCONN_EN,
+ enable ? MASK_SET : MASK_CLR);
}
#endif
@@ -176,14 +164,13 @@ static int rt1739_workaround(int port)
case RT1739_DEVICE_ID_ES1:
CPRINTS("RT1739 ES1");
RETURN_ERROR(update_reg(port, RT1739_REG_SYS_CTRL1,
- RT1739_OSC640K_FORCE_EN,
- MASK_SET));
+ RT1739_OSC640K_FORCE_EN, MASK_SET));
RETURN_ERROR(write_reg(port, RT1739_VBUS_FAULT_DIS,
RT1739_OVP_DISVBUS_EN |
- RT1739_UVLO_DISVBUS_EN |
- RT1739_SCP_DISVBUS_EN |
- RT1739_OCPS_DISVBUS_EN));
+ RT1739_UVLO_DISVBUS_EN |
+ RT1739_SCP_DISVBUS_EN |
+ RT1739_OCPS_DISVBUS_EN));
break;
case RT1739_DEVICE_ID_ES2:
@@ -208,14 +195,13 @@ static int rt1739_workaround(int port)
msleep(5);
RETURN_ERROR(write_reg(port, RT1739_REG_VBUS_SWITCH_CTRL, 0));
msleep(5);
- RETURN_ERROR(write_reg(port, RT1739_VBUS_FAULT_DIS,
- RT1739_OVP_DISVBUS_EN |
- RT1739_UVLO_DISVBUS_EN |
- RT1739_RCP_DISVBUS_EN |
- RT1739_SCP_DISVBUS_EN));
- RETURN_ERROR(write_reg(port, RT1739_REG_VBUS_CTRL1,
- RT1739_HVLV_SCP_EN |
- RT1739_HVLV_OCRC_EN));
+ RETURN_ERROR(write_reg(
+ port, RT1739_VBUS_FAULT_DIS,
+ RT1739_OVP_DISVBUS_EN | RT1739_UVLO_DISVBUS_EN |
+ RT1739_RCP_DISVBUS_EN | RT1739_SCP_DISVBUS_EN));
+ RETURN_ERROR(
+ write_reg(port, RT1739_REG_VBUS_CTRL1,
+ RT1739_HVLV_SCP_EN | RT1739_HVLV_OCRC_EN));
break;
default:
@@ -229,8 +215,7 @@ static int rt1739_workaround(int port)
static int rt1739_set_frs_enable(int port, int enable)
{
/* Enable FRS RX detect */
- RETURN_ERROR(update_reg(port, RT1739_REG_CC_FRS_CTRL1,
- RT1739_FRS_RX_EN,
+ RETURN_ERROR(update_reg(port, RT1739_REG_CC_FRS_CTRL1, RT1739_FRS_RX_EN,
enable ? MASK_SET : MASK_CLR));
/*
@@ -243,8 +228,7 @@ static int rt1739_set_frs_enable(int port, int enable)
RETURN_ERROR(update_reg(port, RT1739_REG_INT_MASK5,
RT1739_BC12_SNK_DONE_MASK,
enable ? MASK_CLR : MASK_SET));
- RETURN_ERROR(update_reg(port, RT1739_REG_INT_MASK4,
- RT1739_FRS_RX_MASK,
+ RETURN_ERROR(update_reg(port, RT1739_REG_INT_MASK4, RT1739_FRS_RX_MASK,
enable ? MASK_SET : MASK_CLR));
if (enable)
atomic_or(&flags[port], RT1739_FLAGS_FRS_ENABLED);
@@ -268,22 +252,19 @@ static int rt1739_init(int port)
RETURN_ERROR(rt1739_workaround(port));
RETURN_ERROR(rt1739_set_frs_enable(port, false));
RETURN_ERROR(update_reg(port, RT1739_REG_VBUS_DET_EN,
- RT1739_VBUS_PRESENT_EN,
- MASK_SET));
+ RT1739_VBUS_PRESENT_EN, MASK_SET));
RETURN_ERROR(update_reg(port, RT1739_REG_SBU_CTRL_01,
- RT1739_DM_SWEN | RT1739_DP_SWEN,
- MASK_SET));
+ RT1739_DM_SWEN | RT1739_DP_SWEN, MASK_SET));
RETURN_ERROR(update_reg(port, RT1739_REG_SBU_CTRL_01,
- RT1739_SBUSW_MUX_SEL,
- MASK_CLR));
+ RT1739_SBUSW_MUX_SEL, MASK_CLR));
RETURN_ERROR(update_reg(port, RT1739_REG_VCONN_CTRL3,
- RT1739_VCONN_CLIMIT_EN,
- MASK_SET));
+ RT1739_VCONN_CLIMIT_EN, MASK_SET));
/* VBUS OVP -> 23V */
- RETURN_ERROR(write_reg(port, RT1739_REG_VBUS_OV_SETTING,
+ RETURN_ERROR(write_reg(
+ port, RT1739_REG_VBUS_OV_SETTING,
(RT1739_OVP_SEL_23_0V << RT1739_VBUS_OVP_SEL_SHIFT) |
- (RT1739_OVP_SEL_23_0V << RT1739_VIN_HV_OVP_SEL_SHIFT)));
+ (RT1739_OVP_SEL_23_0V << RT1739_VIN_HV_OVP_SEL_SHIFT)));
/* VBUS OCP -> 3.3A (or 5.5A for ES2 HV Sink) */
RETURN_ERROR(rt1739_get_device_id(port, &device_id));
if (device_id == RT1739_DEVICE_ID_ES2)
@@ -317,7 +298,7 @@ static void rt1739_update_charge_manager(int port,
if (new_bc12_type != current_bc12_type) {
if (current_bc12_type != CHARGE_SUPPLIER_NONE)
charge_manager_update_charge(current_bc12_type, port,
- NULL);
+ NULL);
if (new_bc12_type != CHARGE_SUPPLIER_NONE) {
struct charge_port_info chg = {
@@ -334,8 +315,8 @@ static void rt1739_update_charge_manager(int port,
static void rt1739_enable_bc12_detection(int port, bool enable)
{
- update_reg(port, RT1739_REG_BC12_SNK_FUNC,
- RT1739_BC12_SNK_EN, enable ? MASK_SET : MASK_CLR);
+ update_reg(port, RT1739_REG_BC12_SNK_FUNC, RT1739_BC12_SNK_EN,
+ enable ? MASK_SET : MASK_CLR);
}
static enum charge_supplier rt1739_bc12_get_device_type(int port)
@@ -370,16 +351,16 @@ static void rt1739_usb_charger_task_init(const int port)
static void rt1739_usb_charger_task_event(const int port, uint32_t evt)
{
bool is_non_pd_sink = !pd_capable(port) &&
- !usb_charger_port_is_sourcing_vbus(port) &&
- pd_check_vbus_level(port, VBUS_PRESENT);
+ !usb_charger_port_is_sourcing_vbus(port) &&
+ pd_check_vbus_level(port, VBUS_PRESENT);
/* vbus change, start bc12 detection */
if (evt & USB_CHG_EVENT_VBUS) {
if (is_non_pd_sink)
rt1739_enable_bc12_detection(port, true);
else
- rt1739_update_charge_manager(
- port, CHARGE_SUPPLIER_NONE);
+ rt1739_update_charge_manager(port,
+ CHARGE_SUPPLIER_NONE);
}
/* detection done, update charge_manager and stop detection */