coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
i2c.h File Reference
#include <stdint.h>
Include dependency graph for i2c.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  tegra_i2c_bus_info
 
struct  tegra_i2c_regs
 

Enumerations

enum  {
  IOHEADER_PROTHDRSZ_SHIFT = 28 , IOHEADER_PROTHDRSZ_MASK = 0x3 << IOHEADER_PROTHDRSZ_SHIFT , IOHEADER_PKTID_SHIFT = 16 , IOHEADER_PKTID_MASK = 0xff << IOHEADER_PKTID_SHIFT ,
  IOHEADER_CONTROLLER_ID_SHIFT = 12 , IOHEADER_CONTROLLER_ID_MASK = 0xf << IOHEADER_CONTROLLER_ID_SHIFT , IOHEADER_PROTOCOL_SHIFT = 4 , IOHEADER_PROTOCOL_MASK = 0xf << IOHEADER_PROTOCOL_SHIFT ,
  IOHEADER_PROTOCOL_I2C = 1 << IOHEADER_PROTOCOL_SHIFT , IOHEADER_PKTTYPE_SHIFT = 0 , IOHEADER_PKTTYPE_MASK = 0x7 << IOHEADER_PKTTYPE_SHIFT , IOHEADER_PKTTYPE_REQUEST = 0 << IOHEADER_PKTTYPE_SHIFT ,
  IOHEADER_PKTTYPE_RESPONSE = 1 << IOHEADER_PKTTYPE_SHIFT , IOHEADER_PKTTYPE_INTERRUPT = 2 << IOHEADER_PKTTYPE_SHIFT , IOHEADER_PKTTYPE_STOP = 3 << IOHEADER_PKTTYPE_SHIFT , IOHEADER_PAYLOADSIZE_SHIFT = 0 ,
  IOHEADER_PAYLOADSIZE_MASK = 0xfff << IOHEADER_PAYLOADSIZE_SHIFT
}
 
enum  {
  IOHEADER_I2C_REQ_RESP_FREQ_MASK = 0x1 << 25 , IOHEADER_I2C_REQ_RESP_FREQ_END = 0 << 25 , IOHEADER_I2C_REQ_RESP_FREQ_EACH = 1 << 25 , IOHEADER_I2C_REQ_RESP_ENABLE = 0x1 << 24 ,
  IOHEADER_I2C_REQ_HS_MODE = 0x1 << 22 , IOHEADER_I2C_REQ_CONTINUE_ON_NACK = 0x1 << 21 , IOHEADER_I2C_REQ_SEND_START_BYTE = 0x1 << 20 , IOHEADER_I2C_REQ_READ = 0x1 << 19 ,
  IOHEADER_I2C_REQ_ADDR_MODE_MASK = 0x1 << 18 , IOHEADER_I2C_REQ_ADDR_MODE_7BIT = 0 << 18 , IOHEADER_I2C_REQ_ADDR_MODE_10BIT = 1 << 18 , IOHEADER_I2C_REQ_IE = 0x1 << 17 ,
  IOHEADER_I2C_REQ_REPEAT_START = 0x1 << 16 , IOHEADER_I2C_REQ_STOP = 0x0 << 16 , IOHEADER_I2C_REQ_CONTINUE_XFER = 0x1 << 15 , IOHEADER_I2C_REQ_HS_MASTER_ADDR_SHIFT = 12 ,
  IOHEADER_I2C_REQ_HS_MASTER_ADDR_MASK , IOHEADER_I2C_REQ_SLAVE_ADDR_SHIFT = 0 , IOHEADER_I2C_REQ_SLAVE_ADDR_MASK
}
 
enum  {
  I2C_CNFG_MSTR_CLR_BUS_ON_TIMEOUT = 0x1 << 15 , I2C_CNFG_DEBOUNCE_CNT_SHIFT = 12 , I2C_CNFG_DEBOUNCE_CNT_MASK = 0x7 << I2C_CNFG_DEBOUNCE_CNT_SHIFT , I2C_CNFG_NEW_MASTER_FSM = 0x1 << 11 ,
  I2C_CNFG_PACKET_MODE_EN = 0x1 << 10 , I2C_CNFG_SEND = 0x1 << 9 , I2C_CNFG_NOACK = 0x1 << 8 , I2C_CNFG_CMD2 = 0x1 << 7 ,
  I2C_CNFG_CMD1 = 0x1 << 6 , I2C_CNFG_START = 0x1 << 5 , I2C_CNFG_SLV2_SHIFT = 4 , I2C_CNFG_SLV2_MASK = 0x1 << I2C_CNFG_SLV2_SHIFT ,
  I2C_CNFG_LENGTH_SHIFT = 1 , I2C_CNFG_LENGTH_MASK = 0x7 << I2C_CNFG_LENGTH_SHIFT , I2C_CNFG_A_MOD = 0x1 << 0
}
 
enum  {
  I2C_PKT_STATUS_COMPLETE = 0x1 << 24 , I2C_PKT_STATUS_PKT_ID_SHIFT = 16 , I2C_PKT_STATUS_PKT_ID_MASK = 0xff << I2C_PKT_STATUS_PKT_ID_SHIFT , I2C_PKT_STATUS_BYTENUM_SHIFT = 4 ,
  I2C_PKT_STATUS_BYTENUM_MASK = 0xfff << I2C_PKT_STATUS_BYTENUM_SHIFT , I2C_PKT_STATUS_NOACK_ADDR = 0x1 << 3 , I2C_PKT_STATUS_NOACK_DATA = 0x1 << 2 , I2C_PKT_STATUS_ARB_LOST = 0x1 << 1 ,
  I2C_PKT_STATUS_BUSY = 0x1 << 0
}
 
enum  { I2C_FIFO_STATUS_TX_FIFO_EMPTY_CNT_SHIFT = 4 , I2C_FIFO_STATUS_TX_FIFO_EMPTY_CNT_MASK , I2C_FIFO_STATUS_RX_FIFO_FULL_CNT_SHIFT = 0 , I2C_FIFO_STATUS_RX_FIFO_FULL_CNT_MASK }
 
enum  {
  I2C_BUS_CLEAR_CONFIG_BC_SCLK_THRESHOLD_SHIFT = 16 , I2C_BUS_CLEAR_CONFIG_BC_SCLK_THRESHOLD_MASK , I2C_BUS_CLEAR_CONFIG_BC_STOP_COND_STOP = 0x1 << 2 , I2C_BUS_CLEAR_CONFIG_BC_TERMINATE_IMMEDIATE = 0x1 << 1 ,
  I2C_BUS_CLEAR_CONFIG_BC_ENABLE = 0x1 << 0 , I2C_BUS_CLEAR_STATUS_CLEARED = 0x1 << 0 , I2C_CONFIG_LOAD_MSTR_CONFIG_LOAD_ENABLE = 0x1 << 0
}
 

Functions

void i2c_init (unsigned int bus)
 
void tegra_software_i2c_init (unsigned int bus)
 
void tegra_software_i2c_disable (unsigned int bus)
 
 check_member (tegra_i2c_regs, config_load, 0x8C)
 

Variables

struct tegra_i2c_bus_info tegra_i2c_info []
 
const unsigned int num_i2c_buses
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
IOHEADER_PROTHDRSZ_SHIFT 
IOHEADER_PROTHDRSZ_MASK 
IOHEADER_PKTID_SHIFT 
IOHEADER_PKTID_MASK 
IOHEADER_CONTROLLER_ID_SHIFT 
IOHEADER_CONTROLLER_ID_MASK 
IOHEADER_PROTOCOL_SHIFT 
IOHEADER_PROTOCOL_MASK 
IOHEADER_PROTOCOL_I2C 
IOHEADER_PKTTYPE_SHIFT 
IOHEADER_PKTTYPE_MASK 
IOHEADER_PKTTYPE_REQUEST 
IOHEADER_PKTTYPE_RESPONSE 
IOHEADER_PKTTYPE_INTERRUPT 
IOHEADER_PKTTYPE_STOP 
IOHEADER_PAYLOADSIZE_SHIFT 
IOHEADER_PAYLOADSIZE_MASK 

Definition at line 12 of file i2c.h.

◆ anonymous enum

anonymous enum
Enumerator
IOHEADER_I2C_REQ_RESP_FREQ_MASK 
IOHEADER_I2C_REQ_RESP_FREQ_END 
IOHEADER_I2C_REQ_RESP_FREQ_EACH 
IOHEADER_I2C_REQ_RESP_ENABLE 
IOHEADER_I2C_REQ_HS_MODE 
IOHEADER_I2C_REQ_CONTINUE_ON_NACK 
IOHEADER_I2C_REQ_SEND_START_BYTE 
IOHEADER_I2C_REQ_READ 
IOHEADER_I2C_REQ_ADDR_MODE_MASK 
IOHEADER_I2C_REQ_ADDR_MODE_7BIT 
IOHEADER_I2C_REQ_ADDR_MODE_10BIT 
IOHEADER_I2C_REQ_IE 
IOHEADER_I2C_REQ_REPEAT_START 
IOHEADER_I2C_REQ_STOP 
IOHEADER_I2C_REQ_CONTINUE_XFER 
IOHEADER_I2C_REQ_HS_MASTER_ADDR_SHIFT 
IOHEADER_I2C_REQ_HS_MASTER_ADDR_MASK 
IOHEADER_I2C_REQ_SLAVE_ADDR_SHIFT 
IOHEADER_I2C_REQ_SLAVE_ADDR_MASK 

Definition at line 35 of file i2c.h.

◆ anonymous enum

anonymous enum
Enumerator
I2C_CNFG_MSTR_CLR_BUS_ON_TIMEOUT 
I2C_CNFG_DEBOUNCE_CNT_SHIFT 
I2C_CNFG_DEBOUNCE_CNT_MASK 
I2C_CNFG_NEW_MASTER_FSM 
I2C_CNFG_PACKET_MODE_EN 
I2C_CNFG_SEND 
I2C_CNFG_NOACK 
I2C_CNFG_CMD2 
I2C_CNFG_CMD1 
I2C_CNFG_START 
I2C_CNFG_SLV2_SHIFT 
I2C_CNFG_SLV2_MASK 
I2C_CNFG_LENGTH_SHIFT 
I2C_CNFG_LENGTH_MASK 
I2C_CNFG_A_MOD 

Definition at line 59 of file i2c.h.

◆ anonymous enum

anonymous enum
Enumerator
I2C_PKT_STATUS_COMPLETE 
I2C_PKT_STATUS_PKT_ID_SHIFT 
I2C_PKT_STATUS_PKT_ID_MASK 
I2C_PKT_STATUS_BYTENUM_SHIFT 
I2C_PKT_STATUS_BYTENUM_MASK 
I2C_PKT_STATUS_NOACK_ADDR 
I2C_PKT_STATUS_NOACK_DATA 
I2C_PKT_STATUS_ARB_LOST 
I2C_PKT_STATUS_BUSY 

Definition at line 77 of file i2c.h.

◆ anonymous enum

anonymous enum
Enumerator
I2C_FIFO_STATUS_TX_FIFO_EMPTY_CNT_SHIFT 
I2C_FIFO_STATUS_TX_FIFO_EMPTY_CNT_MASK 
I2C_FIFO_STATUS_RX_FIFO_FULL_CNT_SHIFT 
I2C_FIFO_STATUS_RX_FIFO_FULL_CNT_MASK 

Definition at line 89 of file i2c.h.

◆ anonymous enum

anonymous enum
Enumerator
I2C_BUS_CLEAR_CONFIG_BC_SCLK_THRESHOLD_SHIFT 
I2C_BUS_CLEAR_CONFIG_BC_SCLK_THRESHOLD_MASK 
I2C_BUS_CLEAR_CONFIG_BC_STOP_COND_STOP 
I2C_BUS_CLEAR_CONFIG_BC_TERMINATE_IMMEDIATE 
I2C_BUS_CLEAR_CONFIG_BC_ENABLE 
I2C_BUS_CLEAR_STATUS_CLEARED 
I2C_CONFIG_LOAD_MSTR_CONFIG_LOAD_ENABLE 

Definition at line 98 of file i2c.h.

Function Documentation

◆ check_member()

check_member ( tegra_i2c_regs  ,
config_load  ,
0x8C   
)

◆ i2c_init()

◆ tegra_software_i2c_disable()

void tegra_software_i2c_disable ( unsigned int  bus)

Definition at line 68 of file software_i2c.c.

References GPIO_MODE_SPIO, GPIO_PINMUX_SHIFT, gpio_set_mode(), NULL, pinmux_func, PINMUX_INPUT_ENABLE, pinmux_set_config(), pins, scl, sda, and software_i2c.

Here is the call graph for this function:

◆ tegra_software_i2c_init()

void tegra_software_i2c_init ( unsigned int  bus)

Definition at line 59 of file software_i2c.c.

References software_i2c, tegra_ops, tegra_set_scl(), and tegra_set_sda().

Here is the call graph for this function:

Variable Documentation

◆ num_i2c_buses

const unsigned int num_i2c_buses
extern

Definition at line 40 of file i2c.c.

Referenced by i2c_init(), and platform_i2c_transfer().

◆ tegra_i2c_info

struct tegra_i2c_bus_info tegra_i2c_info[]
extern

Definition at line 1 of file i2c.c.

Referenced by do_bus_clear(), i2c_init(), and tegra_i2c_send_recv().