/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Last modified: $Date: 2020-04-09 10:12:39 +0100 (Thu, 09 Apr 2020) $ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + cmx655.h : register address and other constants for the CMX655 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ #ifndef CMX655_H #define CMX655_H #include #define CMX655_ISR (0x00) #define CMX655_ISR_MICR (1 << 0) #define CMX655_ISR_MICL (1 << 1) #define CMX655_ISR_AMPOC (1 << 2) #define CMX655_ISR_AMPCLIP (1 << 3) #define CMX655_ISR_CLKRDY (1 << 4) #define CMX655_ISR_THERM (1 << 5) #define CMX655_ISR_VOL (1 << 6) #define CMX655_ISR_CAL (1 << 7) #define CMX655_ISM (0x01) #define CMX655_ISM_MICR (1 << 0) #define CMX655_ISM_MICL (1 << 1) #define CMX655_ISM_AMPOC (1 << 2) #define CMX655_ISM_AMPCLIP (1 << 3) #define CMX655_ISM_CLKRDY (1 << 4) #define CMX655_ISM_THERM (1 << 5) #define CMX655_ISM_VOL (1 << 6) #define CMX655_ISM_CAL (1 << 7) #define CMX655_ISE (0x02) #define CMX655_CLKCTRL (0x03) #define CMX655_CLKCTRL_PREDIV_SHIFT (0) #define CMX655_CLKCTRL_PREDIV_VALUE (0x3) #define CMX655_CLKCTRL_PREDIV_MASK (CMX655_CLKCTRL_PREDIV_VALUE << \ CMX655_CLKCTRL_PREDIV_SHIFT) #define CMX655_CLKCTRL_CLRSRC_SHIFT (2) #define CMX655_CLKCTRL_CLRSRC_VALUE (0x7) #define CMX655_CLKCTRL_CLRSRC_MASK (CMX655_CLKCTRL_CLRSRC_VALUE << \ CMX655_CLKCTRL_CLRSRC_SHIFT) #define CMX655_CLKCTRL_CLRSRC_RCLK (0 << CMX655_CLKCTRL_CLRSRC_SHIFT) #define CMX655_CLKCTRL_CLRSRC_LPO (1 << CMX655_CLKCTRL_CLRSRC_SHIFT) #define CMX655_CLKCTRL_CLRSRC_LRCLK (7 << CMX655_CLKCTRL_CLRSRC_SHIFT) #define CMX655_CLKCTRL_SR_SHIFT (5) #define CMX655_CLKCTRL_SR_VALUE (0x3) #define CMX655_CLKCTRL_SR_MASK (CMX655_CLKCTRL_SR_VALUE << \ CMX655_CLKCTRL_SR_SHIFT) #define CMX655_CLKCTRL_SR_8K (0 << CMX655_CLKCTRL_SR_SHIFT) #define CMX655_CLKCTRL_SR_16K (1 << CMX655_CLKCTRL_SR_SHIFT) #define CMX655_CLKCTRL_SR_32K (2 << CMX655_CLKCTRL_SR_SHIFT) #define CMX655_CLKCTRL_SR_48K (3 << CMX655_CLKCTRL_SR_SHIFT) #define CMX655_RDIVHI (0x04) #define CMX655_RDIVLO (0x05) #define CMX655_NDIVHI (0x06) #define CMX655_NDIVLO (0x07) #define CMX655_PLLCTRL (0x08) #define CMX655_PLLCTRL_CPI_SHIFT (0) #define CMX655_PLLCTRL_LFILT_SHIFT (4) #define CMX655_SAICTRL (0x09) #define CMX655_SAI_PCM (1 << 0) #define CMX655_SAI_BINV (1 << 2) #define CMX655_SAI_POL (1 << 3) #define CMX655_SAI_DLY (1 << 4) #define CMX655_SAI_MONO (1 << 5) #define CMX655_SAI_WL (1 << 6) #define CMX655_SAI_MSTR (1 << 7) #define CMX655_SAIMUX (0x0a) #define CMX655_RVF (0x0c) #define CMX655_VF_DCBLOCK_SHIFT (2) #define CMX655_VF_DCBLOCK (1 << CMX655_VF_DCBLOCK_SHIFT) #define CMX655_LDCTRL (0x0d) #define CMX655_RDCTRL (0x0e) #define CMX655_LEVEL (0x0f) #define CMX655_NGCTRL (0x1c) #define CMX655_NGTIME (0x1d) #define CMX655_NGLSTAT (0x1e) #define CMX655_NGRSTAT (0x1f) #define CMX655_PVF (0x28) #define CMX655_PREAMP (0x29) #define CMX655_VOLUME (0x2a) #define CMX655_ALCCTRL (0x2b) #define CMX655_ALCTIME (0x2c) #define CMX655_ALCGAIN (0x2d) #define CMX655_ALCSTAT (0x2e) #define CMX655_DST (0x2f) #define CMX655_CPR (0x30) #define CMX655_SYSCTRL (0x32) #define CMX655_SYSCTRL_MICR (1 << 0) #define CMX655_SYSCTRL_MICL (1 << 1) #define CMX655_SYSCTRL_PAMP (1 << 3) #define CMX655_SYSCTRL_LOUT (1 << 4) #define CMX655_SYSCTRL_SAI (1 << 5) #define CMX655_COMMAND (0x33) #define CMX655_CMD_CLOCK_STOP (0x00) #define CMX655_CMD_CLOCK_START (0x01) #define CMX655_CMD_SOFT_RESET (0xff) /* GPIO connection for reset and irq */ #define CMX655_RESETN (24) #define CMX655_IRQN (25) #define CMX655_CS (8) #define CMX655_RATES ( SNDRV_PCM_RATE_8000 |\ SNDRV_PCM_RATE_16000 |\ SNDRV_PCM_RATE_32000 |\ SNDRV_PCM_RATE_48000 ) #define CMX655_FMTS ( SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE ) // clock id's when calling set sysclk // Auto = Use RCLK when in DAI master mode. Use LRCLK in Slave mode. // DO NOT use CMX655_SYSCLK_LRCLK when in DAI master mode #define CMX655_SYSCLK_AUTO (0) #define CMX655_SYSCLK_RCLK (1) #define CMX655_SYSCLK_LRCLK (2) #define CMX655_SYSCLK_LPO (3) #define CMX655_SYSCLK_MIN (CMX655_SYSCLK_AUTO) #define CMX655_SYSCLK_MAX (CMX655_SYSCLK_LPO) #endif /* CMX655_H */