8 #include <soc/addressmap.h>
18 int i, timeout_ms = 10;
30 for (i = 0; i < timeout_ms * 10 && (
read32(&
regs->config_load) &
38 for (i = 0; i < timeout_ms * 10 && (
read32(&
regs->bus_clear_config) &
60 while (header_words && tx_empty) {
68 while (data_len && rx_full) {
70 int todo =
MIN(data_len,
sizeof(
word));
78 while (data_len && tx_empty) {
80 int todo =
MIN(data_len,
sizeof(
word));
96 "%s: The address was not acknowledged.\n",
103 "%s: The data was not acknowledged.\n",
110 "%s: Lost arbitration.\n",
129 int read,
void *data,
int data_len)
133 if (restart && cont) {
135 "mutually exclusive.\n", __func__);
161 int read,
void *
buf,
int len)
167 int todo =
MIN(len, max_payload);
168 int cont = (todo < len);
180 struct i2c_msg *seg = segments;
189 for (i = 0; i <
count; seg++, i++) {
static void write32(void *addr, uint32_t val)
static uint32_t read32(const void *addr)
void * memcpy(void *dest, const void *src, size_t n)
#define printk(level,...)
static struct smmstore_params_info info
static struct tpm_chip chip
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
int platform_i2c_transfer(unsigned int bus, struct i2c_msg *segment, int seg_count)
struct tegra_i2c_bus_info tegra_i2c_info[]
const unsigned int num_i2c_buses
static int tegra_i2c_request(int bus, unsigned int chip, int cont, int restart, int read, void *data, int data_len)
static int tegra_i2c_send_recv(int bus, int read, uint32_t *headers, int header_words, uint8_t *data, int data_len)
void i2c_init(unsigned int bus)
static int i2c_transfer_segment(unsigned int bus, unsigned int chip, int restart, int read, void *buf, int len)
static void do_bus_clear(int bus)
@ I2C_PKT_STATUS_ARB_LOST
@ I2C_PKT_STATUS_NOACK_DATA
@ I2C_PKT_STATUS_NOACK_ADDR
@ IOHEADER_I2C_REQ_SLAVE_ADDR_SHIFT
@ IOHEADER_I2C_REQ_REPEAT_START
@ IOHEADER_I2C_REQ_CONTINUE_XFER
@ IOHEADER_I2C_REQ_ADDR_MODE_7BIT
@ I2C_FIFO_STATUS_TX_FIFO_EMPTY_CNT_MASK
@ I2C_FIFO_STATUS_RX_FIFO_FULL_CNT_MASK
@ I2C_FIFO_STATUS_RX_FIFO_FULL_CNT_SHIFT
@ I2C_FIFO_STATUS_TX_FIFO_EMPTY_CNT_SHIFT
@ I2C_BUS_CLEAR_CONFIG_BC_ENABLE
@ I2C_BUS_CLEAR_CONFIG_BC_TERMINATE_IMMEDIATE
@ I2C_CONFIG_LOAD_MSTR_CONFIG_LOAD_ENABLE
@ I2C_CNFG_PACKET_MODE_EN
@ IOHEADER_PAYLOADSIZE_MASK
@ IOHEADER_PROTHDRSZ_SHIFT
@ IOHEADER_PKTTYPE_REQUEST
@ IOHEADER_PAYLOADSIZE_SHIFT
@ IOHEADER_CONTROLLER_ID_SHIFT
struct i2c_msg - an I2C transaction segment beginning with START @addr: Slave address,...
static struct am335x_pinmux_regs * regs