summaryrefslogtreecommitdiff
path: root/driver/ppc/rt1739.c
diff options
context:
space:
mode:
authorTom Hughes <tomhughes@chromium.org>2022-09-21 14:10:01 -0700
committerTom Hughes <tomhughes@chromium.org>2022-09-22 12:49:33 -0700
commit2bcf863b492fe7ed8105c853814dba6ed32ba719 (patch)
treefcf6ce5810f9ff9e3c8cce434812dd75492269ed /driver/ppc/rt1739.c
parente5fb0b9ba488614b5684e640530f00821ab7b943 (diff)
parent28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff)
downloadchrome-ec-firmware-fpmcu-bloonchipper-release.tar.gz
Merge remote-tracking branch cros/main into firmware-fpmcu-bloonchipper-releasefirmware-fpmcu-bloonchipper-release
Generated by: ./util/update_release_branch.py --board bloonchipper --relevant_paths_file ./util/fingerprint-relevant-paths.txt firmware- fpmcu-bloonchipper-release Relevant changes: git log --oneline e5fb0b9ba4..28712dae9d -- board/hatch_fp board/bloonchipper common/fpsensor docs/fingerprint driver/fingerprint util/getversion.sh ded9307b79 util/getversion.sh: Fix version when not in a git repo 956055e692 board: change Google USB vendor info 71b2ef709d Update license boilerplate text in source code files 33e11afda0 Revert "fpsensor: Build fpsensor source file with C++" c8d0360723 fpsensor: Build fpsensor source file with C++ bc113abd53 fpsensor: Fix g++ compiler error 150a58a0dc fpsensor: Fix fp_set_sensor_mode return type b33b5ce85b fpsensor: Remove nested designators for C++ compatibility 2e864b2539 tree-wide: const-ify argv for console commands 56d8b360f9 test: Add test for get ikm failure when seed not set 3a3d6c3690 test: Add test for fpsensor trivial key failure 233e6bbd08 fpsensor_crypto: Abstract calls to hmac_SHA256 0a041b285b docs/fingerprint: Typo correction c03fab67e2 docs/fingerprint: Fix the path of fputils.py 0b5d4baf5a util/getversion.sh: Fix empty file list handling 6e128fe760 FPMCU dev board environment with Satlab 3eb29b6aa5 builtin: Move ssize_t to sys/types.h 345d62ebd1 docs/fingerprint: Update power numbers for latest dartmonkey release c25ffdb316 common: Conditionally support printf %l and %i modifiers 9a3c514b45 test: Add a test to check if the debugger is connected 54e603413f Move standard library tests to their own file 43fa6b4bf8 docs/fingerprint: Update power numbers for latest bloonchipper release 25536f9a84 driver/fingerprint/fpc/bep/fpc_sensor_spi.c: Format with clang-format 4face99efd driver/fingerprint/fpc/libfp/fpc_sensor_pal.h: Format with clang-format 738de2b575 trng: Rename rand to trng_rand 14b8270edd docs/fingerprint: Update dragonclaw power numbers 0b268f93d1 driver/fingerprint/fpc/libfp/fpc_private.c: Format with clang-format f80da163f2 driver/fingerprint/fpc/libfp/fpc_private.h: Format with clang-format 5e9c85c9b1 driver/fingerprint/fpc/libfp/fpc_sensor_pal.c: Format with clang-format c1f9dd3cf8 driver/fingerprint/fpc/libfp/fpc_bio_algorithm.h: Format with clang-format eb1e1bed8d driver/fingerprint/fpc/libfp/fpc1145_private.h: Format with clang-format 6e7b611821 driver/fingerprint/fpc/bep/fpc_bio_algorithm.h: Format with clang-format e0589cd5e2 driver/fingerprint/fpc/bep/fpc1035_private.h: Format with clang-format 7905e556a0 common/fpsensor/fpsensor_crypto.c: Format with clang-format 21289d170c driver/fingerprint/fpc/bep/fpc1025_private.h: Format with clang-format 98a20f937e common/fpsensor/fpsensor_state.c: Format with clang-format a2d255d8af common/fpsensor/fpsensor.c: Format with clang-format 73055eeb3f driver/fingerprint/fpc/bep/fpc_private.c: Format with clang-format 0f7b5cb509 common/fpsensor/fpsensor_private.h: Format with clang-format 1ceade6e65 driver/fingerprint/fpc/bep/fpc_private.h: Format with clang-format dc3e9008b8 board/hatch_fp/board.h: Format with clang-format dca9d74321 Revert "trng: Rename rand to trng_rand" a6b0b3554f trng: Rename rand to trng_rand 28d0b75b70 third_party/boringssl: Remove unused header BRANCH=None BUG=b:246424843 b:234181908 b:244781166 b:234181908 b:244387210 BUG=b:242720240 chromium:1098010 b:180945056 b:236025198 b:234181908 BUG=b:234181908 b:237344361 b:131913998 b:236386294 b:234143158 BUG=b:234781655 b:215613183 b:242720910 TEST=`make -j buildall` TEST=./test/run_device_tests.py --board bloonchipper Test "aes": PASSED Test "cec": PASSED Test "cortexm_fpu": PASSED Test "crc": PASSED Test "flash_physical": PASSED Test "flash_write_protect": PASSED Test "fpsensor_hw": PASSED Test "fpsensor_spi_ro": PASSED Test "fpsensor_spi_rw": PASSED Test "fpsensor_uart_ro": PASSED Test "fpsensor_uart_rw": PASSED Test "mpu_ro": PASSED Test "mpu_rw": PASSED Test "mutex": PASSED Test "pingpong": PASSED Test "printf": PASSED Test "queue": PASSED Test "rollback_region0": PASSED Test "rollback_region1": PASSED Test "rollback_entropy": PASSED Test "rtc": PASSED Test "sha256": PASSED Test "sha256_unrolled": PASSED Test "static_if": PASSED Test "stdlib": PASSED Test "system_is_locked_wp_on": PASSED Test "system_is_locked_wp_off": PASSED Test "timer_dos": PASSED Test "utils": PASSED Test "utils_str": PASSED Test "stm32f_rtc": PASSED Test "panic_data_bloonchipper_v2.0.4277": PASSED Test "panic_data_bloonchipper_v2.0.5938": PASSED Force-Relevant-Builds: all Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: I264ad0ffe7afcd507a1e483c6e934a9c4fea47c3
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 */