/** * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include #include "soc/soc.h" #ifdef __cplusplus extern "C" { #endif /** I3C_SLV_CONFIG_REG register * NA */ #define I3C_SLV_CONFIG_REG (DR_REG_I3C_SLV_BASE + 0x4) /** I3C_SLV_SLVENA : R/W; bitpos: [0]; default: 1; * 1: allow the slave to operate on i2c or i3c bus. 0: the slave will ignore the bus. * This should be not set until registers such as PARTNO, IDEXT and the like are set * 1st -if used- since they impact data to the master */ #define I3C_SLV_SLVENA (BIT(0)) #define I3C_SLV_SLVENA_M (I3C_SLV_SLVENA_V << I3C_SLV_SLVENA_S) #define I3C_SLV_SLVENA_V 0x00000001U #define I3C_SLV_SLVENA_S 0 /** I3C_SLV_NACK : R/W; bitpos: [1]; default: 0; * 1:the slave will NACK all requests to it except CCC broadcast. This should be used * with caution as the Master may determine the slave is missing if overused. */ #define I3C_SLV_NACK (BIT(1)) #define I3C_SLV_NACK_M (I3C_SLV_NACK_V << I3C_SLV_NACK_S) #define I3C_SLV_NACK_V 0x00000001U #define I3C_SLV_NACK_S 1 /** I3C_SLV_MATCHSS : R/W; bitpos: [2]; default: 0; * 1: the START and STOP sticky STATUS bits will only be set if MATCHED is set..This * allows START and STOP to be used to detect end of a message to /from this slave. */ #define I3C_SLV_MATCHSS (BIT(2)) #define I3C_SLV_MATCHSS_M (I3C_SLV_MATCHSS_V << I3C_SLV_MATCHSS_S) #define I3C_SLV_MATCHSS_V 0x00000001U #define I3C_SLV_MATCHSS_S 2 /** I3C_SLV_S0IGNORE : R/W; bitpos: [3]; default: 0; * If 1, the Slave will not detect S0 or S1 errors and so not lock up waiting on an * Exit Pattern. This should only be used when the bus will not use HDR. */ #define I3C_SLV_S0IGNORE (BIT(3)) #define I3C_SLV_S0IGNORE_M (I3C_SLV_S0IGNORE_V << I3C_SLV_S0IGNORE_S) #define I3C_SLV_S0IGNORE_V 0x00000001U #define I3C_SLV_S0IGNORE_S 3 /** I3C_SLV_DDROK : R/W; bitpos: [4]; default: 0; * NA */ #define I3C_SLV_DDROK (BIT(4)) #define I3C_SLV_DDROK_M (I3C_SLV_DDROK_V << I3C_SLV_DDROK_S) #define I3C_SLV_DDROK_V 0x00000001U #define I3C_SLV_DDROK_S 4 /** I3C_SLV_IDRAND : R/W; bitpos: [8]; default: 0; * NA */ #define I3C_SLV_IDRAND (BIT(8)) #define I3C_SLV_IDRAND_M (I3C_SLV_IDRAND_V << I3C_SLV_IDRAND_S) #define I3C_SLV_IDRAND_V 0x00000001U #define I3C_SLV_IDRAND_S 8 /** I3C_SLV_OFFLINE : R/W; bitpos: [9]; default: 0; * NA */ #define I3C_SLV_OFFLINE (BIT(9)) #define I3C_SLV_OFFLINE_M (I3C_SLV_OFFLINE_V << I3C_SLV_OFFLINE_S) #define I3C_SLV_OFFLINE_V 0x00000001U #define I3C_SLV_OFFLINE_S 9 /** I3C_SLV_BAMATCH : R/W; bitpos: [23:16]; default: 47; * Bus Available condition match value for current ???Slow clock???. This provides the * count of the slow clock to count out 1us (or more) to allow an IBI to drive SDA Low * when the Master is not doing so. The max width , and so max value, is controlled by * the block. Only if enabled for events such IBI or MR or HJ, and if enabled to * provide this as a register. With is limited to CLK_SLOW_BITS */ #define I3C_SLV_BAMATCH 0x000000FFU #define I3C_SLV_BAMATCH_M (I3C_SLV_BAMATCH_V << I3C_SLV_BAMATCH_S) #define I3C_SLV_BAMATCH_V 0x000000FFU #define I3C_SLV_BAMATCH_S 16 /** I3C_SLV_SADDR : R/W; bitpos: [31:25]; default: 0; * If allowed by the block:sets i2c 7 bits static address,else should be 0. If enabled * to use one and to be provided by SW. Block may provide in HW as well. */ #define I3C_SLV_SADDR 0x0000007FU #define I3C_SLV_SADDR_M (I3C_SLV_SADDR_V << I3C_SLV_SADDR_S) #define I3C_SLV_SADDR_V 0x0000007FU #define I3C_SLV_SADDR_S 25 /** I3C_SLV_STATUS_REG register * NA */ #define I3C_SLV_STATUS_REG (DR_REG_I3C_SLV_BASE + 0x8) /** I3C_SLV_STNOTSTOP : RO; bitpos: [0]; default: 0; * Is 1 if bus is busy(activity) and 0 when in a STOP condition. Other bits may also * set when busy. Note that this can also be true from an S0 or S1 error, which waits * for an Exit Pattern. */ #define I3C_SLV_STNOTSTOP (BIT(0)) #define I3C_SLV_STNOTSTOP_M (I3C_SLV_STNOTSTOP_V << I3C_SLV_STNOTSTOP_S) #define I3C_SLV_STNOTSTOP_V 0x00000001U #define I3C_SLV_STNOTSTOP_S 0 /** I3C_SLV_STMSG : RO; bitpos: [1]; default: 0; * Is 1 if this bus Slave is listening to the bus traffic or repsonding, If * STNOSTOP=1, then this will be 0 when a non-matching address seen until next * respeated START it STOP. */ #define I3C_SLV_STMSG (BIT(1)) #define I3C_SLV_STMSG_M (I3C_SLV_STMSG_V << I3C_SLV_STMSG_S) #define I3C_SLV_STMSG_V 0x00000001U #define I3C_SLV_STMSG_S 1 /** I3C_SLV_STCCCH : RO; bitpos: [2]; default: 0; * Is 1 if a CCC message is being handled automatically. */ #define I3C_SLV_STCCCH (BIT(2)) #define I3C_SLV_STCCCH_M (I3C_SLV_STCCCH_V << I3C_SLV_STCCCH_S) #define I3C_SLV_STCCCH_V 0x00000001U #define I3C_SLV_STCCCH_S 2 /** I3C_SLV_STREQRD : RO; bitpos: [3]; default: 0; * 1 if the req in process is an sdr read from this slave or an IBI is being pushed * out, */ #define I3C_SLV_STREQRD (BIT(3)) #define I3C_SLV_STREQRD_M (I3C_SLV_STREQRD_V << I3C_SLV_STREQRD_S) #define I3C_SLV_STREQRD_V 0x00000001U #define I3C_SLV_STREQRD_S 3 /** I3C_SLV_STREQWR : RO; bitpos: [4]; default: 0; * NA */ #define I3C_SLV_STREQWR (BIT(4)) #define I3C_SLV_STREQWR_M (I3C_SLV_STREQWR_V << I3C_SLV_STREQWR_S) #define I3C_SLV_STREQWR_V 0x00000001U #define I3C_SLV_STREQWR_S 4 /** I3C_SLV_STDAA : RO; bitpos: [5]; default: 0; * NA */ #define I3C_SLV_STDAA (BIT(5)) #define I3C_SLV_STDAA_M (I3C_SLV_STDAA_V << I3C_SLV_STDAA_S) #define I3C_SLV_STDAA_V 0x00000001U #define I3C_SLV_STDAA_S 5 /** I3C_SLV_STHDR : RO; bitpos: [6]; default: 0; * NA */ #define I3C_SLV_STHDR (BIT(6)) #define I3C_SLV_STHDR_M (I3C_SLV_STHDR_V << I3C_SLV_STHDR_S) #define I3C_SLV_STHDR_V 0x00000001U #define I3C_SLV_STHDR_S 6 /** I3C_SLV_START : R/W; bitpos: [8]; default: 0; * NA */ #define I3C_SLV_START (BIT(8)) #define I3C_SLV_START_M (I3C_SLV_START_V << I3C_SLV_START_S) #define I3C_SLV_START_V 0x00000001U #define I3C_SLV_START_S 8 /** I3C_SLV_MATCHED : R/W; bitpos: [9]; default: 0; * NA */ #define I3C_SLV_MATCHED (BIT(9)) #define I3C_SLV_MATCHED_M (I3C_SLV_MATCHED_V << I3C_SLV_MATCHED_S) #define I3C_SLV_MATCHED_V 0x00000001U #define I3C_SLV_MATCHED_S 9 /** I3C_SLV_STOP : R/W; bitpos: [10]; default: 0; * NA */ #define I3C_SLV_STOP (BIT(10)) #define I3C_SLV_STOP_M (I3C_SLV_STOP_V << I3C_SLV_STOP_S) #define I3C_SLV_STOP_V 0x00000001U #define I3C_SLV_STOP_S 10 /** I3C_SLV_RXPEND : RO; bitpos: [11]; default: 0; * Receiving a message from master,which is not being handled by block(not a CCC * internally processed). For all but External FIFO, this uses DATACTRL RXTRIG, which * defaults to not-empty. If DMA is enabled for RX, DMA will be signaled as well. Will * self-clear if data is read(FIFO and non-FIFO) */ #define I3C_SLV_RXPEND (BIT(11)) #define I3C_SLV_RXPEND_M (I3C_SLV_RXPEND_V << I3C_SLV_RXPEND_S) #define I3C_SLV_RXPEND_V 0x00000001U #define I3C_SLV_RXPEND_S 11 /** I3C_SLV_TXNOTFULL : RO; bitpos: [12]; default: 0; * Is 1 when the To-bus buffer/FIFO can accept more data to go out. Defau:1. For all * but External FIFO, this uses DATACTRL TXTRIG,which defaults to not-full. If DMA is * enabled for TX, it will also be signaled to provide more. */ #define I3C_SLV_TXNOTFULL (BIT(12)) #define I3C_SLV_TXNOTFULL_M (I3C_SLV_TXNOTFULL_V << I3C_SLV_TXNOTFULL_S) #define I3C_SLV_TXNOTFULL_V 0x00000001U #define I3C_SLV_TXNOTFULL_S 12 /** I3C_SLV_DACHG : R/W; bitpos: [13]; default: 0; * The Slv Dynamic Address has been assigned, reassigned, or reset(lost) and is now in * that state of being valid or none. Actual DA can be seen in the DYNADDR register. * Note that this will also be used when MAP Auto feature is configured. This will be * changing one or more MAP items. See DYNADDR and/or MAPCTRLn. DYNAADDR for the main * DA(0) will indicate if last change was due to Auto MAP. */ #define I3C_SLV_DACHG (BIT(13)) #define I3C_SLV_DACHG_M (I3C_SLV_DACHG_V << I3C_SLV_DACHG_S) #define I3C_SLV_DACHG_V 0x00000001U #define I3C_SLV_DACHG_S 13 /** I3C_SLV_CCC : R/W; bitpos: [14]; default: 0; * A common -command-code(CCC), not handled by block, has been received. This acts * differently between: *Broadcasted ones, which will then also correspond with RXPEND * and the 1st byte will be the CCC(command) . *Direct ones, which may never be * directed to this device. If it is, then the TXSEND or RXPEND will be triggered * with this end the RXPEND will contain the command. */ #define I3C_SLV_CCC (BIT(14)) #define I3C_SLV_CCC_M (I3C_SLV_CCC_V << I3C_SLV_CCC_S) #define I3C_SLV_CCC_V 0x00000001U #define I3C_SLV_CCC_S 14 /** I3C_SLV_ERRWARN : RO; bitpos: [15]; default: 0; * NA */ #define I3C_SLV_ERRWARN (BIT(15)) #define I3C_SLV_ERRWARN_M (I3C_SLV_ERRWARN_V << I3C_SLV_ERRWARN_S) #define I3C_SLV_ERRWARN_V 0x00000001U #define I3C_SLV_ERRWARN_S 15 /** I3C_SLV_HDRMATCH : R/W; bitpos: [16]; default: 0; * NA */ #define I3C_SLV_HDRMATCH (BIT(16)) #define I3C_SLV_HDRMATCH_M (I3C_SLV_HDRMATCH_V << I3C_SLV_HDRMATCH_S) #define I3C_SLV_HDRMATCH_V 0x00000001U #define I3C_SLV_HDRMATCH_S 16 /** I3C_SLV_CTRL_REG register * NA */ #define I3C_SLV_CTRL_REG (DR_REG_I3C_SLV_BASE + 0xc) /** I3C_SLV_SLV_EVENT : R/W; bitpos: [1:0]; default: 0; * If set to non-0, will request an event. Once requested, STATUS.EVENT and EVDET will * show the status as it progresses. Once completed, the field will automatically * return to 0. Once non-0, only 0 can be written(to cancel) until done. 0: Normal * mode. If set to 0 after was a non-0 value, will cancel if not already in flight. 1: * start an IBI. This will try to push through an IBI on the bus. If data associate * with the IBI, it will be drawn from the IBIDATA field. Note that if Time control is * enabled, this will include anytime control related bytes further, the IBIDATA byte * will have bit7 set to 1. */ #define I3C_SLV_SLV_EVENT 0x00000003U #define I3C_SLV_SLV_EVENT_M (I3C_SLV_SLV_EVENT_V << I3C_SLV_SLV_EVENT_S) #define I3C_SLV_SLV_EVENT_V 0x00000003U #define I3C_SLV_SLV_EVENT_S 0 /** I3C_SLV_EXTDATA : R/W; bitpos: [3]; default: 0; * reserved */ #define I3C_SLV_EXTDATA (BIT(3)) #define I3C_SLV_EXTDATA_M (I3C_SLV_EXTDATA_V << I3C_SLV_EXTDATA_S) #define I3C_SLV_EXTDATA_V 0x00000001U #define I3C_SLV_EXTDATA_S 3 /** I3C_SLV_MAPIDX : R/W; bitpos: [7:4]; default: 0; * Index of Dynamic Address that IBI is for. This is 0 for the main or base Dynamic * Address, or can be any valid index. */ #define I3C_SLV_MAPIDX 0x0000000FU #define I3C_SLV_MAPIDX_M (I3C_SLV_MAPIDX_V << I3C_SLV_MAPIDX_S) #define I3C_SLV_MAPIDX_V 0x0000000FU #define I3C_SLV_MAPIDX_S 4 /** I3C_SLV_IBIDATA : R/W; bitpos: [15:8]; default: 0; * Data byte to go with an IBI, if enabled for it. If enabled (was in BCR), then it is * required. */ #define I3C_SLV_IBIDATA 0x000000FFU #define I3C_SLV_IBIDATA_M (I3C_SLV_IBIDATA_V << I3C_SLV_IBIDATA_S) #define I3C_SLV_IBIDATA_V 0x000000FFU #define I3C_SLV_IBIDATA_S 8 /** I3C_SLV_PENDINT : R/W; bitpos: [19:16]; default: 0; * Should be set to the pending interrupt that GETSTATUS CCC will return. This should * be maintained by the application if used and configured, as the Master will read * this. If not configured, the GETSTATUS field will return 1 if an IBI is pending, * and 0 otherwise. */ #define I3C_SLV_PENDINT 0x0000000FU #define I3C_SLV_PENDINT_M (I3C_SLV_PENDINT_V << I3C_SLV_PENDINT_S) #define I3C_SLV_PENDINT_V 0x0000000FU #define I3C_SLV_PENDINT_S 16 /** I3C_SLV_ACTSTATE : R/W; bitpos: [21:20]; default: 0; * NA */ #define I3C_SLV_ACTSTATE 0x00000003U #define I3C_SLV_ACTSTATE_M (I3C_SLV_ACTSTATE_V << I3C_SLV_ACTSTATE_S) #define I3C_SLV_ACTSTATE_V 0x00000003U #define I3C_SLV_ACTSTATE_S 20 /** I3C_SLV_VENDINFO : R/W; bitpos: [31:24]; default: 0; * NA */ #define I3C_SLV_VENDINFO 0x000000FFU #define I3C_SLV_VENDINFO_M (I3C_SLV_VENDINFO_V << I3C_SLV_VENDINFO_S) #define I3C_SLV_VENDINFO_V 0x000000FFU #define I3C_SLV_VENDINFO_S 24 /** I3C_SLV_INTSET_REG register * INSET allows setting enables for interrupts(connecting the corresponding STATUS * source to causing an IRQ to the processor) */ #define I3C_SLV_INTSET_REG (DR_REG_I3C_SLV_BASE + 0x10) /** I3C_SLV_STOP_ENA : R/W; bitpos: [10]; default: 0; * Interrupt on STOP state on the bus. See Start as the preferred interrupt when * needed. This interrupt may not trigger for quick STOP/START combination, as it * relates to the state of being stopped. */ #define I3C_SLV_STOP_ENA (BIT(10)) #define I3C_SLV_STOP_ENA_M (I3C_SLV_STOP_ENA_V << I3C_SLV_STOP_ENA_S) #define I3C_SLV_STOP_ENA_V 0x00000001U #define I3C_SLV_STOP_ENA_S 10 /** I3C_SLV_RXPEND_ENA : R/W; bitpos: [11]; default: 0; * Interrupt when receiving a message from Master, which is not being handled by the * block (excludes CCCs being handled automatically). If FIFO, then RX fullness * trigger. If DMA, then message end. */ #define I3C_SLV_RXPEND_ENA (BIT(11)) #define I3C_SLV_RXPEND_ENA_M (I3C_SLV_RXPEND_ENA_V << I3C_SLV_RXPEND_ENA_S) #define I3C_SLV_RXPEND_ENA_V 0x00000001U #define I3C_SLV_RXPEND_ENA_S 11 /** I3C_SLV_TXSEND_ENA : R/W; bitpos: [12]; default: 0; * NA */ #define I3C_SLV_TXSEND_ENA (BIT(12)) #define I3C_SLV_TXSEND_ENA_M (I3C_SLV_TXSEND_ENA_V << I3C_SLV_TXSEND_ENA_S) #define I3C_SLV_TXSEND_ENA_V 0x00000001U #define I3C_SLV_TXSEND_ENA_S 12 /** I3C_SLV_INTCLR_REG register * NA */ #define I3C_SLV_INTCLR_REG (DR_REG_I3C_SLV_BASE + 0x14) /** I3C_SLV_STOP_CLR : WO; bitpos: [10]; default: 0; * Interrupt on STOP state on the bus. See Start as the preferred interrupt when * needed. This interrupt may not trigger for quick STOP/START combination, as it * relates to the state of being stopped. */ #define I3C_SLV_STOP_CLR (BIT(10)) #define I3C_SLV_STOP_CLR_M (I3C_SLV_STOP_CLR_V << I3C_SLV_STOP_CLR_S) #define I3C_SLV_STOP_CLR_V 0x00000001U #define I3C_SLV_STOP_CLR_S 10 /** I3C_SLV_RXPEND_CLR : WO; bitpos: [11]; default: 0; * Interrupt when receiving a message from Master, which is not being handled by the * block (excludes CCCs being handled automatically). If FIFO, then RX fullness * trigger. If DMA, then message end. */ #define I3C_SLV_RXPEND_CLR (BIT(11)) #define I3C_SLV_RXPEND_CLR_M (I3C_SLV_RXPEND_CLR_V << I3C_SLV_RXPEND_CLR_S) #define I3C_SLV_RXPEND_CLR_V 0x00000001U #define I3C_SLV_RXPEND_CLR_S 11 /** I3C_SLV_TXSEND_CLR : WO; bitpos: [12]; default: 0; * NA */ #define I3C_SLV_TXSEND_CLR (BIT(12)) #define I3C_SLV_TXSEND_CLR_M (I3C_SLV_TXSEND_CLR_V << I3C_SLV_TXSEND_CLR_S) #define I3C_SLV_TXSEND_CLR_V 0x00000001U #define I3C_SLV_TXSEND_CLR_S 12 /** I3C_SLV_INTMASKED_REG register * NA */ #define I3C_SLV_INTMASKED_REG (DR_REG_I3C_SLV_BASE + 0x18) /** I3C_SLV_STOP_MASK : RO; bitpos: [10]; default: 0; * Interrupt on STOP state on the bus. See Start as the preferred interrupt when * needed. This interrupt may not trigger for quick STOP/START combination, as it * relates to the state of being stopped. */ #define I3C_SLV_STOP_MASK (BIT(10)) #define I3C_SLV_STOP_MASK_M (I3C_SLV_STOP_MASK_V << I3C_SLV_STOP_MASK_S) #define I3C_SLV_STOP_MASK_V 0x00000001U #define I3C_SLV_STOP_MASK_S 10 /** I3C_SLV_RXPEND_MASK : RO; bitpos: [11]; default: 0; * Interrupt when receiving a message from Master, which is not being handled by the * block (excludes CCCs being handled automatically). If FIFO, then RX fullness * trigger. If DMA, then message end. */ #define I3C_SLV_RXPEND_MASK (BIT(11)) #define I3C_SLV_RXPEND_MASK_M (I3C_SLV_RXPEND_MASK_V << I3C_SLV_RXPEND_MASK_S) #define I3C_SLV_RXPEND_MASK_V 0x00000001U #define I3C_SLV_RXPEND_MASK_S 11 /** I3C_SLV_TXSEND_MASK : RO; bitpos: [12]; default: 0; * NA */ #define I3C_SLV_TXSEND_MASK (BIT(12)) #define I3C_SLV_TXSEND_MASK_M (I3C_SLV_TXSEND_MASK_V << I3C_SLV_TXSEND_MASK_S) #define I3C_SLV_TXSEND_MASK_V 0x00000001U #define I3C_SLV_TXSEND_MASK_S 12 /** I3C_SLV_DATACTRL_REG register * NA */ #define I3C_SLV_DATACTRL_REG (DR_REG_I3C_SLV_BASE + 0x2c) /** I3C_SLV_FLUSHTB : WO; bitpos: [0]; default: 0; * Flushes the from-bus buffer/FIFO. Not normally used */ #define I3C_SLV_FLUSHTB (BIT(0)) #define I3C_SLV_FLUSHTB_M (I3C_SLV_FLUSHTB_V << I3C_SLV_FLUSHTB_S) #define I3C_SLV_FLUSHTB_V 0x00000001U #define I3C_SLV_FLUSHTB_S 0 /** I3C_SLV_FLUSHFB : WO; bitpos: [1]; default: 0; * Flushes the to-bus buffer/FIFO. Used when Master terminates a to-bus (read) message * prematurely */ #define I3C_SLV_FLUSHFB (BIT(1)) #define I3C_SLV_FLUSHFB_M (I3C_SLV_FLUSHFB_V << I3C_SLV_FLUSHFB_S) #define I3C_SLV_FLUSHFB_V 0x00000001U #define I3C_SLV_FLUSHFB_S 1 /** I3C_SLV_UNLOCK : WO; bitpos: [3]; default: 0; * If this bit is not written 1, the register bits from 7 to 4 are not changed on * write. */ #define I3C_SLV_UNLOCK (BIT(3)) #define I3C_SLV_UNLOCK_M (I3C_SLV_UNLOCK_V << I3C_SLV_UNLOCK_S) #define I3C_SLV_UNLOCK_V 0x00000001U #define I3C_SLV_UNLOCK_S 3 /** I3C_SLV_TXTRIG : R/W; bitpos: [5:4]; default: 3; * Trigger level for tx emptiness when FIFOed, Affects interrupt and DMA(if enabled). * The defaults is 3 */ #define I3C_SLV_TXTRIG 0x00000003U #define I3C_SLV_TXTRIG_M (I3C_SLV_TXTRIG_V << I3C_SLV_TXTRIG_S) #define I3C_SLV_TXTRIG_V 0x00000003U #define I3C_SLV_TXTRIG_S 4 /** I3C_SLV_RXTRIG : R/W; bitpos: [7:6]; default: 2; * Trigger level for rx fulless when FIFOed, Affects interrupt and DMA(if enabled). * The defaults is 3 */ #define I3C_SLV_RXTRIG 0x00000003U #define I3C_SLV_RXTRIG_M (I3C_SLV_RXTRIG_V << I3C_SLV_RXTRIG_S) #define I3C_SLV_RXTRIG_V 0x00000003U #define I3C_SLV_RXTRIG_S 6 /** I3C_SLV_TXCOUNT : RO; bitpos: [20:16]; default: 0; * NA */ #define I3C_SLV_TXCOUNT 0x0000001FU #define I3C_SLV_TXCOUNT_M (I3C_SLV_TXCOUNT_V << I3C_SLV_TXCOUNT_S) #define I3C_SLV_TXCOUNT_V 0x0000001FU #define I3C_SLV_TXCOUNT_S 16 /** I3C_SLV_RXCOUNT : RO; bitpos: [28:24]; default: 0; * NA */ #define I3C_SLV_RXCOUNT 0x0000001FU #define I3C_SLV_RXCOUNT_M (I3C_SLV_RXCOUNT_V << I3C_SLV_RXCOUNT_S) #define I3C_SLV_RXCOUNT_V 0x0000001FU #define I3C_SLV_RXCOUNT_S 24 /** I3C_SLV_TXFULL : RO; bitpos: [30]; default: 0; * NA */ #define I3C_SLV_TXFULL (BIT(30)) #define I3C_SLV_TXFULL_M (I3C_SLV_TXFULL_V << I3C_SLV_TXFULL_S) #define I3C_SLV_TXFULL_V 0x00000001U #define I3C_SLV_TXFULL_S 30 /** I3C_SLV_RXEMPTY : RO; bitpos: [31]; default: 0; * NA */ #define I3C_SLV_RXEMPTY (BIT(31)) #define I3C_SLV_RXEMPTY_M (I3C_SLV_RXEMPTY_V << I3C_SLV_RXEMPTY_S) #define I3C_SLV_RXEMPTY_V 0x00000001U #define I3C_SLV_RXEMPTY_S 31 /** I3C_SLV_WDATAB_REG register * NA */ #define I3C_SLV_WDATAB_REG (DR_REG_I3C_SLV_BASE + 0x30) /** I3C_SLV_WDATAB : WO; bitpos: [7:0]; default: 0; * NA */ #define I3C_SLV_WDATAB 0x000000FFU #define I3C_SLV_WDATAB_M (I3C_SLV_WDATAB_V << I3C_SLV_WDATAB_S) #define I3C_SLV_WDATAB_V 0x000000FFU #define I3C_SLV_WDATAB_S 0 /** I3C_SLV_WDATA_END : WO; bitpos: [8]; default: 0; * NA */ #define I3C_SLV_WDATA_END (BIT(8)) #define I3C_SLV_WDATA_END_M (I3C_SLV_WDATA_END_V << I3C_SLV_WDATA_END_S) #define I3C_SLV_WDATA_END_V 0x00000001U #define I3C_SLV_WDATA_END_S 8 /** I3C_SLV_WDATABE_REG register * NA */ #define I3C_SLV_WDATABE_REG (DR_REG_I3C_SLV_BASE + 0x34) /** I3C_SLV_WDATABE : WO; bitpos: [7:0]; default: 0; * NA */ #define I3C_SLV_WDATABE 0x000000FFU #define I3C_SLV_WDATABE_M (I3C_SLV_WDATABE_V << I3C_SLV_WDATABE_S) #define I3C_SLV_WDATABE_V 0x000000FFU #define I3C_SLV_WDATABE_S 0 /** I3C_SLV_RDARAB_REG register * Read Byte Data (from-bus) register */ #define I3C_SLV_RDARAB_REG (DR_REG_I3C_SLV_BASE + 0x40) /** I3C_SLV_DATA0 : RO; bitpos: [7:0]; default: 0; * This register allows reading a byte from the bus unless external FIFO is used. A * byte should not be read unless there is data waiting, as indicated by the RXPEND * bit being set in the STATUS register */ #define I3C_SLV_DATA0 0x000000FFU #define I3C_SLV_DATA0_M (I3C_SLV_DATA0_V << I3C_SLV_DATA0_S) #define I3C_SLV_DATA0_V 0x000000FFU #define I3C_SLV_DATA0_S 0 /** I3C_SLV_RDATAH_REG register * Read Half-word Data (from-bus) register */ #define I3C_SLV_RDATAH_REG (DR_REG_I3C_SLV_BASE + 0x48) /** I3C_SLV_DATA_LSB : RO; bitpos: [7:0]; default: 0; * NA */ #define I3C_SLV_DATA_LSB 0x000000FFU #define I3C_SLV_DATA_LSB_M (I3C_SLV_DATA_LSB_V << I3C_SLV_DATA_LSB_S) #define I3C_SLV_DATA_LSB_V 0x000000FFU #define I3C_SLV_DATA_LSB_S 0 /** I3C_SLV_DATA_MSB : RO; bitpos: [15:8]; default: 0; * This register allows reading a Half-word (byte pair) from the bus unless external * FIFO is used. A Half-word should not be read unless there is at least 2 bytes of * data waiting, as indicated by the RX FIFO level trigger or RXCOUNT available space * in the DATACTRL register */ #define I3C_SLV_DATA_MSB 0x000000FFU #define I3C_SLV_DATA_MSB_M (I3C_SLV_DATA_MSB_V << I3C_SLV_DATA_MSB_S) #define I3C_SLV_DATA_MSB_V 0x000000FFU #define I3C_SLV_DATA_MSB_S 8 /** I3C_SLV_CAPABILITIES2_REG register * NA */ #define I3C_SLV_CAPABILITIES2_REG (DR_REG_I3C_SLV_BASE + 0x5c) /** I3C_SLV_CAPABLITIES2 : RO; bitpos: [31:0]; default: 256; * NA */ #define I3C_SLV_CAPABLITIES2 0xFFFFFFFFU #define I3C_SLV_CAPABLITIES2_M (I3C_SLV_CAPABLITIES2_V << I3C_SLV_CAPABLITIES2_S) #define I3C_SLV_CAPABLITIES2_V 0xFFFFFFFFU #define I3C_SLV_CAPABLITIES2_S 0 /** I3C_SLV_CAPABILITIES_REG register * NA */ #define I3C_SLV_CAPABILITIES_REG (DR_REG_I3C_SLV_BASE + 0x60) /** I3C_SLV_CAPABLITIES : RO; bitpos: [31:0]; default: 2081684508; * NA */ #define I3C_SLV_CAPABLITIES 0xFFFFFFFFU #define I3C_SLV_CAPABLITIES_M (I3C_SLV_CAPABLITIES_V << I3C_SLV_CAPABLITIES_S) #define I3C_SLV_CAPABLITIES_V 0xFFFFFFFFU #define I3C_SLV_CAPABLITIES_S 0 /** I3C_SLV_IDPARTNO_REG register * NA */ #define I3C_SLV_IDPARTNO_REG (DR_REG_I3C_SLV_BASE + 0x6c) /** I3C_SLV_PARTNO : R/W; bitpos: [31:0]; default: 0; * NA */ #define I3C_SLV_PARTNO 0xFFFFFFFFU #define I3C_SLV_PARTNO_M (I3C_SLV_PARTNO_V << I3C_SLV_PARTNO_S) #define I3C_SLV_PARTNO_V 0xFFFFFFFFU #define I3C_SLV_PARTNO_S 0 /** I3C_SLV_IDEXT_REG register * NA */ #define I3C_SLV_IDEXT_REG (DR_REG_I3C_SLV_BASE + 0x70) /** I3C_SLV_IDEXT : R/W; bitpos: [31:0]; default: 0; * NA */ #define I3C_SLV_IDEXT 0xFFFFFFFFU #define I3C_SLV_IDEXT_M (I3C_SLV_IDEXT_V << I3C_SLV_IDEXT_S) #define I3C_SLV_IDEXT_V 0xFFFFFFFFU #define I3C_SLV_IDEXT_S 0 /** I3C_SLV_VENDORID_REG register * NA */ #define I3C_SLV_VENDORID_REG (DR_REG_I3C_SLV_BASE + 0x74) /** I3C_SLV_VID : R/W; bitpos: [14:0]; default: 21840; * NA */ #define I3C_SLV_VID 0x00007FFFU #define I3C_SLV_VID_M (I3C_SLV_VID_V << I3C_SLV_VID_S) #define I3C_SLV_VID_V 0x00007FFFU #define I3C_SLV_VID_S 0 #ifdef __cplusplus } #endif