nt9856x/BSP/linux-kernel/sound/soc/novatek/dai_reg.h
2023-03-28 15:07:53 +08:00

387 lines
9.3 KiB
C
Executable File

/*
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