221 bool begin(uint32_t sample_rate, uint8_t bits) {
230 i2s_format_t fmt,
bool is_master, uint8_t channels)
override {
247 return begin(protocol, sample_rate, bits, is_master,
252 uint32_t sample_rate = 44100, uint8_t word_size = 16,
253 bool master =
false,
bool playback =
true,
254 bool capture =
true) {
355 switch (sample_rate) {
Header only C++ driver for the DA7212 audio codec.
Definition DA7212.h:57
bool setOutputMute(bool mute, DA7212Channel channel=DA7212Channel::All)
Mute / unmute the headphone (and line) output for the given channel(s)
Definition DA7212.h:422
static constexpr uint8_t DAI_BCLKS_PER_WCLK_BCLK32
Definition DA7212.h:114
static constexpr uint8_t DAI_CLK_EN_MASK
Definition DA7212.h:112
static constexpr uint8_t CP_CTRL_EN_MASK
Definition DA7212.h:188
bool setDevices(input_device_t input_device, output_device_t output_device) override
Stores the output device selection for use by configureOutput()
Definition DA7212.h:454
bool begin(uint32_t sample_rate, uint8_t bits)
Initialize the codec: soft reset, default routing, PLL disabled (MCLK is used directly as the system ...
Definition DA7212.h:221
bool setAudioFormat(uint32_t sample_rate, uint8_t word_size=16)
Configure sample rate (SR register) and word length (DAI_CTRL)
Definition DA7212.h:351
static constexpr uint8_t DIG_ROUTING_DAC_R_RSC_DAC_R
Definition DA7212.h:133
static constexpr uint8_t PLL_FBDIV_INTEGER_RESET_VALUE
Definition DA7212.h:139
static constexpr uint8_t PC_COUNT_RESYNC_MASK
Definition DA7212.h:198
static constexpr uint8_t MIXOUT_R_SELECT_DAC_R_MASK
Definition DA7212.h:168
static constexpr uint8_t CIF_CTRL_SOFT_RESET
Definition DA7212.h:110
static constexpr uint8_t HP_DEFAULT_GAIN
Definition DA7212.h:144
bool softReset()
Soft reset of the codec (CIF_CTRL soft reset bit)
Definition DA7212.h:300
bool setOutputVolume(uint8_t volume, DA7212Channel channel=DA7212Channel::All)
Set the headphone output volume (0..63, HP_x_GAIN) for the given channel(s)
Definition DA7212.h:416
static constexpr uint8_t AMP_ZC_EN_MASK
Definition DA7212.h:158
bool setClockMode(bool master, uint8_t word_size)
Configure master/slave clock mode.
Definition DA7212.h:307
bool routeOutput()
Route the DACs to the output mixers (MixOut)
Definition DA7212.h:524
static constexpr uint8_t MIXOUT_AMP_SOFT_MIX_EN_MASK
Definition DA7212.h:163
static constexpr uint8_t AMP_EN_MASK
Definition DA7212.h:156
bool isInputVolumeSupported() override
Returns true: the input volume is supported.
Definition DA7212.h:496
static constexpr uint8_t AUX_L_CTRL_AMP_ZC_SEL_INPUT_AUX_L_IF
Definition DA7212.h:182
bool configureInput()
Configure the input (capture) path: AUX -> MixIn routing, charge pump, AUX/MIC/MixIn amps,...
Definition DA7212.h:588
bool routeDacInput(bool playback)
Route the DAI input to the DACs (playback) or bypass ADC->DAC.
Definition DA7212.h:336
bool setMute(bool mute) override
Mutes/unmutes all outputs.
Definition DA7212.h:451
static constexpr uint8_t AMP_RAMP_EN_MASK
Definition DA7212.h:157
static constexpr uint8_t MIXIN_L_SELECT_AUX_L_SEL_MASK
Definition DA7212.h:171
static constexpr uint8_t DIG_ROUTING_DAI_L_SRC_ADC_LEFT
Definition DA7212.h:130
static constexpr uint8_t EN_MASK
Definition DA7212.h:152
DA7212()
Definition DA7212.h:205
static constexpr uint8_t DAI_EN_MASK
Definition DA7212.h:119
output_device_t output_device
Output device selection set via setDevices(), used by configureOutput()
Definition DA7212.h:641
static constexpr uint8_t DIG_ROUTING_DAC_R_RSC_ADC_R_OUTPUT
Definition DA7212.h:135
static constexpr uint8_t DIG_ROUTING_DAC_L_RSC_DAC_L
Definition DA7212.h:134
static constexpr uint8_t CP_DELAY_ON_OFF_LIMITER_AUT
Definition DA7212.h:201
static constexpr uint8_t DAI_BCLKS_PER_WCLK_BCLK64
Definition DA7212.h:115
bool configureOutput()
Configure the output (playback) path: charge pump, DAC -> MixOut routing, DACs, headphone amps,...
Definition DA7212.h:536
static constexpr uint8_t CP_DELAY_FCONTROL_0HZ_OR_1MHZ
Definition DA7212.h:203
static constexpr uint8_t UNMUTE_MASK
*_EN bit kept set
Definition DA7212.h:149
static constexpr uint8_t AMP_OE_MASK
Definition DA7212.h:159
static constexpr uint8_t MIXIN_R_SELECT_AUX_R_SEL_MASK
Definition DA7212.h:172
bool setProtocol(DA7212Protocol protocol)
Configure the digital audio interface protocol (I2S, LJ, RJ, DSP)
Definition DA7212.h:346
static constexpr uint8_t DAI_WORD_LENGTH_32B
Definition DA7212.h:126
static constexpr uint8_t MIXOUT_AMP_EN_MASK
Definition DA7212.h:162
Reg
Definition DA7212.h:60
@ REG_DAC_L_CTRL
Definition DA7212.h:94
@ REG_MIXOUT_L_SELECT
Definition DA7212.h:83
@ REG_HP_R_GAIN
Definition DA7212.h:81
@ REG_MIXIN_L_GAIN
Definition DA7212.h:74
@ REG_ADC_L_GAIN
Definition DA7212.h:75
@ REG_MIXIN_L_SELECT
Definition DA7212.h:72
@ REG_ADC_L_CTRL
Definition DA7212.h:92
@ REG_LINE_GAIN
Definition DA7212.h:82
@ REG_MICBIAS_CTRL
Definition DA7212.h:87
@ REG_SR
Definition DA7212.h:62
@ REG_PLL_INTEGER
Definition DA7212.h:66
@ REG_MIXIN_L_CTRL
Definition DA7212.h:90
@ REG_LINE_CTRL
Definition DA7212.h:98
@ REG_HP_L_CTRL
Definition DA7212.h:96
@ REG_AUX_L_CTRL
Definition DA7212.h:85
@ REG_CP_DETECTOR
Definition DA7212.h:106
@ REG_CIF_CTRL
Definition DA7212.h:71
@ REG_MIC_1_CTRL
Definition DA7212.h:88
@ REG_GAIN_RAMP_CTRL
Definition DA7212.h:101
@ REG_PLL_FRAC_BOT
Definition DA7212.h:65
@ REG_CP_DELAY
Definition DA7212.h:105
@ REG_PC_COUNT
Definition DA7212.h:103
@ REG_DAC_R_CTRL
Definition DA7212.h:95
@ REG_MIC_CONFIG
Definition DA7212.h:102
@ REG_MIXOUT_R_CTRL
Definition DA7212.h:100
@ REG_MIXIN_R_CTRL
Definition DA7212.h:91
@ REG_REFERENCES
Definition DA7212.h:63
@ REG_CP_VOL_THRESHOLD1
Definition DA7212.h:104
@ REG_DAI_CTRL
Definition DA7212.h:69
@ REG_AUX_R_CTRL
Definition DA7212.h:86
@ REG_MIXOUT_L_CTRL
Definition DA7212.h:99
@ REG_ADC_R_GAIN
Definition DA7212.h:76
@ REG_HP_L_GAIN
Definition DA7212.h:80
@ REG_DIG_ROUTING_DAC
Definition DA7212.h:70
@ REG_DAC_L_GAIN
Definition DA7212.h:77
@ REG_HP_R_CTRL
Definition DA7212.h:97
@ REG_DAI_CLK_MODE
Definition DA7212.h:68
@ REG_ADC_R_CTRL
Definition DA7212.h:93
@ REG_CP_CTRL
Definition DA7212.h:79
@ REG_DIG_ROUTING_DAI
Definition DA7212.h:61
@ REG_PLL_FRAC_TOP
Definition DA7212.h:64
@ REG_MIXOUT_R_SELECT
Definition DA7212.h:84
@ REG_PLL_CTRL
Definition DA7212.h:67
@ REG_DAC_R_GAIN
Definition DA7212.h:78
@ REG_MIXIN_R_SELECT
Definition DA7212.h:73
@ REG_MIC_2_CTRL
Definition DA7212.h:89
static constexpr uint8_t MIC_CTRL_AMP_IN_SEL_MIC_P
Definition DA7212.h:185
static constexpr uint8_t ADC_GAIN_MASK
Definition DA7212.h:143
static constexpr uint8_t CP_DELAY_TAU_DELAY_4MS
Definition DA7212.h:202
static constexpr uint8_t DAI_FORMAT_MASK
Definition DA7212.h:121
static constexpr uint8_t AUX_AMP_ZC_EN_MASK
Definition DA7212.h:181
static constexpr uint8_t MIXIN_AMP_MIX_EN_MASK
Definition DA7212.h:176
static constexpr uint8_t MIXIN_AMP_EN_MASK
Definition DA7212.h:175
bool begin(DA7212Protocol protocol=DA7212Protocol::I2S, uint32_t sample_rate=44100, uint8_t word_size=16, bool master=false, bool playback=true, bool capture=true)
Definition DA7212.h:251
static constexpr uint8_t REFERENCES_BIAS_EN_MASK
Definition DA7212.h:138
static constexpr uint8_t DAI_BCLKS_PER_WCLK_BCLK128
Definition DA7212.h:116
static constexpr uint8_t MUTE_MASK
Definition DA7212.h:148
static constexpr uint8_t MIXOUT_L_SELECT_DAC_L_MASK
Definition DA7212.h:167
static constexpr uint8_t CP_CTRL_SMALL_SWITCH_FREQ_EN_MASK
Definition DA7212.h:189
static constexpr uint8_t DAI_WORD_LENGTH_20B
Definition DA7212.h:124
bool begin(uint32_t sample_rate, uint8_t bits, codec_mode_t mode, i2s_format_t fmt, bool is_master, uint8_t channels) override
Definition DA7212.h:229
static constexpr uint8_t CP_CTRL_MOD_CPVDD_1
Definition DA7212.h:191
static constexpr uint8_t AUX_AMP_EN_MASK
Definition DA7212.h:179
static constexpr uint8_t DAI_WORD_LENGTH_24B
Definition DA7212.h:125
static constexpr uint8_t DIG_ROUTING_DAC_L_RSC_ADC_L_OUTPUT
Definition DA7212.h:136
bool updateOutGain(DA7212Channel channel, uint8_t volume)
Definition DA7212.h:643
static constexpr uint8_t HP_GAIN_MASK
Definition DA7212.h:142
static constexpr uint8_t GAIN_RAMP_CTRL_RATE_NR_MUL_16
Definition DA7212.h:195
static constexpr uint8_t CP_CTRL_ANALOG_VLL_LV_BOOSTS_CP
Definition DA7212.h:192
static constexpr uint8_t DAI_BCLKS_PER_WCLK_MASK
Definition DA7212.h:113
bool setActive(codec_mode_t mode) override
Definition DA7212.h:462
static constexpr uint8_t DAI_WORD_LENGTH_MASK
Definition DA7212.h:122
bool setInputVolume(uint8_t volume, DA7212Channel channel=DA7212Channel::All)
Set the ADC input volume (0..127, ADC_x_GAIN) for the given channel(s)
Definition DA7212.h:469
static constexpr uint8_t DAI_OE_MASK
Definition DA7212.h:120
bool setInputVolume(int volume) override
Sets the input volume in % (0...100) for all channels.
Definition DA7212.h:488
bool setVolume(int volume) override
Sets the output volume in % (0...100) for all channels.
Definition DA7212.h:444
static constexpr uint8_t RAMP_EN_MASK
Definition DA7212.h:153
static constexpr uint8_t DAC_DEFAULT_GAIN
Definition DA7212.h:145
bool setInputMute(bool mute, DA7212Channel channel=DA7212Channel::All)
Mute / unmute the ADC input for the given channel(s)
Definition DA7212.h:499
static constexpr uint8_t CP_CTRL_MCHANGE_OUTPUT
Definition DA7212.h:190
bool routeInput(DA7212Channel channel=DA7212Channel::All)
Route the AUX input(s) to the input mixer(s) for the given channel(s)
Definition DA7212.h:514
static constexpr uint8_t DAI_WORD_LENGTH_16B
Definition DA7212.h:123
static constexpr uint8_t MIXOUT_AMP_MIX_EN_MASK
Definition DA7212.h:164
static constexpr uint8_t AUX_AMP_RAMP_EN_MASK
Definition DA7212.h:180
static constexpr uint8_t DAI_BCLKS_PER_WCLK_BCLK256
Definition DA7212.h:117
static constexpr uint8_t DIG_ROUTING_DAI_R_SRC_ADC_RIGHT
Definition DA7212.h:129
Common parent class for codec drivers that have been ported from the Zephyr RTOS audio driver impleme...
Definition ZephyrDriverCommon.h:22
uint8_t i2c_addr
Definition ZephyrDriverCommon.h:87
bool updateReg(uint8_t reg, uint8_t mask, uint8_t value)
Read-Modify-Write of a single byte register.
Definition ZephyrDriverCommon.h:110
int volume_percent
Last volume (in %) provided to setVolume()
Definition ZephyrDriverCommon.h:89
bool writeReg(uint8_t reg, uint8_t value)
Writes a single byte to an 8 bit register address.
Definition ZephyrDriverCommon.h:94
int input_volume_percent
Last input volume (in %) provided to setInputVolume()
Definition ZephyrDriverCommon.h:91
Namespace for audio driver components.
Definition AudioBoard.h:5
DA7212SampleRate
Sample rate (SR register)
Definition DA7212.h:27
DA7212Channel
Logical audio channels.
Definition DA7212.h:42
input_device_t
Definition DriverCommon.h:170
codec_mode_t
Definition DriverCommon.h:290
@ CODEC_MODE_ENCODE
Definition DriverCommon.h:293
@ CODEC_MODE_DECODE
Definition DriverCommon.h:294
output_device_t
Definition DriverCommon.h:186
@ DAC_OUTPUT_ALL
Definition DriverCommon.h:190
@ DAC_OUTPUT_NONE
Definition DriverCommon.h:187
DA7212Protocol
Digital audio interface protocol (DAI_CTRL FORMAT field)
Definition DA7212.h:19
@ DSPMode
used for both PCM-A and PCM-B
i2s_format_t
Definition DriverCommon.h:250
@ I2S_RIGHT
Definition DriverCommon.h:253
@ I2S_DSP
Definition DriverCommon.h:254
@ I2S_LEFT
Definition DriverCommon.h:252