coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
i2c.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __SOC_NVIDIA_TEGRA_I2C_H__
4 #define __SOC_NVIDIA_TEGRA_I2C_H__
5 
6 #include <stdint.h>
7 
8 void i2c_init(unsigned int bus);
9 void tegra_software_i2c_init(unsigned int bus);
10 void tegra_software_i2c_disable(unsigned int bus);
11 
12 enum {
13  /* Word 0 */
29 
30  /* Word 1 */
33 };
34 
35 enum {
43  IOHEADER_I2C_REQ_READ = 0x1 << 19,
47  IOHEADER_I2C_REQ_IE = 0x1 << 17,
49  IOHEADER_I2C_REQ_STOP = 0x0 << 16,
57 };
58 
59 enum {
65  I2C_CNFG_SEND = 0x1 << 9,
66  I2C_CNFG_NOACK = 0x1 << 8,
67  I2C_CNFG_CMD2 = 0x1 << 7,
68  I2C_CNFG_CMD1 = 0x1 << 6,
69  I2C_CNFG_START = 0x1 << 5,
74  I2C_CNFG_A_MOD = 0x1 << 0,
75 };
76 
77 enum {
86  I2C_PKT_STATUS_BUSY = 0x1 << 0
87 };
88 
89 enum {
96 };
97 
98 enum {
105 
107 
109 };
110 
112  void *base;
114  void (*reset_func)(u32 bit);
115 };
116 
117 extern struct tegra_i2c_bus_info tegra_i2c_info[];
118 
155 };
156 check_member(tegra_i2c_regs, config_load, 0x8C);
157 
158 extern const unsigned int num_i2c_buses;
159 
160 #endif /* __SOC_NVIDIA_TEGRA_I2C_H__ */
check_member(mt_i2c_regs, debug_stat, 0x64)
@ I2C_PKT_STATUS_BYTENUM_SHIFT
Definition: i2c.h:81
@ I2C_PKT_STATUS_ARB_LOST
Definition: i2c.h:85
@ I2C_PKT_STATUS_PKT_ID_MASK
Definition: i2c.h:80
@ I2C_PKT_STATUS_BUSY
Definition: i2c.h:86
@ I2C_PKT_STATUS_BYTENUM_MASK
Definition: i2c.h:82
@ I2C_PKT_STATUS_NOACK_DATA
Definition: i2c.h:84
@ I2C_PKT_STATUS_PKT_ID_SHIFT
Definition: i2c.h:79
@ I2C_PKT_STATUS_NOACK_ADDR
Definition: i2c.h:83
@ I2C_PKT_STATUS_COMPLETE
Definition: i2c.h:78
struct tegra_i2c_bus_info tegra_i2c_info[]
Definition: i2c.c:7
@ IOHEADER_I2C_REQ_SEND_START_BYTE
Definition: i2c.h:42
@ IOHEADER_I2C_REQ_STOP
Definition: i2c.h:49
@ IOHEADER_I2C_REQ_SLAVE_ADDR_SHIFT
Definition: i2c.h:54
@ IOHEADER_I2C_REQ_HS_MASTER_ADDR_MASK
Definition: i2c.h:52
@ IOHEADER_I2C_REQ_CONTINUE_ON_NACK
Definition: i2c.h:41
@ IOHEADER_I2C_REQ_IE
Definition: i2c.h:47
@ IOHEADER_I2C_REQ_HS_MASTER_ADDR_SHIFT
Definition: i2c.h:51
@ IOHEADER_I2C_REQ_READ
Definition: i2c.h:43
@ IOHEADER_I2C_REQ_REPEAT_START
Definition: i2c.h:48
@ IOHEADER_I2C_REQ_CONTINUE_XFER
Definition: i2c.h:50
@ IOHEADER_I2C_REQ_ADDR_MODE_10BIT
Definition: i2c.h:46
@ IOHEADER_I2C_REQ_RESP_FREQ_MASK
Definition: i2c.h:36
@ IOHEADER_I2C_REQ_ADDR_MODE_7BIT
Definition: i2c.h:45
@ IOHEADER_I2C_REQ_RESP_FREQ_EACH
Definition: i2c.h:38
@ IOHEADER_I2C_REQ_RESP_ENABLE
Definition: i2c.h:39
@ IOHEADER_I2C_REQ_SLAVE_ADDR_MASK
Definition: i2c.h:55
@ IOHEADER_I2C_REQ_ADDR_MODE_MASK
Definition: i2c.h:44
@ IOHEADER_I2C_REQ_RESP_FREQ_END
Definition: i2c.h:37
@ IOHEADER_I2C_REQ_HS_MODE
Definition: i2c.h:40
@ I2C_FIFO_STATUS_TX_FIFO_EMPTY_CNT_MASK
Definition: i2c.h:91
@ I2C_FIFO_STATUS_RX_FIFO_FULL_CNT_MASK
Definition: i2c.h:94
@ I2C_FIFO_STATUS_RX_FIFO_FULL_CNT_SHIFT
Definition: i2c.h:93
@ I2C_FIFO_STATUS_TX_FIFO_EMPTY_CNT_SHIFT
Definition: i2c.h:90
@ I2C_BUS_CLEAR_CONFIG_BC_ENABLE
Definition: i2c.h:104
@ I2C_BUS_CLEAR_CONFIG_BC_TERMINATE_IMMEDIATE
Definition: i2c.h:103
@ I2C_BUS_CLEAR_CONFIG_BC_SCLK_THRESHOLD_MASK
Definition: i2c.h:100
@ I2C_BUS_CLEAR_STATUS_CLEARED
Definition: i2c.h:106
@ I2C_BUS_CLEAR_CONFIG_BC_STOP_COND_STOP
Definition: i2c.h:102
@ I2C_BUS_CLEAR_CONFIG_BC_SCLK_THRESHOLD_SHIFT
Definition: i2c.h:99
@ I2C_CONFIG_LOAD_MSTR_CONFIG_LOAD_ENABLE
Definition: i2c.h:108
void i2c_init(unsigned int bus)
Definition: i2c.c:198
void tegra_software_i2c_disable(unsigned int bus)
Definition: software_i2c.c:68
void tegra_software_i2c_init(unsigned int bus)
Definition: software_i2c.c:59
const unsigned int num_i2c_buses
Definition: i2c.c:40
@ I2C_CNFG_LENGTH_SHIFT
Definition: i2c.h:72
@ I2C_CNFG_SLV2_MASK
Definition: i2c.h:71
@ I2C_CNFG_DEBOUNCE_CNT_MASK
Definition: i2c.h:62
@ I2C_CNFG_SLV2_SHIFT
Definition: i2c.h:70
@ I2C_CNFG_NEW_MASTER_FSM
Definition: i2c.h:63
@ I2C_CNFG_PACKET_MODE_EN
Definition: i2c.h:64
@ I2C_CNFG_MSTR_CLR_BUS_ON_TIMEOUT
Definition: i2c.h:60
@ I2C_CNFG_START
Definition: i2c.h:69
@ I2C_CNFG_SEND
Definition: i2c.h:65
@ I2C_CNFG_CMD2
Definition: i2c.h:67
@ I2C_CNFG_A_MOD
Definition: i2c.h:74
@ I2C_CNFG_NOACK
Definition: i2c.h:66
@ I2C_CNFG_LENGTH_MASK
Definition: i2c.h:73
@ I2C_CNFG_DEBOUNCE_CNT_SHIFT
Definition: i2c.h:61
@ I2C_CNFG_CMD1
Definition: i2c.h:68
@ IOHEADER_CONTROLLER_ID_MASK
Definition: i2c.h:19
@ IOHEADER_PROTOCOL_SHIFT
Definition: i2c.h:20
@ IOHEADER_PKTID_SHIFT
Definition: i2c.h:16
@ IOHEADER_PAYLOADSIZE_MASK
Definition: i2c.h:32
@ IOHEADER_PROTOCOL_I2C
Definition: i2c.h:22
@ IOHEADER_PKTID_MASK
Definition: i2c.h:17
@ IOHEADER_PROTHDRSZ_SHIFT
Definition: i2c.h:14
@ IOHEADER_PKTTYPE_SHIFT
Definition: i2c.h:23
@ IOHEADER_PKTTYPE_REQUEST
Definition: i2c.h:25
@ IOHEADER_PKTTYPE_MASK
Definition: i2c.h:24
@ IOHEADER_PAYLOADSIZE_SHIFT
Definition: i2c.h:31
@ IOHEADER_CONTROLLER_ID_SHIFT
Definition: i2c.h:18
@ IOHEADER_PKTTYPE_INTERRUPT
Definition: i2c.h:27
@ IOHEADER_PROTOCOL_MASK
Definition: i2c.h:21
@ IOHEADER_PKTTYPE_RESPONSE
Definition: i2c.h:26
@ IOHEADER_PROTHDRSZ_MASK
Definition: i2c.h:15
@ IOHEADER_PKTTYPE_STOP
Definition: i2c.h:28
unsigned int uint32_t
Definition: stdint.h:14
uint32_t u32
Definition: stdint.h:51
unsigned char uint8_t
Definition: stdint.h:8
Definition: device.h:76
uint32_t reset_bit
Definition: i2c.h:113
void(* reset_func)(u32 bit)
Definition: i2c.h:114
void * base
Definition: i2c.h:112
uint32_t packet_transfer_status
Definition: i2c.h:141
uint8_t _rsv1[4]
Definition: i2c.h:133
uint32_t fifo_control
Definition: i2c.h:142
uint32_t status
Definition: i2c.h:126
uint32_t tlow_sext
Definition: i2c.h:132
uint32_t cmd_addr0
Definition: i2c.h:121
uint32_t sl_addr2
Definition: i2c.h:131
uint32_t bus_clear_config
Definition: i2c.h:152
uint32_t sl_addr1
Definition: i2c.h:130
uint32_t cmd_data1
Definition: i2c.h:123
uint32_t sl_delay_count
Definition: i2c.h:134
uint32_t cmd_data2
Definition: i2c.h:124
uint32_t sl_int_set
Definition: i2c.h:137
uint32_t interrupt_mask
Definition: i2c.h:144
uint32_t sl_cnfg
Definition: i2c.h:127
uint32_t slv_packet_status
Definition: i2c.h:151
uint32_t sl_int_source
Definition: i2c.h:136
uint32_t sl_status
Definition: i2c.h:129
uint32_t sl_rcvd
Definition: i2c.h:128
uint8_t _rsv2[4]
Definition: i2c.h:138
uint8_t _rsv0[8]
Definition: i2c.h:125
uint32_t tx_packet_fifo
Definition: i2c.h:139
uint32_t bus_clear_status
Definition: i2c.h:153
uint32_t cmd_addr1
Definition: i2c.h:122
uint32_t rx_fifo
Definition: i2c.h:140
uint32_t interrupt_source
Definition: i2c.h:147
uint32_t cnfg
Definition: i2c.h:120
uint32_t slv_tx_packet_fifo
Definition: i2c.h:149
uint32_t fifo_status
Definition: i2c.h:143
uint32_t sl_int_mask
Definition: i2c.h:135
uint32_t slv_rx_fifo
Definition: i2c.h:150
uint32_t config_load
Definition: i2c.h:154
uint32_t clk_divisor
Definition: i2c.h:146
uint32_t interrupt_set
Definition: i2c.h:148
uint32_t interrupt_status
Definition: i2c.h:145
typedef void(X86APIP X86EMU_intrFuncs)(int num)