| /* Copyright 2020 The ChromiumOS Authors |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| /* |
| * Private chipset-specific implementations that only accessible by |
| * i2c_controller.c. Don't include this directly unless you are implementing |
| * these functions. |
| */ |
| #ifndef __CROS_EC_I2C_PRIVATE_H |
| #define __CROS_EC_I2C_PRIVATE_H |
| |
| #include "i2c.h" |
| |
| /** |
| * Chip-level function to transmit one block of raw data, then receive one |
| * block of raw data. |
| * |
| * This is a low-level chip-dependent function and should only be called by |
| * i2c_xfer(). |
| * |
| * @param port Port to access |
| * @param addr_flags Peripheral device address |
| * @param out Data to send |
| * @param out_size Number of bytes to send |
| * @param in Destination buffer for received data |
| * @param in_size Number of bytes to receive |
| * @param flags Flags (see I2C_XFER_* above) |
| * @return EC_SUCCESS, or non-zero if error. |
| */ |
| 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); |
| |
| /** |
| * Chip level function to set bus speed. |
| * |
| * @param port: Port to access |
| * @param kbps: Bus speed in kbps. |
| * |
| * @return EC_SUCCESS, or non-zero if error. |
| */ |
| int chip_i2c_set_freq(int port, enum i2c_freq freq); |
| |
| /** |
| * Chip level function to get bus speed. |
| * |
| * @param port: Port to access |
| * |
| * @return Bus speed |
| */ |
| enum i2c_freq chip_i2c_get_freq(int port); |
| |
| #endif /* __CROS_EC_I2C_PRIVATE_H */ |