Program Listing for File dm_fx_codec.h¶
↰ Return to documentation for file (src/dm_fx_codec.h)
// Copyright (c) 2020 Run Jump Labs LLC. All right reserved.
// This code is licensed under MIT license (see license.txt for details)
#ifndef DOXYGEN_SHOULD_SKIP_THIS
#ifndef DM_FX_CODEC_H
#define DM_FX_CODEC_H
/************************************************************************
*
* ADAU1761 support
*
***********************************************************************/
#define ADAU1761_REG_CLOCK_CONTROL (0x4000) /* Clock control */
#define ADAU1761_REG_PLL_CONTROL_0 (0x4002) /* PLL control 0 */
#define ADAU1761_REG_PLL_CONTROL_1 (0x4003) /* PLL control 1 */
#define ADAU1761_REG_PLL_CONTROL_2 (0x4004) /* PLL control 2 */
#define ADAU1761_REG_PLL_CONTROL_3 (0x4005) /* PLL control 3 */
#define ADAU1761_REG_PLL_CONTROL_4 (0x4006) /* PLL control 4 */
#define ADAU1761_REG_PLL_CONTROL_5 (0x4007) /* PLL control 5 */
#define ADAU1761_REG_DIG_MIC_JACK_DETECT (0x4008) /* Dig mic/jack detect */
#define ADAU1761_REG_REC_POWER_MGMT (0x4009) /* Rec power mgmt */
#define ADAU1761_REG_REC_MIXER_LEFT_0 (0x400A) /* Rec Mixer Left 0 */
#define ADAU1761_REG_REC_MIXER_LEFT_1 (0x400B) /* Rec Mixer Left 1 */
#define ADAU1761_REG_REC_MIXER_RIGHT_0 (0x400C) /* Rec Mixer Right 0 */
#define ADAU1761_REG_REC_MIXER_RIGHT_1 (0x400D) /* Rec Mixer Right 1 */
#define ADAU1761_REG_LEFT_DIFF_INPUT_VOL (0x400E) /* Left diff input vol */
#define ADAU1761_REG_RIGHT_DIFF_INPUT_VOL (0x400F) /* Right diff input vol */
#define ADAU1761_REG_RECORD_MIC_BIAS (0x4010) /* Record mic bias */
#define ADAU1761_REG_ALC_0 (0x4011) /* ALC 0 */
#define ADAU1761_REG_ALC_1 (0x4012) /* ALC 1 */
#define ADAU1761_REG_ALC_2 (0x4013) /* ALC 2 */
#define ADAU1761_REG_ALC_3 (0x4014) /* ALC 3 */
#define ADAU1761_REG_SERIAL_PORT_0 (0x4015) /* Serial Port 0 */
#define ADAU1761_REG_SERIAL_PORT_1 (0x4016) /* Serial Port 1 */
#define ADAU1761_REG_CONVERTER_0 (0x4017) /* Converter 0 */
#define ADAU1761_REG_CONVERTER_1 (0x4018) /* Converter 1 */
#define ADAU1761_REG_ADC_CONTROL (0x4019) /* ADC control */
#define ADAU1761_REG_LEFT_DIGITAL_VOL (0x401A) /* Left digital vol */
#define ADAU1761_REG_RIGHT_DIGITAL_VOL (0x401B) /* Right digital vol */
#define ADAU1761_REG_PLAY_MIXER_LEFT_0 (0x401C) /* Play Mixer Left 0 */
#define ADAU1761_REG_PLAY_MIXER_LEFT_1 (0x401D) /* Play Mixer Left 1 */
#define ADAU1761_REG_PLAY_MIXER_RIGHT_0 (0x401E) /* Play Mixer Right 0 */
#define ADAU1761_REG_PLAY_MIXER_RIGHT_1 (0x401F) /* Play Mixer Right 1 */
#define ADAU1761_REG_PLAY_L_R_MIXER_LEFT (0x4020) /* Play L/R mixer left */
#define ADAU1761_REG_PLAY_L_R_MIXER_RIGHT (0x4021) /* Play L/R mixer right */
#define ADAU1761_REG_PLAY_L_R_MIXER_MONO (0x4022) /* Play L/R mixer mono */
#define ADAU1761_REG_PLAY_HP_LEFT_VOL (0x4023) /* Play HP left vol */
#define ADAU1761_REG_PLAY_HP_RIGHT_VOL (0x4024) /* Play HP right vol */
#define ADAU1761_REG_LINE_OUTPUT_LEFT_VOL (0x4025) /* Line output left vol */
#define ADAU1761_REG_LINE_OUTPUT_RIGHT_VOL (0x4026) /* Line output right vol */
#define ADAU1761_REG_PLAY_MONO_OUTPUT (0x4027) /* Play mono output */
#define ADAU1761_REG_POP_CLICK_SUPPRESS (0x4028) /* Pop/click suppress */
#define ADAU1761_REG_PLAY_POWER_MGMT (0x4029) /* Play power mgmt */
#define ADAU1761_REG_DAC_CONTROL_0 (0x402A) /* DAC Control 0 */
#define ADAU1761_REG_DAC_CONTROL_1 (0x402B) /* DAC Control 1 */
#define ADAU1761_REG_DAC_CONTROL_2 (0x402C) /* DAC Control 2 */
#define ADAU1761_REG_SERIAL_PORT_PAD (0x402D) /* Serial port pad */
#define ADAU1761_REG_CONTROL_PORT_PAD_0 (0x402F) /* Control Port Pad 0 */
#define ADAU1761_REG_CONTROL_PORT_PAD_1 (0x4030) /* Control Port Pad 1 */
#define ADAU1761_REG_JACK_DETECT_PIN (0x4031) /* Jack detect pin */
#define ADAU1761_REG_DEJITTER_CONTROL (0x4036) /* Dejitter control */
#define ADAU1761_REG_CRC_3 (0x40C0) /* CRC_3 */
#define ADAU1761_REG_CRC_2 (0x40C1) /* CRC_2 */
#define ADAU1761_REG_CRC_1 (0x40C2) /* CRC_1 */
#define ADAU1761_REG_CRC_0 (0x40C3) /* CRC_0 */
#define ADAU1761_REG_CRC_ENABLE (0x40C4) /* CRC enable */
#define ADAU1761_REG_GPIO0_PIN_CONTROL (0x40C6) /* GPIO0 pin control */
#define ADAU1761_REG_GPIO1_PIN_CONTROL (0x40C7) /* GPIO1 pin control */
#define ADAU1761_REG_GPIO2_PIN_CONTROL (0x40C8) /* GPIO2 pin control */
#define ADAU1761_REG_GPIO3_PIN_CONTROL (0x40C9) /* GPIO3 pin control */
#define ADAU1761_REG_WATCHDOG_ENABLE (0x40D0) /* Watchdog enable */
#define ADAU1761_REG_WATCHDOG_VALUE_2 (0x40D1) /* Watchdog value 2 */
#define ADAU1761_REG_WATCHDOG_VALUE_1 (0x40D2) /* Watchdog value 1 */
#define ADAU1761_REG_WATCHDOG_VALUE_0 (0x40D3) /* Watchdog value 0 */
#define ADAU1761_REG_WATCHDOG_ERROR (0x40D4) /* Watchdog error */
#define ADAU1761_REG_DSP_SAMPLING_RATE_SETTING (0x40EB) /* DSP sampling rate setting */
#define ADAU1761_REG_SERIAL_INPUT_ROUTE_CTRL (0x40F2) /* Serial input route ctrl */
#define ADAU1761_REG_SERIAL_OUTPUT_ROUTE_CTRL (0x40F3) /* Serial output route ctrl */
#define ADAU1761_REG_SERIAL_DATA_PIN_CONFIG (0x40F4) /* Serial data pin config */
#define ADAU1761_REG_DSP_ENABLE (0x40F5) /* DSP enable */
#define ADAU1761_REG_DSP_RUN (0x40F6) /* DSP run */
#define ADAU1761_REG_DSP_SLEW_MODES (0x40F7) /* DSP slew modes */
#define ADAU1761_REG_SERIAL_PORT_SAMPLING_RATE (0x40F8) /* Serial port sampling rate */
#define ADAU1761_REG_CLOCK_ENABLE_0 (0x40F9) /* Clock Enable 0 */
#define ADAU1761_REG_CLOCK_ENABLE_1 (0x40FA) /* Clock Enable 1 */
void adau1761_initialize(void);
void adau1761_write_register(uint16_t addr, uint8_t val);
/************************************************************************
*
* WM8731 support
*
***********************************************************************/
#define WM8731_R0_LEFT_LINE_CTRL (0x00)
#define WM8731_R1_RIGHT_LINE_CTRL (0x02)
#define WM8731_R2_LEFT_HP_CTRL (0x04)
#define WM8731_R3_RIGHT_HP_CTRL (0x06)
#define WM8731_R4_ANALOG_PATH_CTRL (0x08)
#define WM8731_R5_DIGITAL_PATH_CTRL (0x0A)
#define WM8731_R6_PWR_DOWN_CTRL (0x0C)
#define WM8731_R7_DIGITAL_IFACE_CTRL (0x0E)
#define WM8731_R8_SAMPLING_CTRL (0x10)
#define WM8731_R9_ACTIVE_CTRL (0x12)
#define WM8731_RF_RESET_CTRL (0x1E)
void wm8731_write_register(uint8_t addr, uint8_t val);
void wm8731_initialize(void);
#endif // DM_FX_CODEC_H
#endif // DOXYGEN_SHOULD_SKIP_THIS