Software Driver for the TLV320AIC23B Audio Codec.
Data Structures | |
union | aic23b_aapc_t |
Register structure. More... | |
struct | aic23b_ctrl_t |
Register structure. More... | |
union | aic23b_daif_t |
Register structure. More... | |
union | aic23b_dapc_t |
Register structure. More... | |
union | aic23b_dia_t |
Register structure. More... | |
union | aic23b_lchvc_t |
Register structure. More... | |
union | aic23b_llicvc_t |
Register structure. More... | |
union | aic23b_pdc_t |
Register structure. More... | |
union | aic23b_rchvc_t |
Register structure. More... | |
union | aic23b_rlicvc_t |
Register structure. More... | |
union | aic23b_rr_t |
Register structure. More... | |
union | aic23b_src_t |
Register structure. More... | |
High-Level Interface | |
void | aic23b_codec_setup (uint32_t sample_rate_hz, uint8_t num_channels, uint8_t bits_per_sample, bool swap_channels, void(*callback)(uint32_t opt), uint32_t callback_opt, uint32_t pba_hz) |
Control Interface | |
#define | AIC23B_CTRL_INTERFACE_TWI 1 |
Control interface: Two-Wire Interface. More... | |
#define | AIC23B_CTRL_INTERFACE_SPI 2 |
Control interface: Serial Peripheral Interface. More... | |
Mode Supported | |
#define | AIC23B_MODE_DAC 0 |
Mode supported: DAC. More... | |
#define | AIC23B_MODE_ADC 1 |
Mode supported: ADC. More... | |
#define | AIC23B_MODE_CODEC 3 |
Mode supported: CODEC. More... | |
Input Selected | |
#define | AIC23B_INPUT_LINE 0 |
Input Selected: LINE IN. More... | |
#define | AIC23B_INPUT_MIC 1 |
Input Selected: MIC. More... | |
Control Word | |
#define | AIC23B_CTRL_SIZE (AIC23B_CTRL_ADDR_SIZE + AIC23B_CTRL_DATA_SIZE) |
#define | AIC23B_CTRL_ADDR_OFFSET 9 |
Control address bit-field offset. More... | |
#define | AIC23B_CTRL_ADDR_SIZE 7 |
Control address bit-field size. More... | |
#define | AIC23B_CTRL_DATA_OFFSET 0 |
Control data bit-field offset. More... | |
#define | AIC23B_CTRL_DATA_SIZE 9 |
Control data bit-field size. More... | |
Left Line Input Channel Volume Control | |
#define | AIC23B_LLICVC 0x00 |
Register index. More... | |
#define | AIC23B_LLICVC_ADDRESS 0x00 |
Register address. More... | |
#define | AIC23B_LLICVC_DEFAULT 0x0097 |
Register default value. More... | |
#define | AIC23B_LLICVC_LRS_OFFSET 8 |
Left/right line simultaneous volume/mute update bit-field offset. More... | |
#define | AIC23B_LLICVC_LRS_SIZE 1 |
Left/right line simultaneous volume/mute update bit-field size. More... | |
#define | AIC23B_LLICVC_LIM_OFFSET 7 |
Left line input mute bit-field offset. More... | |
#define | AIC23B_LLICVC_LIM_SIZE 1 |
Left line input mute bit-field size. More... | |
#define | AIC23B_LLICVC_LIV_OFFSET 0 |
Left line input volume control bit-field offset. More... | |
#define | AIC23B_LLICVC_LIV_SIZE 5 |
Left line input volume control bit-field size. More... | |
Right Line Input Channel Volume Control | |
#define | AIC23B_RLICVC 0x01 |
Register index. More... | |
#define | AIC23B_RLICVC_ADDRESS 0x01 |
Register address. More... | |
#define | AIC23B_RLICVC_DEFAULT 0x0097 |
Register default value. More... | |
#define | AIC23B_RLICVC_RLS_OFFSET 8 |
Right/left line simultaneous volume/mute update bit-field offset. More... | |
#define | AIC23B_RLICVC_RLS_SIZE 1 |
Right/left line simultaneous volume/mute update bit-field size. More... | |
#define | AIC23B_RLICVC_RIM_OFFSET 7 |
Right line input mute bit-field offset. More... | |
#define | AIC23B_RLICVC_RIM_SIZE 1 |
Right line input mute bit-field size. More... | |
#define | AIC23B_RLICVC_RIV_OFFSET 0 |
Right line input volume control bit-field offset. More... | |
#define | AIC23B_RLICVC_RIV_SIZE 5 |
Right line input volume control bit-field size. More... | |
Left Channel Headphone Volume Control | |
#define | AIC23B_LCHVC 0x02 |
Register index. More... | |
#define | AIC23B_LCHVC_ADDRESS 0x02 |
Register address. More... | |
#define | AIC23B_LCHVC_DEFAULT 0x00F9 |
Register default value. More... | |
#define | AIC23B_LCHVC_LRS_OFFSET 8 |
Left/right headphone channel simultaneous volume/mute update bit-field offset. More... | |
#define | AIC23B_LCHVC_LRS_SIZE 1 |
Left/right headphone channel simultaneous volume/mute update bit-field size. More... | |
#define | AIC23B_LCHVC_LZC_OFFSET 7 |
Left-channel zero-cross detect bit-field offset. More... | |
#define | AIC23B_LCHVC_LZC_SIZE 1 |
Left-channel zero-cross detect bit-field size. More... | |
#define | AIC23B_LCHVC_LHV_OFFSET 0 |
Left headphone volume control bit-field offset. More... | |
#define | AIC23B_LCHVC_LHV_SIZE 7 |
Left headphone volume control bit-field size. More... | |
Right Channel Headphone Volume Control | |
#define | AIC23B_RCHVC 0x03 |
Register index. More... | |
#define | AIC23B_RCHVC_ADDRESS 0x03 |
Register address. More... | |
#define | AIC23B_RCHVC_DEFAULT 0x00F9 |
Register default value. More... | |
#define | AIC23B_RCHVC_RLS_OFFSET 8 |
Right/left headphone channel simultaneous volume/mute update bit-field offset. More... | |
#define | AIC23B_RCHVC_RLS_SIZE 1 |
Right/left headphone channel simultaneous volume/mute update bit-field size. More... | |
#define | AIC23B_RCHVC_RZC_OFFSET 7 |
Right-channel zero-cross detect bit-field offset. More... | |
#define | AIC23B_RCHVC_RZC_SIZE 1 |
Right-channel zero-cross detect bit-field size. More... | |
#define | AIC23B_RCHVC_RHV_OFFSET 0 |
Right headphone volume control bit-field offset. More... | |
#define | AIC23B_RCHVC_RHV_SIZE 7 |
Right headphone volume control bit-field size. More... | |
Analog Audio Path Control | |
#define | AIC23B_AAPC 0x04 |
Register index. More... | |
#define | AIC23B_AAPC_ADDRESS 0x04 |
Register address. More... | |
#define | AIC23B_AAPC_DEFAULT 0x000A |
Register default value. More... | |
#define | AIC23B_AAPC_STA_OFFSET 6 |
Sidetone addition bit-field offset. More... | |
#define | AIC23B_AAPC_STA_SIZE 3 |
Sidetone addition bit-field size. More... | |
#define | AIC23B_AAPC_STA_M18DB 0x0003 |
Added sidetone: -18 dB. More... | |
#define | AIC23B_AAPC_STA_M12DB 0x0002 |
Added sidetone: -12 dB. More... | |
#define | AIC23B_AAPC_STA_M9DB 0x0001 |
Added sidetone: -9 dB. More... | |
#define | AIC23B_AAPC_STA_M6DB 0x0000 |
Added sidetone: -6 dB. More... | |
#define | AIC23B_AAPC_STA_0DB 0x0004 |
Added sidetone: 0 dB. More... | |
#define | AIC23B_AAPC_STE_OFFSET 5 |
Sidetone enable bit-field offset. More... | |
#define | AIC23B_AAPC_STE_SIZE 1 |
Sidetone enable bit-field size. More... | |
#define | AIC23B_AAPC_DAC_OFFSET 4 |
DAC select bit-field offset. More... | |
#define | AIC23B_AAPC_DAC_SIZE 1 |
DAC select bit-field size. More... | |
#define | AIC23B_AAPC_BYP_OFFSET 3 |
Bypass bit-field offset. More... | |
#define | AIC23B_AAPC_BYP_SIZE 1 |
Bypass bit-field size. More... | |
#define | AIC23B_AAPC_INSEL_OFFSET 2 |
Input select for ADC bit-field offset. More... | |
#define | AIC23B_AAPC_INSEL_SIZE 1 |
Input select for ADC bit-field size. More... | |
#define | AIC23B_AAPC_INSEL_LINE 0x0000 |
Input selected for ADC: line. More... | |
#define | AIC23B_AAPC_INSEL_MIC 0x0001 |
Input selected for ADC: microphone. More... | |
#define | AIC23B_AAPC_MICM_OFFSET 1 |
Microphone mute bit-field offset. More... | |
#define | AIC23B_AAPC_MICM_SIZE 1 |
Microphone mute bit-field size. More... | |
#define | AIC23B_AAPC_MICB_OFFSET 0 |
Microphone boost (+20 dB) bit-field offset. More... | |
#define | AIC23B_AAPC_MICB_SIZE 1 |
Microphone boost (+20 dB) bit-field size. More... | |
Digital Audio Path Control | |
#define | AIC23B_DAPC 0x05 |
Register index. More... | |
#define | AIC23B_DAPC_ADDRESS 0x05 |
Register address. More... | |
#define | AIC23B_DAPC_DEFAULT 0x0008 |
Register default value. More... | |
#define | AIC23B_DAPC_DACM_OFFSET 3 |
DAC soft mute bit-field offset. More... | |
#define | AIC23B_DAPC_DACM_SIZE 1 |
DAC soft mute bit-field size. More... | |
#define | AIC23B_DAPC_DEEMP_OFFSET 1 |
De-emphasis control bit-field offset. More... | |
#define | AIC23B_DAPC_DEEMP_SIZE 2 |
De-emphasis control bit-field size. More... | |
#define | AIC23B_DAPC_DEEMP_NONE 0x0000 |
De-emphasis: none. More... | |
#define | AIC23B_DAPC_DEEMP_32KHZ 0x0001 |
De-emphasis: 32 kHz. More... | |
#define | AIC23B_DAPC_DEEMP_44_1KHZ 0x0002 |
De-emphasis: 44.1 kHz. More... | |
#define | AIC23B_DAPC_DEEMP_48KHZ 0x0003 |
De-emphasis: 48 kHz. More... | |
#define | AIC23B_DAPC_ADCHP_OFFSET 0 |
ADC high-pass filter bit-field offset. More... | |
#define | AIC23B_DAPC_ADCHP_SIZE 1 |
ADC high-pass filter bit-field size. More... | |
Power Down Control | |
#define | AIC23B_PDC 0x06 |
Register index. More... | |
#define | AIC23B_PDC_ADDRESS 0x06 |
Register address. More... | |
#define | AIC23B_PDC_DEFAULT 0x0007 |
Register default value. More... | |
#define | AIC23B_PDC_OFF_OFFSET 7 |
Device power bit-field offset. More... | |
#define | AIC23B_PDC_OFF_SIZE 1 |
Device power bit-field size. More... | |
#define | AIC23B_PDC_CLK_OFFSET 6 |
Clock bit-field offset. More... | |
#define | AIC23B_PDC_CLK_SIZE 1 |
Clock bit-field size. More... | |
#define | AIC23B_PDC_OSC_OFFSET 5 |
Oscillator bit-field offset. More... | |
#define | AIC23B_PDC_OSC_SIZE 1 |
Oscillator bit-field size. More... | |
#define | AIC23B_PDC_OUT_OFFSET 4 |
Outputs bit-field offset. More... | |
#define | AIC23B_PDC_OUT_SIZE 1 |
Outputs bit-field size. More... | |
#define | AIC23B_PDC_DAC_OFFSET 3 |
DAC bit-field offset. More... | |
#define | AIC23B_PDC_DAC_SIZE 1 |
DAC bit-field size. More... | |
#define | AIC23B_PDC_ADC_OFFSET 2 |
ADC bit-field offset. More... | |
#define | AIC23B_PDC_ADC_SIZE 1 |
ADC bit-field size. More... | |
#define | AIC23B_PDC_MIC_OFFSET 1 |
Microphone input bit-field offset. More... | |
#define | AIC23B_PDC_MIC_SIZE 1 |
Microphone input bit-field size. More... | |
#define | AIC23B_PDC_LINE_OFFSET 0 |
Line input bit-field offset. More... | |
#define | AIC23B_PDC_LINE_SIZE 1 |
Line input bit-field size. More... | |
Digital Audio Interface Format | |
#define | AIC23B_DAIF 0x07 |
Register index. More... | |
#define | AIC23B_DAIF_ADDRESS 0x07 |
Register address. More... | |
#define | AIC23B_DAIF_DEFAULT 0x0001 |
Register default value. More... | |
#define | AIC23B_DAIF_MS_OFFSET 6 |
Master/slave mode bit-field offset. More... | |
#define | AIC23B_DAIF_MS_SIZE 1 |
Master/slave mode bit-field size. More... | |
#define | AIC23B_DAIF_MS_SLAVE 0x0000 |
Slave mode. More... | |
#define | AIC23B_DAIF_MS_MASTER 0x0001 |
Master mode. More... | |
#define | AIC23B_DAIF_LRSWAP_OFFSET 5 |
DAC left/right swap bit-field offset. More... | |
#define | AIC23B_DAIF_LRSWAP_SIZE 1 |
DAC left/right swap bit-field size. More... | |
#define | AIC23B_DAIF_LRP_OFFSET 4 |
DAC left/right phase bit-field offset. More... | |
#define | AIC23B_DAIF_LRP_SIZE 1 |
DAC left/right phase bit-field size. More... | |
#define | AIC23B_DAIF_IWL_OFFSET 2 |
Input bit length bit-field offset. More... | |
#define | AIC23B_DAIF_IWL_SIZE 2 |
Input bit length bit-field size. More... | |
#define | AIC23B_DAIF_IWL_16 0x0000 |
Input bit length: 16. More... | |
#define | AIC23B_DAIF_IWL_20 0x0001 |
Input bit length: 20. More... | |
#define | AIC23B_DAIF_IWL_24 0x0002 |
Input bit length: 24. More... | |
#define | AIC23B_DAIF_IWL_32 0x0003 |
Input bit length: 32. More... | |
#define | AIC23B_DAIF_FMT_OFFSET 0 |
Data format bit-field offset. More... | |
#define | AIC23B_DAIF_FMT_SIZE 2 |
Data format bit-field size. More... | |
#define | AIC23B_DAIF_FMT_RA 0x0000 |
Data format: MSB first, right aligned. More... | |
#define | AIC23B_DAIF_FMT_LA 0x0001 |
Data format: MSB first, left aligned. More... | |
#define | AIC23B_DAIF_FMT_I2S 0x0002 |
Data format: I2S format, MSB first, left - 1 aligned. More... | |
#define | AIC23B_DAIF_FMT_DSP 0x0003 |
Data format: DSP format, frame sync followed by two data words. More... | |
Sample Rate Control | |
#define | AIC23B_SRC 0x08 |
Register index. More... | |
#define | AIC23B_SRC_ADDRESS 0x08 |
Register address. More... | |
#define | AIC23B_SRC_DEFAULT 0x0020 |
Register default value. More... | |
#define | AIC23B_SRC_CLKOUT_OFFSET 7 |
Clock output divider bit-field offset. More... | |
#define | AIC23B_SRC_CLKOUT_SIZE 1 |
Clock output divider bit-field size. More... | |
#define | AIC23B_SRC_CLKIN_OFFSET 6 |
Clock input divider bit-field offset. More... | |
#define | AIC23B_SRC_CLKIN_SIZE 1 |
Clock input divider bit-field size. More... | |
#define | AIC23B_SRC_SR_OFFSET 2 |
Sampling rate control bit-field offset. More... | |
#define | AIC23B_SRC_SR_SIZE 4 |
Sampling rate control bit-field size. More... | |
#define | AIC23B_SRC_BOSR_OFFSET 1 |
Base oversampling rate bit-field offset. More... | |
#define | AIC23B_SRC_BOSR_SIZE 1 |
Base oversampling rate bit-field size. More... | |
#define | AIC23B_SRC_USB_OFFSET 0 |
USB clock mode select bit-field offset. More... | |
#define | AIC23B_SRC_USB_SIZE 1 |
USB clock mode select bit-field size. More... | |
Digital Interface Activation | |
#define | AIC23B_DIA 0x09 |
Register index. More... | |
#define | AIC23B_DIA_ADDRESS 0x09 |
Register address. More... | |
#define | AIC23B_DIA_DEFAULT 0x0000 |
Register default value. More... | |
#define | AIC23B_DIA_ACT_OFFSET 0 |
Activate interface bit-field offset. More... | |
#define | AIC23B_DIA_ACT_SIZE 1 |
Activate interface bit-field size. More... | |
Reset Register | |
#define | AIC23B_RR 0x0A |
Register index. More... | |
#define | AIC23B_RR_ADDRESS 0x0F |
Register address. More... | |
#define | AIC23B_RR_DEFAULT 0x0000 |
Register default value. More... | |
#define | AIC23B_RR_RES_OFFSET 0 |
Reset bit-field offset. More... | |
#define | AIC23B_RR_RES_SIZE 9 |
Reset bit-field size. More... | |
Register Structure | |
#define | AIC23B_ADDRESS(REG) REG##_ADDRESS |
Returns the address of the REG register (e.g. AIC23B_LLICVC ). More... | |
#define | AIC23B_DEFAULT(REG) REG##_DEFAULT |
Returns the default value of the REG register (e.g. AIC23B_LLICVC ). More... | |
#define | AIC23B_OFFSET(REG, BITFIELD) REG##_##BITFIELD##_OFFSET |
Returns the offset of the BITFIELD bit-field (e.g. More... | |
#define | AIC23B_SIZE(REG, BITFIELD) REG##_##BITFIELD##_SIZE |
Returns the size of the BITFIELD bit-field (e.g. More... | |
#define | AIC23B_MASK(REG, BITFIELD) (((1 << REG##_##BITFIELD##_SIZE) - 1) << REG##_##BITFIELD##_OFFSET) |
Returns the mask of the BITFIELD bit-field (e.g. More... | |
Audio Channels | |
#define | AIC23B_LEFT_CHANNEL 0x01 |
#define | AIC23B_RIGHT_CHANNEL 0x02 |
Volume Control | |
#define | AIC23B_MUTED SCHAR_MIN |
#define | AIC23B_LIN_VOL_OFFSET 0x17 |
#define | AIC23B_LIN_VOL_MIN ((int8_t)(-34.5 * 2 / 3)) |
#define | AIC23B_LIN_VOL_MAX ((int8_t)(+12 * 2 / 3)) |
#define | AIC23B_HP_VOL_OFFSET 0x79 |
#define | AIC23B_HP_VOL_MIN ((int8_t)(-72)) |
#define | AIC23B_HP_VOL_MAX ((int8_t)(+ 6)) |
Low-Level Interface | |
uint16_t | aic23b_read_reg (uint8_t reg) |
Reads the reg register. More... | |
void | aic23b_write_reg (uint8_t reg, uint16_t val) |
Writes val to the reg register. More... | |
Mid-Level Interface | |
int8_t | aic23b_get_line_in_volume (uint8_t ch) |
Gets the ch line input channel volume. More... | |
void | aic23b_set_line_in_volume (uint8_t ch_mask, int8_t vol) |
Sets the ch_mask line input channels volume to vol. More... | |
uint8_t | aic23b_dac_get_average_headphone_volume (void) |
Gets the average headphone volume. More... | |
void | aic23b_dac_set_average_headphone_volume (uint8_t volume) |
Sets the average headphone volume. More... | |
bool | aic23b_dac_is_headphone_volume_muted (void) |
Returns the state of the mute mode of the DAC. More... | |
bool | aic23b_dac_is_headphone_volume_boosted (void) |
Returns the state of the boost mode of the DAC. More... | |
int8_t | aic23b_get_headphone_volume (uint8_t ch) |
Gets the ch channel headphone volume. More... | |
void | aic23b_set_headphone_volume (uint8_t ch_mask, int8_t vol, bool z_cross) |
Sets the ch_mask channels headphone volume to vol, with zero-cross detect if z_cross is true . More... | |
aic23b_aapc_t | aic23b_get_analog_audio_path (void) |
Gets the analog audio path. More... | |
void | aic23b_set_analog_audio_path (aic23b_aapc_t aapc) |
Sets the analog audio path to aapc. More... | |
aic23b_dapc_t | aic23b_get_digital_audio_path (void) |
Gets the digital audio path. More... | |
void | aic23b_set_digital_audio_path (aic23b_dapc_t dapc) |
Sets the digital audio path to dapc. More... | |
aic23b_pdc_t | aic23b_get_power_down_state (void) |
Gets the power down state. More... | |
void | aic23b_set_power_down_state (aic23b_pdc_t pdc) |
Sets the power down state to pdc. More... | |
bool | aic23b_is_dig_audio_activated (void) |
Tells whether the digital audio interface is activated. More... | |
void | aic23b_activate_dig_audio (bool act) |
Activates or deactivates the digital audio interface according to act. More... | |
void | aic23b_reset (void) |
Resets the CODEC. More... | |
void | aic23b_configure_freq (int master_clock_hz, int sample_rate_hz) |
Used to configure the codec frequency. More... | |
High-Level Interface | |
void | aic23b_dac_start (uint32_t sample_rate_hz, uint8_t num_channels, uint8_t bits_per_sample, bool swap_channels, void(*callback)(uint32_t arg), uint32_t callback_opt, uint32_t pba_hz) |
Starts the DAC. More... | |
void | aic23b_dac_setup (uint32_t sample_rate_hz, uint8_t num_channels, uint8_t bits_per_sample, bool swap_channels, void(*callback)(uint32_t arg), uint32_t callback_opt, uint32_t pba_hz) |
Sets the DAC up with new settings. More... | |
bool | aic23b_dac_output (void *sample_buffer, size_t sample_length) |
Outputs a sample buffer to the DAC. More... | |
void | aic23b_dac_increase_volume (void) |
Increases the output volume of the DAC. More... | |
void | aic23b_dac_decrease_volume (void) |
Decreases the output volume of the DAC. More... | |
void | aic23b_dac_flush (void) |
Flushes the sample buffer being output to the DAC. More... | |
void | aic23b_dac_stop (void) |
Stops the DAC. More... | |
void | aic23b_adc_start (uint32_t sample_rate_hz, uint8_t num_channels, uint8_t bits_per_sample, bool swap_channels, void(*callback)(uint32_t arg), uint32_t callback_opt, uint32_t pba_hz) |
Starts the ADC. More... | |
void | aic23b_adc_setup (uint32_t sample_rate_hz, uint8_t num_channels, uint8_t bits_per_sample, bool swap_channels, void(*callback)(uint32_t arg), uint32_t callback_opt, uint32_t pba_hz) |
Sets the ADC up with new settings. More... | |
bool | aic23b_adc_input (void *sample_buffer, size_t sample_length) |
Input a sample buffer from the ADC. More... | |
void | aic23b_adc_flush (void) |
Flushes the sample buffer being input from the ADC. More... | |
void | aic23b_adc_stop (void) |
Stops the ADC. More... | |
void | aic23b_codec_start (uint32_t sample_rate_hz, uint8_t num_channels, uint8_t bits_per_sample, bool swap_channels, void(*callback)(uint32_t arg), uint32_t callback_opt, uint32_t pba_hz) |
Starts the CODEC. More... | |
void | aic23b_codec_setup (uint32_t sample_rate_hz, uint8_t num_channels, uint8_t bits_per_sample, bool swap_channels, void(*callback)(uint32_t arg), uint32_t callback_opt, uint32_t pba_hz) |
Sets the CODEC up with new settings. More... | |
void | aic23b_codec_flush (void) |
Flushes the sample buffers being input from the ADC and output to the DAC. More... | |
void | aic23b_codec_stop (void) |
Stops the CODEC. More... | |
void | aic23b_dac_mute (bool mute) |
Mute audio if mute is set to true. More... | |
#define AIC23B_AAPC 0x04 |
Register index.
Referenced by aic23b_codec_start(), aic23b_get_analog_audio_path(), and aic23b_set_analog_audio_path().
#define AIC23B_AAPC_ADDRESS 0x04 |
Register address.
#define AIC23B_AAPC_BYP_OFFSET 3 |
Bypass bit-field offset.
#define AIC23B_AAPC_BYP_SIZE 1 |
Bypass bit-field size.
#define AIC23B_AAPC_DAC_OFFSET 4 |
DAC select bit-field offset.
#define AIC23B_AAPC_DAC_SIZE 1 |
DAC select bit-field size.
#define AIC23B_AAPC_DEFAULT 0x000A |
Register default value.
#define AIC23B_AAPC_INSEL_LINE 0x0000 |
Input selected for ADC: line.
#define AIC23B_AAPC_INSEL_MIC 0x0001 |
Input selected for ADC: microphone.
#define AIC23B_AAPC_INSEL_OFFSET 2 |
Input select for ADC bit-field offset.
#define AIC23B_AAPC_INSEL_SIZE 1 |
Input select for ADC bit-field size.
#define AIC23B_AAPC_MICB_OFFSET 0 |
Microphone boost (+20 dB) bit-field offset.
#define AIC23B_AAPC_MICB_SIZE 1 |
Microphone boost (+20 dB) bit-field size.
#define AIC23B_AAPC_MICM_OFFSET 1 |
Microphone mute bit-field offset.
#define AIC23B_AAPC_MICM_SIZE 1 |
Microphone mute bit-field size.
#define AIC23B_AAPC_STA_0DB 0x0004 |
Added sidetone: 0 dB.
#define AIC23B_AAPC_STA_M12DB 0x0002 |
Added sidetone: -12 dB.
#define AIC23B_AAPC_STA_M18DB 0x0003 |
Added sidetone: -18 dB.
#define AIC23B_AAPC_STA_M6DB 0x0000 |
Added sidetone: -6 dB.
#define AIC23B_AAPC_STA_M9DB 0x0001 |
Added sidetone: -9 dB.
#define AIC23B_AAPC_STA_OFFSET 6 |
Sidetone addition bit-field offset.
#define AIC23B_AAPC_STA_SIZE 3 |
Sidetone addition bit-field size.
#define AIC23B_AAPC_STE_OFFSET 5 |
Sidetone enable bit-field offset.
#define AIC23B_AAPC_STE_SIZE 1 |
Sidetone enable bit-field size.
#define AIC23B_ADDRESS | ( | REG | ) | REG##_ADDRESS |
Returns the address of the REG register (e.g. AIC23B_LLICVC
).
#define AIC23B_CTRL_ADDR_OFFSET 9 |
Control address bit-field offset.
#define AIC23B_CTRL_ADDR_SIZE 7 |
Control address bit-field size.
#define AIC23B_CTRL_DATA_OFFSET 0 |
Control data bit-field offset.
#define AIC23B_CTRL_DATA_SIZE 9 |
Control data bit-field size.
#define AIC23B_CTRL_INTERFACE_SPI 2 |
Control interface: Serial Peripheral Interface.
#define AIC23B_CTRL_INTERFACE_TWI 1 |
Control interface: Two-Wire Interface.
#define AIC23B_CTRL_SIZE (AIC23B_CTRL_ADDR_SIZE + AIC23B_CTRL_DATA_SIZE) |
Referenced by aic23b_codec_start().
#define AIC23B_DAIF 0x07 |
Register index.
Referenced by aic23b_codec_setup().
#define AIC23B_DAIF_ADDRESS 0x07 |
Register address.
#define AIC23B_DAIF_DEFAULT 0x0001 |
Register default value.
#define AIC23B_DAIF_FMT_DSP 0x0003 |
Data format: DSP format, frame sync followed by two data words.
#define AIC23B_DAIF_FMT_I2S 0x0002 |
Data format: I2S format, MSB first, left - 1 aligned.
Referenced by aic23b_codec_setup().
#define AIC23B_DAIF_FMT_LA 0x0001 |
Data format: MSB first, left aligned.
#define AIC23B_DAIF_FMT_OFFSET 0 |
Data format bit-field offset.
#define AIC23B_DAIF_FMT_RA 0x0000 |
Data format: MSB first, right aligned.
#define AIC23B_DAIF_FMT_SIZE 2 |
Data format bit-field size.
#define AIC23B_DAIF_IWL_16 0x0000 |
Input bit length: 16.
Referenced by aic23b_codec_setup().
#define AIC23B_DAIF_IWL_20 0x0001 |
Input bit length: 20.
Referenced by aic23b_codec_setup().
#define AIC23B_DAIF_IWL_24 0x0002 |
Input bit length: 24.
Referenced by aic23b_codec_setup().
#define AIC23B_DAIF_IWL_32 0x0003 |
Input bit length: 32.
Referenced by aic23b_codec_setup().
#define AIC23B_DAIF_IWL_OFFSET 2 |
Input bit length bit-field offset.
#define AIC23B_DAIF_IWL_SIZE 2 |
Input bit length bit-field size.
#define AIC23B_DAIF_LRP_OFFSET 4 |
DAC left/right phase bit-field offset.
#define AIC23B_DAIF_LRP_SIZE 1 |
DAC left/right phase bit-field size.
#define AIC23B_DAIF_LRSWAP_OFFSET 5 |
DAC left/right swap bit-field offset.
#define AIC23B_DAIF_LRSWAP_SIZE 1 |
DAC left/right swap bit-field size.
#define AIC23B_DAIF_MS_MASTER 0x0001 |
Master mode.
#define AIC23B_DAIF_MS_OFFSET 6 |
Master/slave mode bit-field offset.
#define AIC23B_DAIF_MS_SIZE 1 |
Master/slave mode bit-field size.
#define AIC23B_DAIF_MS_SLAVE 0x0000 |
Slave mode.
Referenced by aic23b_codec_setup().
#define AIC23B_DAPC 0x05 |
Register index.
Referenced by aic23b_codec_start(), aic23b_get_digital_audio_path(), and aic23b_set_digital_audio_path().
#define AIC23B_DAPC_ADCHP_OFFSET 0 |
ADC high-pass filter bit-field offset.
#define AIC23B_DAPC_ADCHP_SIZE 1 |
ADC high-pass filter bit-field size.
#define AIC23B_DAPC_ADDRESS 0x05 |
Register address.
#define AIC23B_DAPC_DACM_OFFSET 3 |
DAC soft mute bit-field offset.
#define AIC23B_DAPC_DACM_SIZE 1 |
DAC soft mute bit-field size.
#define AIC23B_DAPC_DEEMP_32KHZ 0x0001 |
De-emphasis: 32 kHz.
#define AIC23B_DAPC_DEEMP_44_1KHZ 0x0002 |
De-emphasis: 44.1 kHz.
#define AIC23B_DAPC_DEEMP_48KHZ 0x0003 |
De-emphasis: 48 kHz.
#define AIC23B_DAPC_DEEMP_NONE 0x0000 |
De-emphasis: none.
Referenced by aic23b_codec_start().
#define AIC23B_DAPC_DEEMP_OFFSET 1 |
De-emphasis control bit-field offset.
#define AIC23B_DAPC_DEEMP_SIZE 2 |
De-emphasis control bit-field size.
#define AIC23B_DAPC_DEFAULT 0x0008 |
Register default value.
#define AIC23B_DEFAULT | ( | REG | ) | REG##_DEFAULT |
Returns the default value of the REG register (e.g. AIC23B_LLICVC
).
Referenced by aic23b_codec_setup(), aic23b_codec_start(), aic23b_codec_stop(), aic23b_configure_freq(), aic23b_reset(), and aic23b_write_reg().
#define AIC23B_DIA 0x09 |
Register index.
Referenced by aic23b_activate_dig_audio(), and aic23b_is_dig_audio_activated().
#define AIC23B_DIA_ACT_OFFSET 0 |
Activate interface bit-field offset.
#define AIC23B_DIA_ACT_SIZE 1 |
Activate interface bit-field size.
#define AIC23B_DIA_ADDRESS 0x09 |
Register address.
#define AIC23B_DIA_DEFAULT 0x0000 |
Register default value.
#define AIC23B_HP_VOL_MAX ((int8_t)(+ 6)) |
Referenced by aic23b_dac_get_average_headphone_volume(), and aic23b_set_headphone_volume().
#define AIC23B_HP_VOL_MIN ((int8_t)(-72)) |
#define AIC23B_HP_VOL_OFFSET 0x79 |
#define AIC23B_INPUT_LINE 0 |
Input Selected: LINE IN.
#define AIC23B_INPUT_MIC 1 |
Input Selected: MIC.
#define AIC23B_LCHVC 0x02 |
Register index.
Referenced by aic23b_dac_get_average_headphone_volume(), aic23b_get_headphone_volume(), and aic23b_set_headphone_volume().
#define AIC23B_LCHVC_ADDRESS 0x02 |
Register address.
#define AIC23B_LCHVC_DEFAULT 0x00F9 |
Register default value.
#define AIC23B_LCHVC_LHV_OFFSET 0 |
Left headphone volume control bit-field offset.
#define AIC23B_LCHVC_LHV_SIZE 7 |
Left headphone volume control bit-field size.
#define AIC23B_LCHVC_LRS_OFFSET 8 |
Left/right headphone channel simultaneous volume/mute update bit-field offset.
#define AIC23B_LCHVC_LRS_SIZE 1 |
Left/right headphone channel simultaneous volume/mute update bit-field size.
#define AIC23B_LCHVC_LZC_OFFSET 7 |
Left-channel zero-cross detect bit-field offset.
#define AIC23B_LCHVC_LZC_SIZE 1 |
Left-channel zero-cross detect bit-field size.
#define AIC23B_LEFT_CHANNEL 0x01 |
#define AIC23B_LIN_VOL_MAX ((int8_t)(+12 * 2 / 3)) |
Referenced by aic23b_set_line_in_volume().
#define AIC23B_LIN_VOL_MIN ((int8_t)(-34.5 * 2 / 3)) |
Referenced by aic23b_set_line_in_volume().
#define AIC23B_LIN_VOL_OFFSET 0x17 |
Referenced by aic23b_get_line_in_volume(), and aic23b_set_line_in_volume().
#define AIC23B_LLICVC 0x00 |
Register index.
Referenced by aic23b_codec_start(), aic23b_get_line_in_volume(), and aic23b_set_line_in_volume().
#define AIC23B_LLICVC_ADDRESS 0x00 |
Register address.
#define AIC23B_LLICVC_DEFAULT 0x0097 |
Register default value.
#define AIC23B_LLICVC_LIM_OFFSET 7 |
Left line input mute bit-field offset.
#define AIC23B_LLICVC_LIM_SIZE 1 |
Left line input mute bit-field size.
#define AIC23B_LLICVC_LIV_OFFSET 0 |
Left line input volume control bit-field offset.
#define AIC23B_LLICVC_LIV_SIZE 5 |
Left line input volume control bit-field size.
#define AIC23B_LLICVC_LRS_OFFSET 8 |
Left/right line simultaneous volume/mute update bit-field offset.
#define AIC23B_LLICVC_LRS_SIZE 1 |
Left/right line simultaneous volume/mute update bit-field size.
#define AIC23B_MASK | ( | REG, | |
BITFIELD | |||
) | (((1 << REG##_##BITFIELD##_SIZE) - 1) << REG##_##BITFIELD##_OFFSET) |
Returns the mask of the BITFIELD bit-field (e.g.
LRS) in its REG register (e.g. AIC23B_LLICVC
).
#define AIC23B_MODE_ADC 1 |
Mode supported: ADC.
#define AIC23B_MODE_CODEC 3 |
Mode supported: CODEC.
#define AIC23B_MODE_DAC 0 |
Mode supported: DAC.
#define AIC23B_MUTED SCHAR_MIN |
Referenced by aic23b_dac_decrease_volume(), aic23b_get_headphone_volume(), and aic23b_get_line_in_volume().
#define AIC23B_OFFSET | ( | REG, | |
BITFIELD | |||
) | REG##_##BITFIELD##_OFFSET |
Returns the offset of the BITFIELD bit-field (e.g.
LRS) in its REG register (e.g. AIC23B_LLICVC
).
Referenced by aic23b_reset().
#define AIC23B_PDC 0x06 |
Register index.
Referenced by aic23b_codec_start(), aic23b_codec_stop(), aic23b_get_power_down_state(), and aic23b_set_power_down_state().
#define AIC23B_PDC_ADC_OFFSET 2 |
ADC bit-field offset.
#define AIC23B_PDC_ADC_SIZE 1 |
ADC bit-field size.
#define AIC23B_PDC_ADDRESS 0x06 |
Register address.
#define AIC23B_PDC_CLK_OFFSET 6 |
Clock bit-field offset.
#define AIC23B_PDC_CLK_SIZE 1 |
Clock bit-field size.
#define AIC23B_PDC_DAC_OFFSET 3 |
DAC bit-field offset.
#define AIC23B_PDC_DAC_SIZE 1 |
DAC bit-field size.
#define AIC23B_PDC_DEFAULT 0x0007 |
Register default value.
#define AIC23B_PDC_LINE_OFFSET 0 |
Line input bit-field offset.
#define AIC23B_PDC_LINE_SIZE 1 |
Line input bit-field size.
#define AIC23B_PDC_MIC_OFFSET 1 |
Microphone input bit-field offset.
#define AIC23B_PDC_MIC_SIZE 1 |
Microphone input bit-field size.
#define AIC23B_PDC_OFF_OFFSET 7 |
Device power bit-field offset.
#define AIC23B_PDC_OFF_SIZE 1 |
Device power bit-field size.
#define AIC23B_PDC_OSC_OFFSET 5 |
Oscillator bit-field offset.
#define AIC23B_PDC_OSC_SIZE 1 |
Oscillator bit-field size.
#define AIC23B_PDC_OUT_OFFSET 4 |
Outputs bit-field offset.
#define AIC23B_PDC_OUT_SIZE 1 |
Outputs bit-field size.
#define AIC23B_RCHVC 0x03 |
Register index.
Referenced by aic23b_dac_get_average_headphone_volume(), aic23b_get_headphone_volume(), and aic23b_set_headphone_volume().
#define AIC23B_RCHVC_ADDRESS 0x03 |
Register address.
#define AIC23B_RCHVC_DEFAULT 0x00F9 |
Register default value.
#define AIC23B_RCHVC_RHV_OFFSET 0 |
Right headphone volume control bit-field offset.
#define AIC23B_RCHVC_RHV_SIZE 7 |
Right headphone volume control bit-field size.
#define AIC23B_RCHVC_RLS_OFFSET 8 |
Right/left headphone channel simultaneous volume/mute update bit-field offset.
#define AIC23B_RCHVC_RLS_SIZE 1 |
Right/left headphone channel simultaneous volume/mute update bit-field size.
#define AIC23B_RCHVC_RZC_OFFSET 7 |
Right-channel zero-cross detect bit-field offset.
#define AIC23B_RCHVC_RZC_SIZE 1 |
Right-channel zero-cross detect bit-field size.
#define AIC23B_RIGHT_CHANNEL 0x02 |
#define AIC23B_RLICVC 0x01 |
Register index.
Referenced by aic23b_codec_start(), aic23b_get_line_in_volume(), and aic23b_set_line_in_volume().
#define AIC23B_RLICVC_ADDRESS 0x01 |
Register address.
#define AIC23B_RLICVC_DEFAULT 0x0097 |
Register default value.
#define AIC23B_RLICVC_RIM_OFFSET 7 |
Right line input mute bit-field offset.
#define AIC23B_RLICVC_RIM_SIZE 1 |
Right line input mute bit-field size.
#define AIC23B_RLICVC_RIV_OFFSET 0 |
Right line input volume control bit-field offset.
#define AIC23B_RLICVC_RIV_SIZE 5 |
Right line input volume control bit-field size.
#define AIC23B_RLICVC_RLS_OFFSET 8 |
Right/left line simultaneous volume/mute update bit-field offset.
#define AIC23B_RLICVC_RLS_SIZE 1 |
Right/left line simultaneous volume/mute update bit-field size.
#define AIC23B_RR 0x0A |
Register index.
Referenced by aic23b_reset(), and aic23b_write_reg().
#define AIC23B_RR_ADDRESS 0x0F |
Register address.
#define AIC23B_RR_DEFAULT 0x0000 |
Register default value.
#define AIC23B_RR_RES_OFFSET 0 |
Reset bit-field offset.
#define AIC23B_RR_RES_SIZE 9 |
Reset bit-field size.
#define AIC23B_SIZE | ( | REG, | |
BITFIELD | |||
) | REG##_##BITFIELD##_SIZE |
Returns the size of the BITFIELD bit-field (e.g.
LRS) of the REG register (e.g. AIC23B_LLICVC
).
#define AIC23B_SRC 0x08 |
Register index.
Referenced by aic23b_configure_freq().
#define AIC23B_SRC_ADDRESS 0x08 |
Register address.
#define AIC23B_SRC_BOSR_OFFSET 1 |
Base oversampling rate bit-field offset.
#define AIC23B_SRC_BOSR_SIZE 1 |
Base oversampling rate bit-field size.
#define AIC23B_SRC_CLKIN_OFFSET 6 |
Clock input divider bit-field offset.
#define AIC23B_SRC_CLKIN_SIZE 1 |
Clock input divider bit-field size.
#define AIC23B_SRC_CLKOUT_OFFSET 7 |
Clock output divider bit-field offset.
#define AIC23B_SRC_CLKOUT_SIZE 1 |
Clock output divider bit-field size.
#define AIC23B_SRC_DEFAULT 0x0020 |
Register default value.
#define AIC23B_SRC_SR_OFFSET 2 |
Sampling rate control bit-field offset.
#define AIC23B_SRC_SR_SIZE 4 |
Sampling rate control bit-field size.
#define AIC23B_SRC_USB_OFFSET 0 |
USB clock mode select bit-field offset.
#define AIC23B_SRC_USB_SIZE 1 |
USB clock mode select bit-field size.
void aic23b_activate_dig_audio | ( | bool | act | ) |
Activates or deactivates the digital audio interface according to act.
References aic23b_dia_t::act, AIC23B_DIA, aic23b_read_reg(), aic23b_write_reg(), and aic23b_dia_t::data.
Referenced by aic23b_codec_start().
void aic23b_adc_flush | ( | void | ) |
Flushes the sample buffer being input from the ADC.
bool aic23b_adc_input | ( | void * | sample_buffer, |
size_t | sample_length | ||
) |
Input a sample buffer from the ADC.
References aic23b_output_params, AIC23B_SSC_RX_PDCA_CHANNEL, AUDIO_ADC_OUT_OF_SAMPLE_CB, AUDIO_ADC_RELOAD_CB, pdca_enable_interrupt_reload_counter_zero(), pdca_enable_interrupt_transfer_complete(), pdca_get_reload_size(), pdca_get_transfer_status(), pdca_reload_channel(), and PDCA_TRANSFER_COUNTER_RELOAD_IS_ZERO.
void aic23b_adc_setup | ( | uint32_t | sample_rate_hz, |
uint8_t | num_channels, | ||
uint8_t | bits_per_sample, | ||
bool | swap_channels, | ||
void(*)(uint32_t arg) | callback, | ||
uint32_t | callback_opt, | ||
uint32_t | pba_hz | ||
) |
Sets the ADC up with new settings.
void aic23b_adc_start | ( | uint32_t | sample_rate_hz, |
uint8_t | num_channels, | ||
uint8_t | bits_per_sample, | ||
bool | swap_channels, | ||
void(*)(uint32_t arg) | callback, | ||
uint32_t | callback_opt, | ||
uint32_t | pba_hz | ||
) |
Starts the ADC.
void aic23b_adc_stop | ( | void | ) |
Stops the ADC.
void aic23b_codec_flush | ( | void | ) |
Flushes the sample buffers being input from the ADC and output to the DAC.
References AIC23B_SSC_RX_PDCA_CHANNEL, AIC23B_SSC_TX_PDCA_CHANNEL, pdca_disable_interrupt_transfer_complete(), pdca_get_transfer_status(), and PDCA_TRANSFER_COMPLETE.
Referenced by aic23b_codec_stop().
void aic23b_codec_setup | ( | uint32_t | sample_rate_hz, |
uint8_t | num_channels, | ||
uint8_t | bits_per_sample, | ||
bool | swap_channels, | ||
void(*)(uint32_t arg) | callback, | ||
uint32_t | callback_opt, | ||
uint32_t | pba_hz | ||
) |
Sets the CODEC up with new settings.
void aic23b_codec_setup | ( | uint32_t | sample_rate_hz, |
uint8_t | num_channels, | ||
uint8_t | bits_per_sample, | ||
bool | swap_channels, | ||
void(*)(uint32_t opt) | callback, | ||
uint32_t | callback_opt, | ||
uint32_t | pba_hz | ||
) |
References pdca_channel_options_t::addr, aic23b_configure_freq(), AIC23B_DAIF, AIC23B_DAIF_FMT_I2S, AIC23B_DAIF_IWL_16, AIC23B_DAIF_IWL_20, AIC23B_DAIF_IWL_24, AIC23B_DAIF_IWL_32, AIC23B_DAIF_MS_SLAVE, AIC23B_DEFAULT, AIC23B_MCLK_HZ, aic23b_output_params, AIC23B_SSC, AIC23B_SSC_RX_PDCA_CHANNEL, AIC23B_SSC_RX_PDCA_PID, AIC23B_SSC_TX_PDCA_CHANNEL, AIC23B_SSC_TX_PDCA_PID, aic23b_write_reg(), callback, callback_opt, aic23b_daif_t::data, aic23b_daif_t::fmt, aic23b_daif_t::iwl, aic23b_daif_t::lrp, aic23b_daif_t::lrswap, aic23b_daif_t::ms, num_channels, pdca_enable(), pdca_init_channel(), PDCA_TRANSFER_SIZE_BYTE, PDCA_TRANSFER_SIZE_HALF_WORD, PDCA_TRANSFER_SIZE_WORD, ssc_i2s_init(), SSC_I2S_MODE_STEREO_OUT_STEREO_IN, and swap_channels.
Referenced by aic23b_codec_start().
void aic23b_codec_start | ( | uint32_t | sample_rate_hz, |
uint8_t | num_channels, | ||
uint8_t | bits_per_sample, | ||
bool | swap_channels, | ||
void(*)(uint32_t arg) | callback, | ||
uint32_t | callback_opt, | ||
uint32_t | pba_hz | ||
) |
Starts the CODEC.
References aic23b_pdc_t::adc, aic23b_dapc_t::adchp, AIC23B_AAPC, aic23b_activate_dig_audio(), aic23b_codec_setup(), aic23b_codec_stop(), AIC23B_CTRL_SIZE, AIC23B_DAPC, AIC23B_DAPC_DEEMP_NONE, AIC23B_DEFAULT, AIC23B_LEFT_CHANNEL, AIC23B_LLICVC, AIC23B_PDC, AIC23B_RIGHT_CHANNEL, AIC23B_RLICVC, aic23b_set_analog_audio_path(), aic23b_set_digital_audio_path(), aic23b_set_headphone_volume(), aic23b_set_power_down_state(), aic23b_ssc_rx_pdca_int_handler(), AIC23B_SSC_RX_PDCA_INT_LEVEL, AIC23B_SSC_RX_PDCA_IRQ, aic23b_ssc_tx_pdca_int_handler(), AIC23B_SSC_TX_PDCA_INT_LEVEL, AIC23B_SSC_TX_PDCA_IRQ, aic23b_write_reg(), aic23b_aapc_t::byp, callback, aic23b_pdc_t::clk, aic23b_aapc_t::dac, aic23b_pdc_t::dac, aic23b_dapc_t::dacm, aic23b_llicvc_t::data, aic23b_rlicvc_t::data, aic23b_aapc_t::data, aic23b_dapc_t::data, aic23b_pdc_t::data, aic23b_dapc_t::deemp, gpio_enable_module(), aic23b_aapc_t::insel, INTC_register_interrupt(), aic23b_llicvc_t::lim, aic23b_pdc_t::line, aic23b_llicvc_t::liv, aic23b_llicvc_t::lrs, aic23b_pdc_t::mic, aic23b_aapc_t::micb, aic23b_aapc_t::micm, aic23b_pdc_t::off, aic23b_pdc_t::osc, aic23b_pdc_t::out, aic23b_rlicvc_t::rim, aic23b_rlicvc_t::riv, aic23b_rlicvc_t::rls, aic23b_aapc_t::sta, and aic23b_aapc_t::ste.
void aic23b_codec_stop | ( | void | ) |
Stops the CODEC.
References aic23b_pdc_t::adc, aic23b_codec_flush(), AIC23B_DEFAULT, aic23b_output_params, AIC23B_PDC, aic23b_reset(), aic23b_set_power_down_state(), AIC23B_SSC, AIC23B_SSC_RX_PDCA_CHANNEL, AIC23B_SSC_TX_PDCA_CHANNEL, aic23b_pdc_t::clk, aic23b_pdc_t::dac, aic23b_pdc_t::data, gpio_enable_gpio(), aic23b_pdc_t::line, aic23b_pdc_t::mic, aic23b_pdc_t::off, aic23b_pdc_t::osc, aic23b_pdc_t::out, pdca_disable(), and ssc_i2s_reset().
Referenced by aic23b_codec_start().
void aic23b_configure_freq | ( | int | master_clock_hz, |
int | sample_rate_hz | ||
) |
Used to configure the codec frequency.
References AIC23B_DEFAULT, AIC23B_SRC, aic23b_write_reg(), aic23b_src_t::bosr, aic23b_src_t::clkin, aic23b_src_t::clkout, aic23b_src_t::data, aic23b_src_t::sr, and aic23b_src_t::usb.
Referenced by aic23b_codec_setup().
void aic23b_dac_decrease_volume | ( | void | ) |
Decreases the output volume of the DAC.
References aic23b_get_headphone_volume(), AIC23B_LEFT_CHANNEL, AIC23B_MUTED, AIC23B_RIGHT_CHANNEL, aic23b_set_headphone_volume(), and volume.
void aic23b_dac_flush | ( | void | ) |
Flushes the sample buffer being output to the DAC.
uint8_t aic23b_dac_get_average_headphone_volume | ( | void | ) |
Gets the average headphone volume.
References AIC23B_HP_VOL_MAX, AIC23B_HP_VOL_MIN, AIC23B_HP_VOL_OFFSET, AIC23B_LCHVC, AIC23B_RCHVC, aic23b_read_reg(), aic23b_lchvc_t::data, aic23b_rchvc_t::data, aic23b_lchvc_t::lhv, aic23b_rchvc_t::rhv, and volume.
void aic23b_dac_increase_volume | ( | void | ) |
Increases the output volume of the DAC.
References aic23b_get_headphone_volume(), AIC23B_HP_VOL_MIN, AIC23B_LEFT_CHANNEL, AIC23B_RIGHT_CHANNEL, aic23b_set_headphone_volume(), and volume.
bool aic23b_dac_is_headphone_volume_boosted | ( | void | ) |
Returns the state of the boost mode of the DAC.
bool aic23b_dac_is_headphone_volume_muted | ( | void | ) |
Returns the state of the mute mode of the DAC.
void aic23b_dac_mute | ( | bool | mute | ) |
Mute audio if mute is set to true.
References aic23b_output_params, AIC23B_SSC_TX_PDCA_CHANNEL, pdca_disable_interrupt_reload_counter_zero(), pdca_enable_interrupt_reload_counter_zero(), pdca_get_transfer_status(), and PDCA_TRANSFER_COMPLETE.
bool aic23b_dac_output | ( | void * | sample_buffer, |
size_t | sample_length | ||
) |
Outputs a sample buffer to the DAC.
References aic23b_output_params, AIC23B_SSC_TX_FRAME_SYNC_PIN, AIC23B_SSC_TX_PDCA_CHANNEL, AUDIO_DAC_OUT_OF_SAMPLE_CB, AUDIO_DAC_RELOAD_CB, Disable_global_interrupt, Enable_global_interrupt, gpio_get_pin_value(), Is_global_interrupt_enabled, pdca_enable_interrupt_reload_counter_zero(), pdca_enable_interrupt_transfer_complete(), pdca_get_reload_size(), pdca_get_transfer_status(), pdca_reload_channel(), PDCA_TRANSFER_COMPLETE, PDCA_TRANSFER_COUNTER_RELOAD_IS_ZERO, and sample_buffer.
void aic23b_dac_set_average_headphone_volume | ( | uint8_t | volume | ) |
Sets the average headphone volume.
References AIC23B_LEFT_CHANNEL, AIC23B_RIGHT_CHANNEL, and aic23b_set_headphone_volume().
void aic23b_dac_setup | ( | uint32_t | sample_rate_hz, |
uint8_t | num_channels, | ||
uint8_t | bits_per_sample, | ||
bool | swap_channels, | ||
void(*)(uint32_t arg) | callback, | ||
uint32_t | callback_opt, | ||
uint32_t | pba_hz | ||
) |
Sets the DAC up with new settings.
void aic23b_dac_start | ( | uint32_t | sample_rate_hz, |
uint8_t | num_channels, | ||
uint8_t | bits_per_sample, | ||
bool | swap_channels, | ||
void(*)(uint32_t arg) | callback, | ||
uint32_t | callback_opt, | ||
uint32_t | pba_hz | ||
) |
Starts the DAC.
void aic23b_dac_stop | ( | void | ) |
Stops the DAC.
aic23b_aapc_t aic23b_get_analog_audio_path | ( | void | ) |
Gets the analog audio path.
References AIC23B_AAPC, aic23b_read_reg(), and aic23b_aapc_t::data.
aic23b_dapc_t aic23b_get_digital_audio_path | ( | void | ) |
Gets the digital audio path.
References AIC23B_DAPC, aic23b_read_reg(), and aic23b_dapc_t::data.
int8_t aic23b_get_headphone_volume | ( | uint8_t | ch | ) |
Gets the ch channel headphone volume.
References AIC23B_HP_VOL_MIN, AIC23B_HP_VOL_OFFSET, AIC23B_LCHVC, AIC23B_LEFT_CHANNEL, AIC23B_MUTED, AIC23B_RCHVC, aic23b_read_reg(), AIC23B_RIGHT_CHANNEL, aic23b_lchvc_t::data, aic23b_rchvc_t::data, aic23b_lchvc_t::lhv, and aic23b_rchvc_t::rhv.
Referenced by aic23b_dac_decrease_volume(), and aic23b_dac_increase_volume().
int8_t aic23b_get_line_in_volume | ( | uint8_t | ch | ) |
Gets the ch line input channel volume.
References AIC23B_LEFT_CHANNEL, AIC23B_LIN_VOL_OFFSET, AIC23B_LLICVC, AIC23B_MUTED, aic23b_read_reg(), AIC23B_RIGHT_CHANNEL, AIC23B_RLICVC, aic23b_llicvc_t::data, aic23b_rlicvc_t::data, aic23b_llicvc_t::lim, aic23b_llicvc_t::liv, aic23b_rlicvc_t::rim, and aic23b_rlicvc_t::riv.
aic23b_pdc_t aic23b_get_power_down_state | ( | void | ) |
Gets the power down state.
References AIC23B_PDC, aic23b_read_reg(), and aic23b_pdc_t::data.
bool aic23b_is_dig_audio_activated | ( | void | ) |
Tells whether the digital audio interface is activated.
References aic23b_dia_t::act, AIC23B_DIA, aic23b_read_reg(), and aic23b_dia_t::data.
uint16_t aic23b_read_reg | ( | uint8_t | reg | ) |
Reads the reg register.
References AIC23B_REG_COUNT, and aic23b_ctrl_t::data.
Referenced by aic23b_activate_dig_audio(), aic23b_dac_get_average_headphone_volume(), aic23b_get_analog_audio_path(), aic23b_get_digital_audio_path(), aic23b_get_headphone_volume(), aic23b_get_line_in_volume(), aic23b_get_power_down_state(), aic23b_is_dig_audio_activated(), aic23b_reset(), aic23b_set_headphone_volume(), and aic23b_set_line_in_volume().
void aic23b_reset | ( | void | ) |
Resets the CODEC.
References AIC23B_DEFAULT, AIC23B_OFFSET, aic23b_read_reg(), AIC23B_RR, aic23b_write_reg(), aic23b_rr_t::data, and aic23b_rr_t::res.
Referenced by aic23b_codec_stop().
void aic23b_set_analog_audio_path | ( | aic23b_aapc_t | aapc | ) |
Sets the analog audio path to aapc.
References AIC23B_AAPC, aic23b_write_reg(), and aic23b_aapc_t::data.
Referenced by aic23b_codec_start().
void aic23b_set_digital_audio_path | ( | aic23b_dapc_t | dapc | ) |
Sets the digital audio path to dapc.
References AIC23B_DAPC, aic23b_write_reg(), and aic23b_dapc_t::data.
Referenced by aic23b_codec_start().
void aic23b_set_headphone_volume | ( | uint8_t | ch_mask, |
int8_t | vol, | ||
bool | z_cross | ||
) |
Sets the ch_mask channels headphone volume to vol, with zero-cross detect if z_cross is true
.
References AIC23B_HP_VOL_MAX, AIC23B_HP_VOL_MIN, AIC23B_HP_VOL_OFFSET, AIC23B_LCHVC, AIC23B_LEFT_CHANNEL, AIC23B_RCHVC, aic23b_read_reg(), AIC23B_RIGHT_CHANNEL, aic23b_write_reg(), aic23b_lchvc_t::data, aic23b_rchvc_t::data, aic23b_lchvc_t::lhv, aic23b_lchvc_t::lrs, aic23b_lchvc_t::lzc, min, aic23b_rchvc_t::rhv, aic23b_rchvc_t::rls, and aic23b_rchvc_t::rzc.
Referenced by aic23b_codec_start(), aic23b_dac_decrease_volume(), aic23b_dac_increase_volume(), and aic23b_dac_set_average_headphone_volume().
void aic23b_set_line_in_volume | ( | uint8_t | ch_mask, |
int8_t | vol | ||
) |
Sets the ch_mask line input channels volume to vol.
References AIC23B_LEFT_CHANNEL, AIC23B_LIN_VOL_MAX, AIC23B_LIN_VOL_MIN, AIC23B_LIN_VOL_OFFSET, AIC23B_LLICVC, aic23b_read_reg(), AIC23B_RIGHT_CHANNEL, AIC23B_RLICVC, aic23b_write_reg(), aic23b_llicvc_t::data, aic23b_rlicvc_t::data, aic23b_llicvc_t::lim, aic23b_llicvc_t::liv, aic23b_llicvc_t::lrs, min, aic23b_rlicvc_t::rim, aic23b_rlicvc_t::riv, and aic23b_rlicvc_t::rls.
void aic23b_set_power_down_state | ( | aic23b_pdc_t | pdc | ) |
Sets the power down state to pdc.
References AIC23B_PDC, aic23b_write_reg(), and aic23b_pdc_t::data.
Referenced by aic23b_codec_start(), and aic23b_codec_stop().
void aic23b_write_reg | ( | uint8_t | reg, |
uint16_t | val | ||
) |
Writes val to the reg register.
References AIC23B_DEFAULT, AIC23B_REG_COUNT, AIC23B_RR, aic23b_write_control_word(), and aic23b_ctrl_t::data.
Referenced by aic23b_activate_dig_audio(), aic23b_codec_setup(), aic23b_codec_start(), aic23b_configure_freq(), aic23b_reset(), aic23b_set_analog_audio_path(), aic23b_set_digital_audio_path(), aic23b_set_headphone_volume(), aic23b_set_line_in_volume(), and aic23b_set_power_down_state().