linux/sound/soc/codecs/nau8540.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * NAU85L40 ALSA SoC audio driver
 *
 * Copyright 2016 Nuvoton Technology Corp.
 * Author: John Hsu <[email protected]>
 */

#ifndef __NAU8540_H__
#define __NAU8540_H__

#define NAU8540_REG_SW_RESET
#define NAU8540_REG_POWER_MANAGEMENT
#define NAU8540_REG_CLOCK_CTRL
#define NAU8540_REG_CLOCK_SRC
#define NAU8540_REG_FLL1
#define NAU8540_REG_FLL2
#define NAU8540_REG_FLL3
#define NAU8540_REG_FLL4
#define NAU8540_REG_FLL5
#define NAU8540_REG_FLL6
#define NAU8540_REG_FLL_VCO_RSV
#define NAU8540_REG_PCM_CTRL0
#define NAU8540_REG_PCM_CTRL1
#define NAU8540_REG_PCM_CTRL2
#define NAU8540_REG_PCM_CTRL3
#define NAU8540_REG_PCM_CTRL4
#define NAU8540_REG_ALC_CONTROL_1
#define NAU8540_REG_ALC_CONTROL_2
#define NAU8540_REG_ALC_CONTROL_3
#define NAU8540_REG_ALC_CONTROL_4
#define NAU8540_REG_ALC_CONTROL_5
#define NAU8540_REG_ALC_GAIN_CH12
#define NAU8540_REG_ALC_GAIN_CH34
#define NAU8540_REG_ALC_STATUS
#define NAU8540_REG_NOTCH_FIL1_CH1
#define NAU8540_REG_NOTCH_FIL2_CH1
#define NAU8540_REG_NOTCH_FIL1_CH2
#define NAU8540_REG_NOTCH_FIL2_CH2
#define NAU8540_REG_NOTCH_FIL1_CH3
#define NAU8540_REG_NOTCH_FIL2_CH3
#define NAU8540_REG_NOTCH_FIL1_CH4
#define NAU8540_REG_NOTCH_FIL2_CH4
#define NAU8540_REG_HPF_FILTER_CH12
#define NAU8540_REG_HPF_FILTER_CH34
#define NAU8540_REG_ADC_SAMPLE_RATE
#define NAU8540_REG_DIGITAL_GAIN_CH1
#define NAU8540_REG_DIGITAL_GAIN_CH2
#define NAU8540_REG_DIGITAL_GAIN_CH3
#define NAU8540_REG_DIGITAL_GAIN_CH4
#define NAU8540_REG_DIGITAL_MUX
#define NAU8540_REG_P2P_CH1
#define NAU8540_REG_P2P_CH2
#define NAU8540_REG_P2P_CH3
#define NAU8540_REG_P2P_CH4
#define NAU8540_REG_PEAK_CH1
#define NAU8540_REG_PEAK_CH2
#define NAU8540_REG_PEAK_CH3
#define NAU8540_REG_PEAK_CH4
#define NAU8540_REG_GPIO_CTRL
#define NAU8540_REG_MISC_CTRL
#define NAU8540_REG_I2C_CTRL
#define NAU8540_REG_I2C_DEVICE_ID
#define NAU8540_REG_RST
#define NAU8540_REG_VMID_CTRL
#define NAU8540_REG_MUTE
#define NAU8540_REG_ANALOG_ADC1
#define NAU8540_REG_ANALOG_ADC2
#define NAU8540_REG_ANALOG_PWR
#define NAU8540_REG_MIC_BIAS
#define NAU8540_REG_REFERENCE
#define NAU8540_REG_FEPGA1
#define NAU8540_REG_FEPGA2
#define NAU8540_REG_FEPGA3
#define NAU8540_REG_FEPGA4
#define NAU8540_REG_PWR
#define NAU8540_REG_MAX


/* POWER_MANAGEMENT (0x01) */
#define NAU8540_ADC_ALL_EN
#define NAU8540_ADC4_EN
#define NAU8540_ADC3_EN
#define NAU8540_ADC2_EN
#define NAU8540_ADC1_EN

/* CLOCK_CTRL (0x02) */
#define NAU8540_CLK_ADC_EN
#define NAU8540_CLK_AGC_EN
#define NAU8540_CLK_I2S_EN

/* CLOCK_SRC (0x03) */
#define NAU8540_CLK_SRC_SFT
#define NAU8540_CLK_SRC_MASK
#define NAU8540_CLK_SRC_VCO
#define NAU8540_CLK_SRC_MCLK
#define NAU8540_CLK_ADC_SRC_SFT
#define NAU8540_CLK_ADC_SRC_MASK
#define NAU8540_CLK_MCLK_SRC_MASK

/* FLL1 (0x04) */
#define NAU8540_ICTRL_LATCH_SFT
#define NAU8540_ICTRL_LATCH_MASK
#define NAU8540_FLL_RATIO_MASK

/* FLL3 (0x06) */
#define NAU8540_GAIN_ERR_SFT
#define NAU8540_GAIN_ERR_MASK
#define NAU8540_FLL_CLK_SRC_SFT
#define NAU8540_FLL_CLK_SRC_MASK
#define NAU8540_FLL_CLK_SRC_MCLK
#define NAU8540_FLL_CLK_SRC_BLK
#define NAU8540_FLL_CLK_SRC_FS
#define NAU8540_FLL_INTEGER_MASK

/* FLL4 (0x07) */
#define NAU8540_FLL_REF_DIV_SFT
#define NAU8540_FLL_REF_DIV_MASK

/* FLL5 (0x08) */
#define NAU8540_FLL_PDB_DAC_EN
#define NAU8540_FLL_LOOP_FTR_EN
#define NAU8540_FLL_CLK_SW_MASK
#define NAU8540_FLL_CLK_SW_N2
#define NAU8540_FLL_CLK_SW_REF
#define NAU8540_FLL_FTR_SW_MASK
#define NAU8540_FLL_FTR_SW_ACCU
#define NAU8540_FLL_FTR_SW_FILTER

/* FLL6 (0x9) */
#define NAU8540_DCO_EN
#define NAU8540_SDM_EN
#define NAU8540_CUTOFF500

/* PCM_CTRL0 (0x10) */
#define NAU8540_I2S_BP_SFT
#define NAU8540_I2S_BP_INV
#define NAU8540_I2S_PCMB_SFT
#define NAU8540_I2S_PCMB_EN
#define NAU8540_I2S_DL_SFT
#define NAU8540_I2S_DL_MASK
#define NAU8540_I2S_DL_16
#define NAU8540_I2S_DL_20
#define NAU8540_I2S_DL_24
#define NAU8540_I2S_DL_32
#define NAU8540_I2S_DF_MASK
#define NAU8540_I2S_DF_RIGTH
#define NAU8540_I2S_DF_LEFT
#define NAU8540_I2S_DF_I2S
#define NAU8540_I2S_DF_PCM_AB

/* PCM_CTRL1 (0x11) */
#define NAU8540_I2S_DO12_TRI
#define NAU8540_I2S_LRC_DIV_SFT
#define NAU8540_I2S_LRC_DIV_MASK
#define NAU8540_I2S_DO12_OE
#define NAU8540_I2S_MS_SFT
#define NAU8540_I2S_MS_MASK
#define NAU8540_I2S_MS_MASTER
#define NAU8540_I2S_MS_SLAVE
#define NAU8540_I2S_BLK_DIV_MASK

/* PCM_CTRL1 (0x12) */
#define NAU8540_I2S_DO34_TRI
#define NAU8540_I2S_DO34_OE
#define NAU8540_I2S_TSLOT_L_MASK

/* PCM_CTRL4 (0x14) */
#define NAU8540_TDM_MODE
#define NAU8540_TDM_OFFSET_EN
#define NAU8540_TDM_TX_MASK

/* ALC_CONTROL_3 (0x22) */
#define NAU8540_ALC_CH1_EN
#define NAU8540_ALC_CH2_EN
#define NAU8540_ALC_CH3_EN
#define NAU8540_ALC_CH4_EN
#define NAU8540_ALC_CH_ALL_EN

/* ADC_SAMPLE_RATE (0x3A) */
#define NAU8540_CH_SYNC
#define NAU8540_ADC_OSR_MASK
#define NAU8540_ADC_OSR_256
#define NAU8540_ADC_OSR_128
#define NAU8540_ADC_OSR_64
#define NAU8540_ADC_OSR_32

/* VMID_CTRL (0x60) */
#define NAU8540_VMID_EN
#define NAU8540_VMID_SEL_SFT
#define NAU8540_VMID_SEL_MASK

/* MUTE (0x61) */
#define NAU8540_PGA_CH1_MUTE
#define NAU8540_PGA_CH2_MUTE
#define NAU8540_PGA_CH3_MUTE
#define NAU8540_PGA_CH4_MUTE
#define NAU8540_PGA_CH_ALL_MUTE

/* MIC_BIAS (0x67) */
#define NAU8540_PU_PRE

/* REFERENCE (0x68) */
#define NAU8540_PRECHARGE_DIS
#define NAU8540_GLOBAL_BIAS_EN
#define NAU8540_DISCHRG_EN

/* FEPGA1 (0x69) */
#define NAU8540_FEPGA1_MODCH2_SHT_SFT
#define NAU8540_FEPGA1_MODCH2_SHT
#define NAU8540_FEPGA1_MODCH1_SHT_SFT
#define NAU8540_FEPGA1_MODCH1_SHT

/* FEPGA2 (0x6A) */
#define NAU8540_FEPGA2_MODCH4_SHT_SFT
#define NAU8540_FEPGA2_MODCH4_SHT
#define NAU8540_FEPGA2_MODCH3_SHT_SFT
#define NAU8540_FEPGA2_MODCH3_SHT
#define NAU8540_ACDC_CTL_SFT
#define NAU8540_ACDC_CTL_MASK
#define NAU8540_ACDC_CTL_MIC4N_VREF
#define NAU8540_ACDC_CTL_MIC4P_VREF
#define NAU8540_ACDC_CTL_MIC3N_VREF
#define NAU8540_ACDC_CTL_MIC3P_VREF
#define NAU8540_ACDC_CTL_MIC2N_VREF
#define NAU8540_ACDC_CTL_MIC2P_VREF
#define NAU8540_ACDC_CTL_MIC1N_VREF
#define NAU8540_ACDC_CTL_MIC1P_VREF

/* System Clock Source */
enum {};

struct nau8540 {};

struct nau8540_fll {};

struct nau8540_fll_attr {};

/* over sampling rate */
struct nau8540_osr_attr {};


#endif	/* __NAU8540_H__ */