summaryrefslogtreecommitdiff
path: root/chip/mec1322/i2c.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 /chip/mec1322/i2c.c
parente5fb0b9ba488614b5684e640530f00821ab7b943 (diff)
parent28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff)
downloadchrome-ec-2bcf863b492fe7ed8105c853814dba6ed32ba719.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 'chip/mec1322/i2c.c')
-rw-r--r--chip/mec1322/i2c.c87
1 files changed, 44 insertions, 43 deletions
diff --git a/chip/mec1322/i2c.c b/chip/mec1322/i2c.c
index c282714265..5068aff978 100644
--- a/chip/mec1322/i2c.c
+++ b/chip/mec1322/i2c.c
@@ -1,10 +1,11 @@
-/* Copyright 2013 The Chromium OS Authors. All rights reserved.
+/* Copyright 2013 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* I2C port module for MEC1322 */
+#include "builtin/assert.h"
#include "common.h"
#include "console.h"
#include "gpio.h"
@@ -16,7 +17,7 @@
#include "util.h"
#define CPUTS(outstr) cputs(CC_I2C, outstr)
-#define CPRINTS(format, args...) cprints(CC_I2C, format, ## args)
+#define CPRINTS(format, args...) cprints(CC_I2C, format, ##args)
#define I2C_CLOCK 16000000 /* 16 MHz */
@@ -36,7 +37,7 @@
#define CTRL_PIN BIT(7) /* Pending interrupt not */
/* Completion */
-#define COMP_IDLE BIT(29) /* i2c bus is idle */
+#define COMP_IDLE BIT(29) /* i2c bus is idle */
#define COMP_RW_BITS_MASK 0x3C /* R/W bits mask */
/* Maximum transfer of a SMBUS block transfer */
@@ -68,10 +69,8 @@ static struct {
/* Map port number to port name in datasheet, for debug prints. */
static const char *i2c_port_names[MEC1322_I2C_PORT_COUNT] = {
- [MEC1322_I2C0_0] = "0_0",
- [MEC1322_I2C0_1] = "0_1",
- [MEC1322_I2C1] = "1",
- [MEC1322_I2C2] = "2",
+ [MEC1322_I2C0_0] = "0_0", [MEC1322_I2C0_1] = "0_1",
+ [MEC1322_I2C1] = "1", [MEC1322_I2C2] = "2",
[MEC1322_I2C3] = "3",
};
@@ -114,8 +113,8 @@ static void configure_controller(int controller, int kbps)
MEC1322_I2C_CTRL(controller) = CTRL_PIN;
MEC1322_I2C_OWN_ADDR(controller) = 0x0;
configure_controller_speed(controller, kbps);
- MEC1322_I2C_CTRL(controller) = CTRL_PIN | CTRL_ESO |
- CTRL_ACK | CTRL_ENI;
+ MEC1322_I2C_CTRL(controller) = CTRL_PIN | CTRL_ESO | CTRL_ACK |
+ CTRL_ENI;
MEC1322_I2C_CONFIG(controller) |= BIT(10); /* ENAB */
/* Enable interrupt */
@@ -211,16 +210,15 @@ static void select_port(int port)
MEC1322_I2C_CONFIG(controller) &= ~0xf;
MEC1322_I2C_CONFIG(controller) |= port_sel;
-
}
static inline int get_line_level(int controller)
{
int ret, ctrl;
/*
- * We need to enable BB (Bit Bang) mode in order to read line level
- * properly, othervise line levels return always idle (0x60).
- */
+ * We need to enable BB (Bit Bang) mode in order to read line level
+ * properly, othervise line levels return always idle (0x60).
+ */
ctrl = MEC1322_I2C_BB_CTRL(controller);
MEC1322_I2C_BB_CTRL(controller) |= 1;
ret = (MEC1322_I2C_BB_CTRL(controller) >> 5) & 0x3;
@@ -236,10 +234,8 @@ static inline void push_in_buf(uint8_t **in, uint8_t val, int skip)
}
}
-int chip_i2c_xfer(const int port,
- const uint16_t addr_flags,
- const uint8_t *out, int out_size,
- uint8_t *in, int in_size, int flags)
+int chip_i2c_xfer(const int port, const uint16_t addr_flags, const uint8_t *out,
+ int out_size, uint8_t *in, int in_size, int flags)
{
int i;
int controller;
@@ -263,8 +259,7 @@ int chip_i2c_xfer(const int port,
if (send_start &&
cdata[controller].transaction_state == I2C_TRANSACTION_STOPPED &&
(((reg & (STS_BER | STS_LAB)) || !(reg & STS_NBB)) ||
- (get_line_level(controller)
- != I2C_LINE_IDLE))) {
+ (get_line_level(controller) != I2C_LINE_IDLE))) {
CPRINTS("i2c%s bad status 0x%02x, SCL=%d, SDA=%d",
i2c_port_names[port], reg,
get_line_level(controller) & I2C_LINE_SCL_HIGH,
@@ -287,8 +282,7 @@ int chip_i2c_xfer(const int port,
if (out_size) {
if (send_start) {
MEC1322_I2C_DATA(controller) =
- (uint8_t)(I2C_STRIP_FLAGS(addr_flags)
- << 1);
+ (uint8_t)(I2C_STRIP_FLAGS(addr_flags) << 1);
/* Clock out the slave address, sending START bit */
MEC1322_I2C_CTRL(controller) = CTRL_PIN | CTRL_ESO |
@@ -326,24 +320,20 @@ int chip_i2c_xfer(const int port,
/* Repeated start case */
if (cdata[controller].transaction_state ==
I2C_TRANSACTION_OPEN)
- MEC1322_I2C_CTRL(controller) = CTRL_ESO |
- CTRL_STA |
- CTRL_ACK |
- CTRL_ENI;
+ MEC1322_I2C_CTRL(controller) =
+ CTRL_ESO | CTRL_STA | CTRL_ACK |
+ CTRL_ENI;
MEC1322_I2C_DATA(controller) =
- (uint8_t)(I2C_STRIP_FLAGS(addr_flags)
- << 1)
- | 0x01;
+ (uint8_t)(I2C_STRIP_FLAGS(addr_flags) << 1) |
+ 0x01;
/* New transaction case, clock out slave address. */
if (cdata[controller].transaction_state ==
I2C_TRANSACTION_STOPPED)
- MEC1322_I2C_CTRL(controller) = CTRL_ESO |
- CTRL_STA |
- CTRL_ACK |
- CTRL_ENI |
- CTRL_PIN;
+ MEC1322_I2C_CTRL(controller) =
+ CTRL_ESO | CTRL_STA | CTRL_ACK |
+ CTRL_ENI | CTRL_PIN;
cdata[controller].transaction_state =
I2C_TRANSACTION_OPEN;
@@ -379,8 +369,8 @@ int chip_i2c_xfer(const int port,
goto err_chip_i2c_xfer;
/* Send STOP */
- MEC1322_I2C_CTRL(controller) =
- CTRL_PIN | CTRL_ESO | CTRL_ACK | CTRL_STO;
+ MEC1322_I2C_CTRL(controller) = CTRL_PIN | CTRL_ESO |
+ CTRL_ACK | CTRL_STO;
cdata[controller].transaction_state =
I2C_TRANSACTION_STOPPED;
@@ -403,8 +393,8 @@ int chip_i2c_xfer(const int port,
return EC_SUCCESS;
err_chip_i2c_xfer:
/* Send STOP and return error */
- MEC1322_I2C_CTRL(controller) = CTRL_PIN | CTRL_ESO |
- CTRL_STO | CTRL_ACK;
+ MEC1322_I2C_CTRL(controller) = CTRL_PIN | CTRL_ESO | CTRL_STO |
+ CTRL_ACK;
cdata[controller].transaction_state = I2C_TRANSACTION_STOPPED;
if (ret_done == STS_LRB)
return EC_ERROR_BUSY;
@@ -417,8 +407,7 @@ err_chip_i2c_xfer:
*/
reset_controller(controller);
return EC_ERROR_TIMEOUT;
- }
- else
+ } else
return EC_ERROR_UNKNOWN;
}
@@ -520,10 +509,22 @@ static void handle_interrupt(int controller)
task_set_event(id, TASK_EVENT_I2C_IDLE);
}
-static void i2c0_interrupt(void) { handle_interrupt(0); }
-static void i2c1_interrupt(void) { handle_interrupt(1); }
-static void i2c2_interrupt(void) { handle_interrupt(2); }
-static void i2c3_interrupt(void) { handle_interrupt(3); }
+static void i2c0_interrupt(void)
+{
+ handle_interrupt(0);
+}
+static void i2c1_interrupt(void)
+{
+ handle_interrupt(1);
+}
+static void i2c2_interrupt(void)
+{
+ handle_interrupt(2);
+}
+static void i2c3_interrupt(void)
+{
+ handle_interrupt(3);
+}
DECLARE_IRQ(MEC1322_IRQ_I2C_0, i2c0_interrupt, 2);
DECLARE_IRQ(MEC1322_IRQ_I2C_1, i2c1_interrupt, 2);