]> git.proxmox.com Git - mirror_edk2.git/blob - Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CRegs.h
57455162f6862f96afc9252fe2e3d529f2b202f8
[mirror_edk2.git] / Vlv2TbltDevicePkg / Library / I2CLibDxe / I2CRegs.h
1 /** @file
2 Register Definitions for I2C Driver/PEIM.
3
4 Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 --*/
9
10 #ifndef I2C_REGS_H
11 #define I2C_REGS_H
12
13 //
14 // FIFO write delay value.
15 //
16 #define FIFO_WRITE_DELAY 2
17
18 //
19 // MMIO Register Definitions.
20 //
21 #define R_IC_CON ( 0x00) // I2C Control
22 #define B_IC_RESTART_EN BIT5
23 #define B_IC_SLAVE_DISABLE BIT6
24 #define V_SPEED_STANDARD 0x02
25 #define V_SPEED_FAST 0x04
26 #define V_SPEED_HIGH 0x06
27 #define B_MASTER_MODE BIT0
28
29 #define R_IC_TAR ( 0x04) // I2C Target Address
30 #define IC_TAR_10BITADDR_MASTER BIT12
31
32 #define R_IC_SAR ( 0x08) // I2C Slave Address
33 #define R_IC_HS_MADDR ( 0x0C) // I2C HS MasterMode Code Address
34 #define R_IC_DATA_CMD ( 0x10) // I2C Rx/Tx Data Buffer and Command
35
36 #define B_READ_CMD BIT8 // 1 = read, 0 = write
37 #define B_CMD_STOP BIT9 // 1 = STOP
38 #define B_CMD_RESTART BIT10 // 1 = IC_RESTART_EN
39
40 #define V_WRITE_CMD_MASK ( 0xFF)
41
42 #define R_IC_SS_SCL_HCNT ( 0x14) // Standard Speed I2C Clock SCL High Count
43 #define R_IC_SS_SCL_LCNT ( 0x18) // Standard Speed I2C Clock SCL Low Count
44 #define R_IC_FS_SCL_HCNT ( 0x1C) // Full Speed I2C Clock SCL High Count
45 #define R_IC_FS_SCL_LCNT ( 0x20) // Full Speed I2C Clock SCL Low Count
46 #define R_IC_HS_SCL_HCNT ( 0x24) // High Speed I2C Clock SCL High Count
47 #define R_IC_HS_SCL_LCNT ( 0x28) // High Speed I2C Clock SCL Low Count
48 #define R_IC_INTR_STAT ( 0x2C) // I2C Inetrrupt Status
49 #define R_IC_INTR_MASK ( 0x30) // I2C Interrupt Mask
50 #define I2C_INTR_GEN_CALL BIT11 // General call received
51 #define I2C_INTR_START_DET BIT10
52 #define I2C_INTR_STOP_DET BIT9
53 #define I2C_INTR_ACTIVITY BIT8
54 #define I2C_INTR_TX_ABRT BIT6 // Set on NACK
55 #define I2C_INTR_TX_EMPTY BIT4
56 #define I2C_INTR_TX_OVER BIT3
57 #define I2C_INTR_RX_FULL BIT2 // Data bytes in RX FIFO over threshold
58 #define I2C_INTR_RX_OVER BIT1
59 #define I2C_INTR_RX_UNDER BIT0
60 #define R_IC_RawIntrStat ( 0x34) // I2C Raw Interrupt Status
61 #define R_IC_RX_TL ( 0x38) // I2C Receive FIFO Threshold
62 #define R_IC_TX_TL ( 0x3C) // I2C Transmit FIFO Threshold
63 #define R_IC_CLR_INTR ( 0x40) // Clear Combined and Individual Interrupts
64 #define R_IC_CLR_RX_UNDER ( 0x44) // Clear RX_UNDER Interrupt
65 #define R_IC_CLR_RX_OVER ( 0x48) // Clear RX_OVERinterrupt
66 #define R_IC_CLR_TX_OVER ( 0x4C) // Clear TX_OVER interrupt
67 #define R_IC_CLR_RD_REQ ( 0x50) // Clear RD_REQ interrupt
68 #define R_IC_CLR_TX_ABRT ( 0x54) // Clear TX_ABRT interrupt
69 #define R_IC_CLR_RX_DONE ( 0x58) // Clear RX_DONE interrupt
70 #define R_IC_CLR_ACTIVITY ( 0x5C) // Clear ACTIVITY interrupt
71 #define R_IC_CLR_STOP_DET ( 0x60) // Clear STOP_DET interrupt
72 #define R_IC_CLR_START_DET ( 0x64) // Clear START_DET interrupt
73 #define R_IC_CLR_GEN_CALL ( 0x68) // Clear GEN_CALL interrupt
74 #define R_IC_ENABLE ( 0x6C) // I2C Enable
75 #define R_IC_STATUS ( 0x70) // I2C Status
76
77 #define R_IC_SDA_HOLD ( 0x7C) // I2C IC_DEFAULT_SDA_HOLD//16bits
78
79 #define STAT_MST_ACTIVITY BIT5 // Master FSM Activity Status.
80 #define STAT_RFF BIT4 // RX FIFO is completely full
81 #define STAT_RFNE BIT3 // RX FIFO is not empty
82 #define STAT_TFE BIT2 // TX FIFO is completely empty
83 #define STAT_TFNF BIT1 // TX FIFO is not full
84
85 #define R_IC_TXFLR ( 0x74) // Transmit FIFO Level Register
86 #define R_IC_RXFLR ( 0x78) // Receive FIFO Level Register
87 #define R_IC_TX_ABRT_SOURCE ( 0x80) // I2C Transmit Abort Status Register
88 #define R_IC_SLV_DATA_NACK_ONLY ( 0x84) // Generate SLV_DATA_NACK Register
89 #define R_IC_DMA_CR ( 0x88) // DMA Control Register
90 #define R_IC_DMA_TDLR ( 0x8C) // DMA Transmit Data Level
91 #define R_IC_DMA_RDLR ( 0x90) // DMA Receive Data Level
92 #define R_IC_SDA_SETUP ( 0x94) // I2C SDA Setup Register
93 #define R_IC_ACK_GENERAL_CALL ( 0x98) // I2C ACK General Call Register
94 #define R_IC_ENABLE_STATUS ( 0x9C) // I2C Enable Status Register
95 #define R_IC_COMP_PARAM ( 0xF4) // Component Parameter Register
96 #define R_IC_COMP_VERSION ( 0xF8) // Component Version ID
97 #define R_IC_COMP_TYPE ( 0xFC) // Component Type
98
99 #define I2C_SS_SCL_HCNT_VALUE_100M 0x1DD
100 #define I2C_SS_SCL_LCNT_VALUE_100M 0x1E4
101 #define I2C_FS_SCL_HCNT_VALUE_100M 0x54
102 #define I2C_FS_SCL_LCNT_VALUE_100M 0x9a
103 #define I2C_HS_SCL_HCNT_VALUE_100M 0x7
104 #define I2C_HS_SCL_LCNT_VALUE_100M 0xE
105
106 #define IC_TAR_10BITADDR_MASTER BIT12
107 #define FIFO_SIZE 32
108 #define R_IC_INTR_STAT ( 0x2C) // I2c Inetrrupt Status
109 #define R_IC_INTR_MASK ( 0x30) // I2c Interrupt Mask
110 #define I2C_INTR_GEN_CALL BIT11 // General call received
111 #define I2C_INTR_START_DET BIT10
112 #define I2C_INTR_STOP_DET BIT9
113 #define I2C_INTR_ACTIVITY BIT8
114 #define I2C_INTR_TX_ABRT BIT6 // Set on NACK
115 #define I2C_INTR_TX_EMPTY BIT4
116 #define I2C_INTR_TX_OVER BIT3
117 #define I2C_INTR_RX_FULL BIT2 // Data bytes in RX FIFO over threshold
118 #define I2C_INTR_RX_OVER BIT1
119 #define I2C_INTR_RX_UNDER BIT0
120
121 #define R_PCH_LPIO_I2C_MEM_RESETS 0x804 // Software Reset
122 #define B_PCH_LPIO_I2C_MEM_RESETS_FUNC BIT1 // Function Clock Domain Reset
123 #define B_PCH_LPIO_I2C_MEM_RESETS_APB BIT0 // APB Domain Reset
124 #define R_PCH_LPSS_I2C_MEM_PCP 0x800 // Private Clock Parameters
125
126 #endif