i3c
Vitis Drivers API Documentation
xi3c_hw.h File Reference

Macros

#define XI3C_HW_H_
 < prevent circular inclusions More...
 
#define XI3C_BASEADDR   0x0
 AXI_I3C0 Base Address #define XI3C_BASEADDR 0x80000000. More...
 
#define XI3C_VERSION_OFFSET   0x00
 Register offsets for the XI3c device. More...
 
#define XI3C_RESET_OFFSET   0x04
 Soft Reset Register. More...
 
#define XI3C_CR_OFFSET   0x08
 Control Register. More...
 
#define XI3C_ADDRESS_OFFSET   0x0C
 Target Address Register. More...
 
#define XI3C_SR_OFFSET   0x10
 Status Register. More...
 
#define XI3C_INTR_STATUS_OFFSET   0x14
 Status Event Register. More...
 
#define XI3C_INTR_RE_OFFSET   0x18
 Status Event Enable(Rising Edge) Register. More...
 
#define XI3C_INTR_FE_OFFSET   0x1C
 Status Event Enable(Falling Edge) Register. More...
 
#define XI3C_CMD_FIFO_OFFSET   0x20
 I3C Command FIFO Register. More...
 
#define XI3C_WR_FIFO_OFFSET   0x24
 I3C Write Data FIFO Register. More...
 
#define XI3C_RD_FIFO_OFFSET   0x28
 I3C Read Data FIFO Register. More...
 
#define XI3C_RESP_STATUS_FIFO_OFFSET   0x2C
 I3C Response status FIFO Register. More...
 
#define XI3C_FIFO_LVL_STATUS_OFFSET   0x30
 I3C CMD & WR FIFO LVL Register. More...
 
#define XI3C_FIFO_LVL_STATUS_1_OFFSET   0x34
 I3C RESP & RD FIFO LVL Register. More...
 
#define XI3C_SCL_HIGH_TIME_OFFSET   0x38
 I3C SCL HIGH Register. More...
 
#define XI3C_SCL_LOW_TIME_OFFSET   0x3C
 I3C SCL LOW Register. More...
 
#define XI3C_SDA_HOLD_TIME_OFFSET   0x40
 I3C SDA HOLD Register. More...
 
#define XI3C_BUS_IDLE_OFFSET   0x44
 I3C CONTROLLER BUS IDLE Register. More...
 
#define XI3C_TSU_START_OFFSET   0x48
 I3C START SETUP Register. More...
 
#define XI3C_THD_START_OFFSET   0x4C
 I3C START HOLD Register. More...
 
#define XI3C_TSU_STOP_OFFSET   0x50
 I3C STOP Setup Register. More...
 
#define XI3C_OD_SCL_HIGH_TIME_OFFSET   0x54
 I3C OD SCL HIGH Register. More...
 
#define XI3C_OD_SCL_LOW_TIME_OFFSET   0x58
 I3C OD SCL LOW Register. More...
 
#define XI3C_TARGET_ADDR_BCR   0x60
 I3C Target dynamic Address and BCR Register. More...
 
#define XI3C_MWL_MRL   0x74
 Maximum Write and Max Read length. More...
 
#define XI3C_EVENT   0x78
 Target events. More...
 
#define XI3C_GETMXDS   0x80
 Target Device Max Data Speed. More...
 
#define XI3C_GETSTATUS   0x84
 Target Device current Status. More...
 
#define XI3C_GETCAPS_REG0   0x88
 Target Device Format 1 Capabilities. More...
 
#define XI3C_GETCAPS_REG1   0x8c
 Target Device Format 2 Capabilities. More...
 
#define XI3C_CON_RD_BYTE_COUNT   0x90
 Read byte count register. More...
 
Version Register mask(s)
#define XI3C_INTERNAL_REVISION_MASK   0x0000000F
 BITS 3:0 - Internal revision. More...
 
#define XI3C_CORE_PATCH_REVISION_MASK   0x000000F0
 BITS 7:4 - Patch revision. More...
 
#define XI3C_CORE_REVISION_NUM_MASK   0x0000FF00
 BITS 15:8 - Revision number. More...
 
#define XI3C_CORE_VERSION_MINOR_MASK   0x00FF0000
 BITS 23:16 - Minor version. More...
 
#define XI3C_CORE_VERSION_MAJOR_MASK   0xFF000000
 BITS 31:24 - Major version. More...
 
#define XI3C_CORE_REVISION_NUM_SHIFT   8
 Revision number shift. More...
 
Reset Register mask(s)
#define XI3C_SOFT_RESET_MASK   0x00000001
 BIT 0 - Reset. More...
 
#define XI3C_CMD_FIFO_RESET_MASK   0x00000002
 BIT 1 - Cmd fifo reset. More...
 
#define XI3C_WR_FIFO_RESET_MASK   0x00000004
 BIT 2 - Write fifo reset. More...
 
#define XI3C_RD_FIFO_RESET_MASK   0x00000008
 BIT 3 - Read fifo reset. More...
 
#define XI3C_RESP_FIFO_RESET_MASK   0x00000010
 BIT 4 - Response fifo reset. More...
 
#define XI3C_ALL_FIFOS_RESET_MASK   0x0000001E
 BIT 1 to 4 - All fifos reset. More...
 
Control Register (CR) mask(s)
#define XI3C_CR_EN_MASK   0x00000001
 BIT 0 - Core Enable. More...
 
#define XI3C_CR_ABORT_MASK   0x00000002
 BIT 1 - Abort Transaction. More...
 
#define XI3C_CR_RESUME_MASK   0x00000004
 BIT 2 - Resume Operation. More...
 
#define XI3C_CR_IBI_MASK   0x00000008
 BIT 3 - IBI Enable. More...
 
#define XI3C_CR_HJ_MASK   0x00000010
 BIT 4 - Hot Join Enable. More...
 
#define XI3C_CR_ACCEPT_CTRL_ROLE_REQ   0x00000020
 BIT 5 - Generate ACK for secondary controller role request IBI. More...
 
Status Register (SR) mask(s)
#define XI3C_SR_BUS_BUSY_MASK   0x00000001
 BIT 0 - Bus Busy. More...
 
#define XI3C_SR_CLK_STALL_MASK   0x00000002
 BIT 1 - Clock Stall. More...
 
#define XI3C_SR_CMD_FULL_MASK   0x00000004
 BIT 2 - Cmd Fifo Full. More...
 
#define XI3C_SR_RESP_FULL_MASK   0x00000008
 BIT 3 - Resp Fifo Full. More...
 
#define XI3C_SR_RESP_NOT_EMPTY_MASK   0x00000010
 BIT 4 - Resp Fifo not empty. More...
 
#define XI3C_SR_WR_FULL_MASK   0x00000020
 BIT 5 - Write Fifo Full. More...
 
#define XI3C_SR_RD_FULL_MASK   0x00000040
 BIT 6 - Read Fifo Full. More...
 
#define XI3C_SR_IBI_MASK   0x00000080
 BIT 7 - IBI. More...
 
#define XI3C_SR_HJ_MASK   0x00000100
 BIT 8 - Hot join. More...
 
#define XI3C_SR_CTRL_ROLE_REQUEST_MASK   0x00000200
 BIT 9 - Received control role request. More...
 
#define XI3C_SR_ERROR_TYPE_CE3_MASK   0x00000400
 BIT 10 - This field will be set if there is no START coming from the new Controller that has took over the Role. More...
 
#define XI3C_SR_RETURN_ROLE_REQ_ACK_MASK   0x00000800
 BIT 11 - Received ACK on controller role request back. More...
 
#define XI3C_SR_RD_FIFO_ALMOST_FULL_MASK   0x00001000
 BIT 12 - Read Fifo almost Full. More...
 
#define XI3C_SR_CMD_FIFO_NOT_EMPTY_MASK   0x00002000
 BIT 13 - CMD FIFO empty. More...
 
#define XI3C_SR_WR_FIFO_NOT_EMPTY_MASK   0x00004000
 BIT 14 - Write FIFO empty. More...
 
#define XI3C_SR_RD_FIFO_NOT_EMPTY_MASK   0x00008000
 BIT 15 - Read FIFO empty. More...
 
#define XI3C_SR_SLV_DYNC_ADDR_DONE_MASK   0x00080000
 BIT 19 - Dynamic address assigned to slave. More...
 
Status Register (SR) Shifts(s)
#define XI3C_SR_BUS_BUSY_SHIFT   0
 BIT 0 - Bus Busy. More...
 
#define XI3C_SR_CLK_STALL_SHIFT   1
 BIT 1 - Clock Stall. More...
 
#define XI3C_SR_CMD_FULL_SHIFT   2
 BIT 2 - Cmd Fifo Full. More...
 
#define XI3C_SR_RESP_FULL_SHIFT   3
 BIT 3 - Resp Fifo Full. More...
 
#define XI3C_SR_RESP_NOT_EMPTY_SHIFT   4
 BIT 4 - Resp Fifo not empty. More...
 
#define XI3C_SR_WR_FULL_SHIFT   5
 BIT 5 - Write Fifo Full. More...
 
#define XI3C_SR_RD_FULL_SHIFT   6
 BIT 6 - Read Fifo Full. More...
 
#define XI3C_SR_SLV_DYNC_ADDR_DONE_SHIFT   19
 BIT 19 - Dynamic address assigned to slave. More...
 
response and other mask(s)
#define XI3C_RESP_ID_MASK   0x0000000F
 
#define XI3C_RESP_RW_MASK   0x00000010
 
#define XI3C_RESP_CODE_MASK   0x000001E0
 
#define XI3C_RESP_BYTES_MASK   0x001FFE00
 
#define XI3C_SLV_RESP_CCC_MASK   0x1FE00000
 
#define XI3C_SLV_RESP_7E_FRAME_MASK   0x20000000
 
#define XI3C_MRL_MASK   0x0FFF0000
 
#define XI3C_GRP_ADDR_MASK   0x0000FF00
 
response and other shift(s)
#define XI3C_RESP_TID_SHIFT   0
 
#define XI3C_RESP_RW_SHIFT   4
 
#define XI3C_RESP_CODE_SHIFT   5
 
#define XI3C_RESP_BYTES_SHIFT   9
 
#define XI3C_RESP_LVL_SHIFT   16
 
#define XI3C_SLV_RESP_CCC_SHIFT   21
 
#define XI3C_SLV_RESP_7E_FRAME_SHIFT   29
 
#define XI3C_CMD_LVL_SHIFT   16
 
#define XI3C_MRL_SHIFT   16
 
#define XI3C_MWL_MRL_MSB_SHIFT   8
 
#define XI3C_GRP_ADDR_SHIFT   8
 
#define XI3C_GETSTATUS_FORMAT2_SHIFT   16
 
#define XI3C_GETMXDS_FORMAT3_DATA_SHIFT   16
 
#define XI3C_CAPS4_SHIFT   24
 
#define XI3C_CAPS3_SHIFT   16
 
#define XI3C_CAPS2_SHIFT   8
 
bit masks
#define XI3C_1BIT_MASK   0x00000001
 
#define XI3C_2BITS_MASK   0x00000003
 
#define XI3C_3BITS_MASK   0x00000007
 
#define XI3C_4BITS_MASK   0x0000000F
 
#define XI3C_5BITS_MASK   0x0000001F
 
#define XI3C_6BITS_MASK   0x0000003F
 
#define XI3C_7BITS_MASK   0x0000007F
 
#define XI3C_8BITS_MASK   0x000000FF
 
#define XI3C_9BITS_MASK   0x000001FF
 
#define XI3C_10BITS_MASK   0x000003FF
 
#define XI3C_11BITS_MASK   0x000007FF
 
#define XI3C_12BITS_MASK   0x00000FFF
 
#define XI3C_13BITS_MASK   0x00001FFF
 
#define XI3C_14BITS_MASK   0x00003FFF
 
#define XI3C_15BITS_MASK   0x00007FFF
 
#define XI3C_16BITS_MASK   0x0000FFFF
 
#define XI3C_17BITS_MASK   0x0001FFFF
 
#define XI3C_18BITS_MASK   0x0003FFFF
 
#define XI3C_19BITS_MASK   0x0007FFFF
 
#define XI3C_20BITS_MASK   0x000FFFFF
 
#define XI3C_MSB_8BITS_MASK   0x0000FF00
 
#define XI3C_MSB_16BITS_MASK   0xFFFF0000
 
interrupt Register (INTR) mask(s)
#define XI3C_INTR_BUS_BUSY_MASK   0x00000001
 BIT 0 - Bus Busy. More...
 
#define XI3C_INTR_CLK_STALL_MASK   0x00000002
 BIT 1 - Clock Stall. More...
 
#define XI3C_INTR_CMD_FULL_MASK   0x00000004
 BIT 2 - Cmd Fifo Full. More...
 
#define XI3C_INTR_RESP_FULL_MASK   0x00000008
 BIT 3 - Resp Fifo Full. More...
 
#define XI3C_INTR_RESP_NOT_EMPTY_MASK   0x00000010
 BIT 4 - Resp Fifo not empty. More...
 
#define XI3C_INTR_WR_FIFO_ALMOST_FULL_MASK   0x00000020
 BIT 5 - Write Fifo Full. More...
 
#define XI3C_INTR_RD_FULL_MASK   0x00000040
 BIT 6 - Read Fifo Full. More...
 
#define XI3C_ALL_INTR_MASK   0x0000007F
 6:0 BITS More...
 
#define XI3C_INTR_IBI_MASK   0x00000080
 BIT 7 - IBI. More...
 
#define XI3C_INTR_HJ_MASK   0x00000100
 BIT 8 - Hot join. More...
 
#define XI3C_INTR_CTRL_ROLE_REQUEST_MASK   0x00000200
 BIT 9 - Received control role request. More...
 
#define XI3C_INTR_ERROR_TYPE_CE3_MASK   0x00000400
 BIT 10 - This field will be set if there is no START coming from the new Controller that has took over the Role. More...
 
#define XI3C_INTR_RETURN_ROLE_REQ_ACK_MASK   0x00000800
 BIT 11 - Received ACK on controller role request back. More...
 
#define XI3C_INTR_RD_FIFO_ALMOST_FULL_MASK   0x00001000
 BIT 12 - Read Fifo almost Full. More...
 
#define XI3C_INTR_CMD_FIFO_NOT_EMPTY_MASK   0x00002000
 BIT 13 - CMD FIFO empty. More...
 
#define XI3C_INTR_WR_FIFO_NOT_EMPTY_MASK   0x00004000
 BIT 14 - Write FIFO empty. More...
 
#define XI3C_INTR_RD_FIFO_NOT_EMPTY_MASK   0x00008000
 BIT 15 - Read FIFO empty. More...
 
#define XI3c_ReadReg(BaseAddress, RegOffset)   XI3c_In32((BaseAddress) + (u32)(RegOffset))
 Read an I3C register. More...
 
#define XI3c_WriteReg(BaseAddress, RegOffset, RegisterValue)   XI3c_Out32((BaseAddress) + (u32)(RegOffset), (u32)(RegisterValue))
 Write an I3C register. More...
 
#define XI3c_WrFifoLevel(InstancePtr)
 Read WR FIFO LEVEL. More...
 
#define XI3c_CmdFifoLevel(InstancePtr)
 Read CMD FIFO LEVEL. More...
 
#define XI3c_RdFifoLevel(InstancePtr)
 Read RD FIFO LEVEL. More...
 
#define XI3c_RespFifoLevel(InstancePtr)
 Read RESP FIFO LEVEL. More...
 
#define XI3c_RxFifoNotEmpty(InstancePtr)
 Check Read FIFO empty status. More...
 
#define XI3c_RespFifoNotEmpty(InstancePtr)
 Check Response FIFO empty status. More...
 
#define XI3c_EnableREInterrupts(BaseAddress, IntrMask)
 Enable Raising edge interrupts. More...
 
#define XI3c_EnableFEInterrupts(BaseAddress, IntrMask)
 Enable Faling edge interrupts. More...
 
#define XI3c_DisableREInterrupts(BaseAddress, IntrMask)
 Disable raising edge interrupts. More...
 
#define XI3c_DisableFEInterrupts(BaseAddress, IntrMask)
 Disable faling edge interrupts. More...
 
#define XI3c_DisableAllREInterrupts(BaseAddress)
 Disable all raising edge interrupts. More...
 
#define XI3c_DisableAllFEInterrupts(BaseAddress)
 Disable all faling edge interrupts. More...
 
#define XI3c_FillSlaveSendCount(InstancePtr, ByteCount)
 Fill Slave send byte count value. More...
 
#define XI3c_ClearGrpAddr(InstancePtr)
 Clear the group address of target. More...
 
#define XI3c_GetMWL(InstancePtr)
 Read Maximum write length. More...
 
#define XI3c_GetMRL(InstancePtr)
 Read Maximum read length. More...