/* Digital Audio Interface(DAI) Controller register header Header file for DAI module register This file is the header file that define register for DAI module @file dai_reg.h @ingroup mIDrvAud_DAI @note Nothing Copyright Novatek Microelectronics Corp. 2016. All rights reserved. */ #ifndef _DAI_REG_H #define _DAI_REG_H #ifdef __KERNEL__ #include "mach/rcw_macro.h" //#include "kwrap/type.h" #elif defined(__FREERTOS) #include "rcw_macro.h" #include "kwrap/type.h" #endif // Control Register REGDEF_OFFSET(DAI_CTRL_REG, 0x00) REGDEF_BEGIN(DAI_CTRL_REG) REGDEF_BIT(DAIEN, 1) REGDEF_BIT(, 3) REGDEF_BIT(DMA_TX1_EN, 1) REGDEF_BIT(DMA_TX2_EN, 1) REGDEF_BIT(DMA_RX_EN, 1) REGDEF_BIT(DMA_TXLB_EN, 1) REGDEF_BIT(, 4) REGDEF_BIT(TX1_EN, 1) REGDEF_BIT(TX2_EN, 1) REGDEF_BIT(RX_EN, 1) REGDEF_BIT(TXLB_EN, 1) REGDEF_BIT(, 16) REGDEF_END(DAI_CTRL_REG) // Mode Configuration Register 0 REGDEF_OFFSET(DAI_CONFIG_REG, 0x04) REGDEF_BEGIN(DAI_CONFIG_REG) REGDEF_BIT(EXCODEC_EN, 1) REGDEF_BIT(, 6) REGDEF_BIT(RX_SRC_MUX_SEL, 1) REGDEF_BIT(TX_MUX_SEL, 1) REGDEF_BIT(TX_MIXER, 1) REGDEF_BIT(, 2) REGDEF_BIT(HDMI_CH_SEL, 2) REGDEF_BIT(, 6) REGDEF_BIT(AVSYNC, 1) REGDEF_BIT(TXLB_SYNC, 1) REGDEF_BIT(, 2) REGDEF_BIT(AVSYNC_SRC, 3) REGDEF_BIT(, 5) REGDEF_END(DAI_CONFIG_REG) // I2S Mode Configuration Register REGDEF_OFFSET(DAI_I2SCONFIG_REG, 0x08) REGDEF_BEGIN(DAI_I2SCONFIG_REG) REGDEF_BIT(SLAVE, 1) REGDEF_BIT(I2S_ASFCK_INV, 1) REGDEF_BIT(, 2) REGDEF_BIT(CKRATIO, 2) REGDEF_BIT(, 2) REGDEF_BIT(CHANNEL_LEN, 1) REGDEF_BIT(, 3) REGDEF_BIT(I2SCKR_MATCH, 1) REGDEF_BIT(, 3) REGDEF_BIT(I2SCKR_CUR, 3) REGDEF_BIT(, 1) REGDEF_BIT(I2S_ASFCK_OFS, 8) REGDEF_BIT(, 4) REGDEF_END(DAI_I2SCONFIG_REG) // Format Configuration Register 0 REGDEF_OFFSET(DAI_FMTCFG0_REG, 0x10) REGDEF_BEGIN(DAI_FMTCFG0_REG) REGDEF_BIT(TX1_SOUNDM, 2) REGDEF_BIT(, 2) REGDEF_BIT(TX1_SOUNDCH, 2) REGDEF_BIT(, 2) REGDEF_BIT(TX1_PCMLEN, 2) REGDEF_BIT(, 1) REGDEF_BIT(TX1_DRAMCH, 1) REGDEF_BIT(, 4) REGDEF_BIT(TX2_SOUNDM, 2) REGDEF_BIT(, 2) REGDEF_BIT(TX2_SOUNDCH, 2) REGDEF_BIT(, 2) REGDEF_BIT(TX2_PCMLEN, 2) REGDEF_BIT(, 1) REGDEF_BIT(TX2_DRAMCH, 1) REGDEF_BIT(, 4) REGDEF_END(DAI_FMTCFG0_REG) // Format Configuration Register 1 REGDEF_OFFSET(DAI_FMTCFG1_REG, 0x14) REGDEF_BEGIN(DAI_FMTCFG1_REG) REGDEF_BIT(RX_SOUNDM, 2) REGDEF_BIT(, 2) REGDEF_BIT(RX_SOUNDCH, 2) REGDEF_BIT(, 2) REGDEF_BIT(RX_PCMLEN, 2) REGDEF_BIT(, 1) REGDEF_BIT(RX_DRAMCH, 1) REGDEF_BIT(, 20) REGDEF_END(DAI_FMTCFG1_REG) // Format Configuration Register 2 REGDEF_OFFSET(DAI_FMTCFG2_REG, 0x18) REGDEF_BEGIN(DAI_FMTCFG2_REG) REGDEF_BIT(TXLB_SOUNDM, 2) REGDEF_BIT(, 2) REGDEF_BIT(TXLB_SOUNDCH, 2) REGDEF_BIT(, 2) REGDEF_BIT(TXLB_PCMLEN, 2) REGDEF_BIT(, 1) REGDEF_BIT(TXLB_DRAMCH, 1) REGDEF_BIT(, 20) REGDEF_END(DAI_FMTCFG2_REG) // Interrupt enable Register REGDEF_OFFSET(DAI_INTEN_REG, 0x20) REGDEF_BEGIN(DAI_INTEN_REG) REGDEF_BIT(TX1_DMABFI_INTEN, 1) REGDEF_BIT(TX2_DMABFI_INTEN, 1) REGDEF_BIT(RX1_DMABFI_INTEN, 1) REGDEF_BIT(RX2_DMABFI_INTEN, 1) REGDEF_BIT(TX1_DMALOAD_INTEN, 1) REGDEF_BIT(TX2_DMALOAD_INTEN, 1) REGDEF_BIT(RX_DMALOAD_INTEN, 1) REGDEF_BIT(, 1) REGDEF_BIT(TX1_STOP_INTEN, 1) REGDEF_BIT(TX2_STOP_INTEN, 1) REGDEF_BIT(RX_STOP_INTEN, 1) REGDEF_BIT(, 1) REGDEF_BIT(TX1_BWERR_INTEN, 1) REGDEF_BIT(TX2_BWERR_INTEN, 1) REGDEF_BIT(RX1_BWERR_INTEN, 1) REGDEF_BIT(RX2_BWERR_INTEN, 1) REGDEF_BIT(TX1_TCI_INTEN, 1) REGDEF_BIT(, 1) REGDEF_BIT(RX_TCI_INTEN, 1) REGDEF_BIT(, 1) REGDEF_BIT(RX_TCLATI_INTEN, 1) REGDEF_BIT(, 11) REGDEF_END(DAI_INTEN_REG) // Interrupt enable Register REGDEF_OFFSET(DAI_INTEN2_REG, 0x24) REGDEF_BEGIN(DAI_INTEN2_REG) REGDEF_BIT(TXLB_DMABFI_INTEN, 1) REGDEF_BIT(, 3) REGDEF_BIT(TXLB_DMALOAD_INTEN, 1) REGDEF_BIT(, 3) REGDEF_BIT(TXLB_STOP_INTEN, 1) REGDEF_BIT(, 3) REGDEF_BIT(TXLB_BWERR_INTEN, 1) REGDEF_BIT(, 19) REGDEF_END(DAI_INTEN2_REG) // Interrupt status Register REGDEF_OFFSET(DAI_INTSTATUS_REG, 0x28) REGDEF_BEGIN(DAI_INTSTATUS_REG) REGDEF_BIT(TX1_DMABFI, 1) REGDEF_BIT(TX2_DMABFI, 1) REGDEF_BIT(RX1_DMABFI, 1) REGDEF_BIT(RX2_DMABFI, 1) REGDEF_BIT(TX1_DMALOAD, 1) REGDEF_BIT(TX2_DMALOAD, 1) REGDEF_BIT(RX_DMALOAD, 1) REGDEF_BIT(, 1) REGDEF_BIT(TX1_STOP, 1) REGDEF_BIT(TX2_STOP, 1) REGDEF_BIT(RX_STOP, 1) REGDEF_BIT(, 1) REGDEF_BIT(TX1_BWERR, 1) REGDEF_BIT(TX2_BWERR, 1) REGDEF_BIT(RX1_BWERR, 1) REGDEF_BIT(RX2_BWERR, 1) REGDEF_BIT(TX1_TCI, 1) REGDEF_BIT(, 1) REGDEF_BIT(RX_TCI, 1) REGDEF_BIT(, 1) REGDEF_BIT(RX_TCLATI, 1) REGDEF_BIT(, 11) REGDEF_END(DAI_INTSTATUS_REG) // Interrupt status Register 2 REGDEF_OFFSET(DAI_INTSTATUS2_REG, 0x2C) REGDEF_BEGIN(DAI_INTSTATUS2_REG) REGDEF_BIT(TXLB_DMABFI, 1) REGDEF_BIT(, 3) REGDEF_BIT(TXLB_DMALOAD, 1) REGDEF_BIT(, 3) REGDEF_BIT(TXLB_STOP, 1) REGDEF_BIT(, 3) REGDEF_BIT(TXLB_BWERR, 1) REGDEF_BIT(, 19) REGDEF_END(DAI_INTSTATUS2_REG) // TX1 DMA starting address Register REGDEF_OFFSET(DAI_TX1DMASTART_REG, 0x40) REGDEF_BEGIN(DAI_TX1DMASTART_REG) REGDEF_BIT(TX1DMASTADR, 32) REGDEF_END(DAI_TX1DMASTART_REG) // TX2 DMA starting address Register REGDEF_OFFSET(DAI_TX2DMASTART_REG, 0x44) REGDEF_BEGIN(DAI_TX2DMASTART_REG) REGDEF_BIT(TX2DMASTADR, 32) REGDEF_END(DAI_TX2DMASTART_REG) // RX1 DMA starting address Register REGDEF_OFFSET(DAI_RX1DMASTART_REG, 0x48) REGDEF_BEGIN(DAI_RX1DMASTART_REG) REGDEF_BIT(RX1DMASTADR, 32) REGDEF_END(DAI_RX1DMASTART_REG) // RX2 DMA starting address Register REGDEF_OFFSET(DAI_RX2DMASTART_REG, 0x4C) REGDEF_BEGIN(DAI_RX2DMASTART_REG) REGDEF_BIT(RX2DMASTADR, 32) REGDEF_END(DAI_RX2DMASTART_REG) // TXLB DMA starting address Register REGDEF_OFFSET(DAI_TXLBDMASTART_REG, 0x50) REGDEF_BEGIN(DAI_TXLBDMASTART_REG) REGDEF_BIT(TXLBDMASTADR, 32) REGDEF_END(DAI_TXLBDMASTART_REG) // TX1 DMA RAM buffer size Register REGDEF_OFFSET(DAI_TX1DMABUFSIZE_REG, 0x60) REGDEF_BEGIN(DAI_TX1DMABUFSIZE_REG) REGDEF_BIT(TX1DMABUFSZ, 19) REGDEF_BIT(, 13) REGDEF_END(DAI_TX1DMABUFSIZE_REG) // TX2 DMA RAM buffer size Register REGDEF_OFFSET(DAI_TX2DMABUFSIZE_REG, 0x64) REGDEF_BEGIN(DAI_TX2DMABUFSIZE_REG) REGDEF_BIT(TX2DMABUFSZ, 19) REGDEF_BIT(, 13) REGDEF_END(DAI_TX2DMABUFSIZE_REG) // RX1 DMA RAM buffer size Register REGDEF_OFFSET(DAI_RX1DMABUFSIZE_REG, 0x68) REGDEF_BEGIN(DAI_RX1DMABUFSIZE_REG) REGDEF_BIT(RX1DMABUFSZ, 19) REGDEF_BIT(, 13) REGDEF_END(DAI_RX1DMABUFSIZE_REG) // RX2 DMA RAM buffer size Register REGDEF_OFFSET(DAI_RX2DMABUFSIZE_REG, 0x6C) REGDEF_BEGIN(DAI_RX2DMABUFSIZE_REG) REGDEF_BIT(RX2DMABUFSZ, 19) REGDEF_BIT(, 13) REGDEF_END(DAI_RX2DMABUFSIZE_REG) // TXLB DMA RAM buffer size Register REGDEF_OFFSET(DAI_TXLBDMABUFSIZE_REG, 0x70) REGDEF_BEGIN(DAI_TXLBDMABUFSIZE_REG) REGDEF_BIT(TXLBDMABUFSZ, 19) REGDEF_BIT(, 13) REGDEF_END(DAI_TXLBDMABUFSIZE_REG) // TX1 DMA RAM current address Register REGDEF_OFFSET(DAI_TX1DMACURRENT_REG, 0x80) REGDEF_BEGIN(DAI_TX1DMACURRENT_REG) REGDEF_BIT(TX1DMACUADR, 32) REGDEF_END(DAI_TX1DMACURRENT_REG) // TX2 DMA RAM current address Register REGDEF_OFFSET(DAI_TX2DMACURRENT_REG, 0x84) REGDEF_BEGIN(DAI_TX2DMACURRENT_REG) REGDEF_BIT(TX2DMACUADR, 32) REGDEF_END(DAI_TX2DMACURRENT_REG) // RX1 DMA RAM current address Register REGDEF_OFFSET(DAI_RX1DMACURRENT_REG, 0x88) REGDEF_BEGIN(DAI_RX1DMACURRENT_REG) REGDEF_BIT(RX1DMACUADR, 32) REGDEF_END(DAI_RX1DMACURRENT_REG) // RX2 DMA RAM current address Register REGDEF_OFFSET(DAI_RX2DMACURRENT_REG, 0x8C) REGDEF_BEGIN(DAI_RX2DMACURRENT_REG) REGDEF_BIT(RX2DMACUADR, 32) REGDEF_END(DAI_RX2DMACURRENT_REG) // TXLB DMA RAM current address Register REGDEF_OFFSET(DAI_TXLBDMACURRENT_REG, 0x90) REGDEF_BEGIN(DAI_TXLBDMACURRENT_REG) REGDEF_BIT(TXLBDMACUADR, 32) REGDEF_END(DAI_TXLBDMACURRENT_REG) // TX1 Time code offset value Register REGDEF_OFFSET(DAI_TX1TCOFFSET_REG, 0xA0) REGDEF_BEGIN(DAI_TX1TCOFFSET_REG) REGDEF_BIT(TX1TCOFST, 32) REGDEF_END(DAI_TX1TCOFFSET_REG) // TX1 Time code interrupt trigger value Register REGDEF_OFFSET(DAI_TX1TCTRIGGER_REG, 0xA4) REGDEF_BEGIN(DAI_TX1TCTRIGGER_REG) REGDEF_BIT(TX1TCITV, 32) REGDEF_END(DAI_TX1TCTRIGGER_REG) // TX1 Time code value Register REGDEF_OFFSET(DAI_TX1TCVALUE_REG, 0xA8) REGDEF_BEGIN(DAI_TX1TCVALUE_REG) REGDEF_BIT(TX1TCV, 32) REGDEF_END(DAI_TX1TCVALUE_REG) // RX Time code offset value Register REGDEF_OFFSET(DAI_RXTCOFFSET_REG, 0xB0) REGDEF_BEGIN(DAI_RXTCOFFSET_REG) REGDEF_BIT(RXTCOFST, 32) REGDEF_END(DAI_RXTCOFFSET_REG) // RX Time code interrupt trigger value Register REGDEF_OFFSET(DAI_RXTCTRIGGER_REG, 0xB4) REGDEF_BEGIN(DAI_RXTCTRIGGER_REG) REGDEF_BIT(RXTCITV, 32) REGDEF_END(DAI_RXTCTRIGGER_REG) // RX Time code value Register REGDEF_OFFSET(DAI_RXTCVALUE_REG, 0xB8) REGDEF_BEGIN(DAI_RXTCVALUE_REG) REGDEF_BIT(RXTCV, 32) REGDEF_END(DAI_RXTCVALUE_REG) // // Debug Mode Config Register // #define DAI_DBG_CONFIG_REG_OFS 0xC0 REGDEF_BEGIN(DAI_DBG_CONFIG_REG) REGDEF_BIT(DBGEN, 1) REGDEF_BIT(, 3) REGDEF_BIT(EAC_DBG_EN, 1) REGDEF_BIT(EAC_DBG_MODE, 1) REGDEF_BIT(rsv, 26) REGDEF_END(DAI_DBG_CONFIG_REG) // Debug Mode Start Address Register #define DAI_DBG_ADDR_REG_OFS 0xC4 REGDEF_BEGIN(DAI_DBG_ADDR_REG) REGDEF_BIT(DMASTADR, 31) REGDEF_BIT(, 1) REGDEF_END(DAI_DBG_ADDR_REG) // Debug Mode Buf Size Register #define DAI_DBG_SIZE_REG_OFS 0xC8 REGDEF_BEGIN(DAI_DBG_SIZE_REG) REGDEF_BIT(DMABUFSZ, 19) REGDEF_BIT(, 13) REGDEF_END(DAI_DBG_SIZE_REG) // Debug Mode Status Register #define DAI_DBG_STS_REG_OFS 0xCC REGDEF_BEGIN(DAI_DBG_STS_REG) REGDEF_BIT(DONE, 1) REGDEF_BIT(, 31) REGDEF_END(DAI_DBG_STS_REG) // I2S TDM Data Order Register REGDEF_OFFSET(DAI_I2S_TDM_ORDER_REG, 0xD0) REGDEF_BEGIN(DAI_I2S_TDM_ORDER_REG) REGDEF_BIT(I2S_TDM_ORDER, 32) REGDEF_END(DAI_I2S_TDM_ORDER_REG) #endif