The wm8904 driver provides a codec control interface. 
 | 
| enum   | {  
  kStatus_WM8904_Success = 0x0, 
 
  kStatus_WM8904_Fail = 0x1
 
 } | 
|   | WM8904 status return codes.  More...
  | 
|   | 
| enum   | {  
  kWM8904_LRCPolarityNormal = 0U, 
 
  kWM8904_LRCPolarityInverted = 1U << 4U
 
 } | 
|   | WM8904 lrc polarity.  More...
  | 
|   | 
| enum   | wm8904_module_t {  
  kWM8904_ModuleADC = 0, 
 
  kWM8904_ModuleDAC = 1, 
 
  kWM8904_ModulePGA = 2, 
 
  kWM8904_ModuleHeadphone = 3, 
 
  kWM8904_ModuleLineout = 4
 
 } | 
|   | wm8904 module value  More...
  | 
|   | 
| enum   |  | 
|   | wm8904 play channel  More...
  | 
|   | 
| enum   | wm8904_timeslot_t {  
  kWM8904_TimeSlot0 = 0U, 
 
  kWM8904_TimeSlot1 = 1U
 
 } | 
|   | WM8904 time slot.  More...
  | 
|   | 
| enum   | wm8904_protocol_t {  
  kWM8904_ProtocolI2S = 0x2, 
 
  kWM8904_ProtocolLeftJustified = 0x1, 
 
  kWM8904_ProtocolRightJustified = 0x0, 
 
  kWM8904_ProtocolPCMA = 0x3, 
 
  kWM8904_ProtocolPCMB = 0x3 | (1 << 4)
 
 } | 
|   | The audio data transfer protocol.  More...
  | 
|   | 
| enum   | wm8904_fs_ratio_t {  
  kWM8904_FsRatio64X = 0x0, 
 
  kWM8904_FsRatio128X = 0x1, 
 
  kWM8904_FsRatio192X = 0x2, 
 
  kWM8904_FsRatio256X = 0x3, 
 
  kWM8904_FsRatio384X = 0x4, 
 
  kWM8904_FsRatio512X = 0x5, 
 
  kWM8904_FsRatio768X = 0x6, 
 
  kWM8904_FsRatio1024X = 0x7, 
 
  kWM8904_FsRatio1408X = 0x8, 
 
  kWM8904_FsRatio1536X = 0x9
 
 } | 
|   | The SYSCLK / fs ratio.  More...
  | 
|   | 
| enum   | wm8904_sample_rate_t {  
  kWM8904_SampleRate8kHz = 0x0, 
 
  kWM8904_SampleRate12kHz = 0x1, 
 
  kWM8904_SampleRate16kHz = 0x2, 
 
  kWM8904_SampleRate24kHz = 0x3, 
 
  kWM8904_SampleRate32kHz = 0x4, 
 
  kWM8904_SampleRate48kHz = 0x5, 
 
  kWM8904_SampleRate11025Hz = 0x6, 
 
  kWM8904_SampleRate22050Hz = 0x7, 
 
  kWM8904_SampleRate44100Hz = 0x8
 
 } | 
|   | Sample rate.  More...
  | 
|   | 
| enum   | wm8904_bit_width_t {  
  kWM8904_BitWidth16 = 0x0, 
 
  kWM8904_BitWidth20 = 0x1, 
 
  kWM8904_BitWidth24 = 0x2, 
 
  kWM8904_BitWidth32 = 0x3
 
 } | 
|   | Bit width.  More...
  | 
|   | 
| enum   | {  
  kWM8904_RecordSourceDifferentialLine = 1U, 
 
  kWM8904_RecordSourceLineInput = 2U, 
 
  kWM8904_RecordSourceDifferentialMic = 4U, 
 
  kWM8904_RecordSourceDigitalMic = 8U
 
 } | 
|   | wm8904 record source  More...
  | 
|   | 
| enum   | {  
  kWM8904_RecordChannelLeft1 = 1U, 
 
  kWM8904_RecordChannelLeft2 = 2U, 
 
  kWM8904_RecordChannelLeft3 = 4U, 
 
  kWM8904_RecordChannelRight1 = 1U, 
 
  kWM8904_RecordChannelRight2 = 2U, 
 
  kWM8904_RecordChannelRight3 = 4U, 
 
  kWM8904_RecordChannelDifferentialPositive1 = 1U, 
 
  kWM8904_RecordChannelDifferentialPositive2 = 2U, 
 
  kWM8904_RecordChannelDifferentialPositive3 = 4U, 
 
  kWM8904_RecordChannelDifferentialNegative1 = 8U, 
 
  kWM8904_RecordChannelDifferentialNegative2 = 16U, 
 
  kWM8904_RecordChannelDifferentialNegative3 = 32U
 
 } | 
|   | wm8904 record channel  More...
  | 
|   | 
| enum   | {  
  kWM8904_PlaySourcePGA = 1U, 
 
  kWM8904_PlaySourceDAC = 4U
 
 } | 
|   | wm8904 play source  More...
  | 
|   | 
| enum   | wm8904_sys_clk_source_t {  
  kWM8904_SysClkSourceMCLK = 0U, 
 
  kWM8904_SysClkSourceFLL = 1U << 14
 
 } | 
|   | wm8904 system clock source  More...
  | 
|   | 
| enum   | wm8904_fll_clk_source_t { kWM8904_FLLClkSourceMCLK = 0U
 } | 
|   | wm8904 fll clock source  More...
  | 
|   | 
 | 
| status_t  | WM8904_WriteRegister (wm8904_handle_t *handle, uint8_t reg, uint16_t value) | 
|   | WM8904 write register.  More...
  | 
|   | 
| status_t  | WM8904_ReadRegister (wm8904_handle_t *handle, uint8_t reg, uint16_t *value) | 
|   | WM8904 write register.  More...
  | 
|   | 
| status_t  | WM8904_ModifyRegister (wm8904_handle_t *handle, uint8_t reg, uint16_t mask, uint16_t value) | 
|   | WM8904 modify register.  More...
  | 
|   | 
| status_t  | WM8904_Init (wm8904_handle_t *handle, wm8904_config_t *wm8904Config) | 
|   | Initializes WM8904.  More...
  | 
|   | 
| status_t  | WM8904_Deinit (wm8904_handle_t *handle) | 
|   | Deinitializes the WM8904 codec.  More...
  | 
|   | 
| void  | WM8904_GetDefaultConfig (wm8904_config_t *config) | 
|   | Fills the configuration structure with default values.  More...
  | 
|   | 
| status_t  | WM8904_SetMasterSlave (wm8904_handle_t *handle, bool master) | 
|   | Sets WM8904 as master or slave.  More...
  | 
|   | 
| status_t  | WM8904_SetMasterClock (wm8904_handle_t *handle, uint32_t sysclk, uint32_t sampleRate, uint32_t bitWidth) | 
|   | Sets WM8904 master clock configuration.  More...
  | 
|   | 
| status_t  | WM8904_SetFLLConfig (wm8904_handle_t *handle, wm8904_fll_config_t *config) | 
|   | WM8904 set PLL configuration This function will enable the GPIO1 FLL clock output function, so user can see the generated fll output clock frequency from WM8904 GPIO1.  More...
  | 
|   | 
| status_t  | WM8904_SetProtocol (wm8904_handle_t *handle, wm8904_protocol_t protocol) | 
|   | Sets the audio data transfer protocol.  More...
  | 
|   | 
| status_t  | WM8904_SetAudioFormat (wm8904_handle_t *handle, uint32_t sysclk, uint32_t sampleRate, uint32_t bitWidth) | 
|   | Sets the audio data format.  More...
  | 
|   | 
| status_t  | WM8904_CheckAudioFormat (wm8904_handle_t *handle, wm8904_audio_format_t *format, uint32_t mclkFreq) | 
|   | check and update the audio data format.  More...
  | 
|   | 
| status_t  | WM8904_SetVolume (wm8904_handle_t *handle, uint16_t volumeLeft, uint16_t volumeRight) | 
|   | Sets the module output volume.  More...
  | 
|   | 
| status_t  | WM8904_SetMute (wm8904_handle_t *handle, bool muteLeft, bool muteRight) | 
|   | Sets the headphone output mute.  More...
  | 
|   | 
| status_t  | WM8904_SelectLRCPolarity (wm8904_handle_t *handle, uint32_t polarity) | 
|   | Select LRC polarity.  More...
  | 
|   | 
| status_t  | WM8904_EnableDACTDMMode (wm8904_handle_t *handle, wm8904_timeslot_t timeSlot) | 
|   | Enable WM8904 DAC time slot.  More...
  | 
|   | 
| status_t  | WM8904_EnableADCTDMMode (wm8904_handle_t *handle, wm8904_timeslot_t timeSlot) | 
|   | Enable WM8904 ADC time slot.  More...
  | 
|   | 
| status_t  | WM8904_SetModulePower (wm8904_handle_t *handle, wm8904_module_t module, bool isEnabled) | 
|   | SET the module output power.  More...
  | 
|   | 
| status_t  | WM8904_SetDACVolume (wm8904_handle_t *handle, uint8_t volume) | 
|   | SET the DAC module volume.  More...
  | 
|   | 
| status_t  | WM8904_SetChannelVolume (wm8904_handle_t *handle, uint32_t channel, uint32_t volume) | 
|   | Sets the channel output volume.  More...
  | 
|   | 
| status_t  | WM8904_SetRecord (wm8904_handle_t *handle, uint32_t recordSource) | 
|   | SET the WM8904 record source.  More...
  | 
|   | 
| status_t  | WM8904_SetRecordChannel (wm8904_handle_t *handle, uint32_t leftRecordChannel, uint32_t rightRecordChannel) | 
|   | SET the WM8904 record source.  More...
  | 
|   | 
| status_t  | WM8904_SetPlay (wm8904_handle_t *handle, uint32_t playSource) | 
|   | SET the WM8904 play source.  More...
  | 
|   | 
| status_t  | WM8904_SetChannelMute (wm8904_handle_t *handle, uint32_t channel, bool isMute) | 
|   | Sets the channel mute.  More...
  | 
|   |