Compare commits
2 Commits
@@ -172,13 +172,25 @@ menu "Audio Board"
|
||||
endmenu
|
||||
|
||||
menu "DAC-Operation-Mode"
|
||||
depends on DAC_TAS5805M
|
||||
depends on DAC_TAS5805M
|
||||
|
||||
config DAC_BRIDGE_MODE
|
||||
bool "Enable Bridge-Mode"
|
||||
default false if DAC_TAS5805M
|
||||
help
|
||||
If enabled left channel will be played with more power. To use the right channel please change Word-Select-Setting in Logic-Level-Settings.
|
||||
choice DAC_BRIDGE_MODE
|
||||
prompt "Bridge-Mode selection"
|
||||
default DAC_BRIDGE_MODE_DISABLED
|
||||
|
||||
config DAC_BRIDGE_MODE_DISABLED
|
||||
bool "Stereo (bridge mode disabled)"
|
||||
|
||||
config DAC_BRIDGE_MODE_MONO
|
||||
bool "Mono mode (Left + Right / 2)"
|
||||
|
||||
config DAC_BRIDGE_MODE_LEFT
|
||||
bool "Output left input channel"
|
||||
|
||||
config DAC_BRIDGE_MODE_RIGHT
|
||||
bool "Output right input channel"
|
||||
|
||||
endchoice
|
||||
endmenu
|
||||
|
||||
menu "Merus MA120x0 interface Configuration"
|
||||
|
||||
@@ -42,6 +42,10 @@ esp_err_t pcm5102a_init(audio_hal_codec_config_t *codec_cfg) {
|
||||
|
||||
gpio_config_t io_conf;
|
||||
|
||||
if (CONFIG_PCM5102A_MUTE_PIN < 0) {
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
io_conf.intr_type = GPIO_INTR_DISABLE;
|
||||
io_conf.mode = GPIO_MODE_OUTPUT;
|
||||
io_conf.pin_bit_mask = (1ULL << CONFIG_PCM5102A_MUTE_PIN);
|
||||
@@ -65,12 +69,20 @@ esp_err_t pcm5102a_set_volume(int vol) { return ESP_OK; }
|
||||
esp_err_t pcm5102a_get_volume(int *value) { return ESP_OK; }
|
||||
|
||||
esp_err_t pcm5102a_set_mute(bool enable) {
|
||||
if (CONFIG_PCM5102A_MUTE_PIN < 0) {
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
return gpio_set_level(CONFIG_PCM5102A_MUTE_PIN, enable ? 0 : 1);
|
||||
}
|
||||
|
||||
esp_err_t pcm5102a_get_mute(bool *enabled) { return ESP_OK; }
|
||||
|
||||
esp_err_t pcm5102a_deinit(void) {
|
||||
if (CONFIG_PCM5102A_MUTE_PIN < 0) {
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
return gpio_reset_pin(CONFIG_PCM5102A_MUTE_PIN);
|
||||
}
|
||||
|
||||
|
||||
@@ -167,14 +167,82 @@ esp_err_t tas5805m_init() {
|
||||
}
|
||||
|
||||
// Check if Bridge-Mode is enabled
|
||||
#ifdef CONFIG_DAC_BRIDGE_MODE
|
||||
uint8_t value = 0;
|
||||
ret = tas5805m_read_byte(TAS5805M_DEVICE_CTRL_1_REGISTER, &value);
|
||||
if (ret != ESP_OK) return ret;
|
||||
value = 0b100;
|
||||
#if defined(CONFIG_DAC_BRIDGE_MODE_MONO) || defined(CONFIG_DAC_BRIDGE_MODE_LEFT) || defined(CONFIG_DAC_BRIDGE_MODE_RIGHT)
|
||||
ESP_LOGV(TAG, "Setting Bridge-Mode");
|
||||
|
||||
ret = tas5805m_write_byte(TAS5805M_DEVICE_CTRL_1_REGISTER, value);
|
||||
if (ret != ESP_OK) return ret;
|
||||
// enable bridge mode
|
||||
ret = tas5805m_write_byte(TAS5805M_DEVICE_CTRL_1_REGISTER, 0x04);
|
||||
|
||||
// Mixer config
|
||||
ret |= tas5805m_write_byte(0x0, 0x0);
|
||||
ret |= tas5805m_write_byte(0x7f, 0x8c);
|
||||
ret |= tas5805m_write_byte(0x0, 0x29);
|
||||
|
||||
#if defined(CONFIG_DAC_BRIDGE_MODE_MONO)
|
||||
ESP_LOGI(TAG, "Defining Bridge-Mode to Mono");
|
||||
// Left mixer input to left ouput (-6 dB)
|
||||
ret |= tas5805m_write_byte(0x18, 0x00);
|
||||
ret |= tas5805m_write_byte(0x19, 0x40);
|
||||
ret |= tas5805m_write_byte(0x1a, 0x26);
|
||||
ret |= tas5805m_write_byte(0x1b, 0xe7);
|
||||
|
||||
// Right mixer input to left ouput (-6 dB)
|
||||
ret |= tas5805m_write_byte(0x1c, 0x00);
|
||||
ret |= tas5805m_write_byte(0x1d, 0x40);
|
||||
ret |= tas5805m_write_byte(0x1e, 0x26);
|
||||
ret |= tas5805m_write_byte(0x1f, 0xe7);
|
||||
|
||||
#elif defined(CONFIG_DAC_BRIDGE_MODE_LEFT)
|
||||
ESP_LOGI(TAG, "Defining Bridge-Mode to Left");
|
||||
// Left mixer input to left ouput (0 dB)
|
||||
ret |= tas5805m_write_byte(0x18, 0x00);
|
||||
ret |= tas5805m_write_byte(0x19, 0x80);
|
||||
ret |= tas5805m_write_byte(0x1a, 0x00);
|
||||
ret |= tas5805m_write_byte(0x1b, 0x00);
|
||||
|
||||
// Right mixer input to left ouput (-110 dB)
|
||||
ret |= tas5805m_write_byte(0x1c, 0x00);
|
||||
ret |= tas5805m_write_byte(0x1d, 0x00);
|
||||
ret |= tas5805m_write_byte(0x1e, 0x00);
|
||||
ret |= tas5805m_write_byte(0x1f, 0x00);
|
||||
|
||||
#elif defined(CONFIG_DAC_BRIDGE_MODE_RIGHT)
|
||||
ESP_LOGI(TAG, "Defining Bridge-Mode to Right");
|
||||
// Left mixer input to left ouput (-110 dB)
|
||||
ret |= tas5805m_write_byte(0x18, 0x00);
|
||||
ret |= tas5805m_write_byte(0x19, 0x00);
|
||||
ret |= tas5805m_write_byte(0x1a, 0x00);
|
||||
ret |= tas5805m_write_byte(0x1b, 0x00);
|
||||
|
||||
// Right mixer input to left ouput (0 dB)
|
||||
ret |= tas5805m_write_byte(0x1c, 0x00);
|
||||
ret |= tas5805m_write_byte(0x1d, 0x80);
|
||||
ret |= tas5805m_write_byte(0x1e, 0x00);
|
||||
ret |= tas5805m_write_byte(0x1f, 0x00);
|
||||
|
||||
#endif
|
||||
|
||||
// Left mixer input to right ouput (-110 dB as the right output is not used)
|
||||
ret |= tas5805m_write_byte(0x20, 0x00);
|
||||
ret |= tas5805m_write_byte(0x21, 0x00);
|
||||
ret |= tas5805m_write_byte(0x22, 0x00);
|
||||
ret |= tas5805m_write_byte(0x23, 0x00);
|
||||
|
||||
// Right mixer input to right ouput (-110 dB as the right output is not used)
|
||||
ret |= tas5805m_write_byte(0x24, 0x00);
|
||||
ret |= tas5805m_write_byte(0x25, 0x00);
|
||||
ret |= tas5805m_write_byte(0x26, 0x00);
|
||||
ret |= tas5805m_write_byte(0x27, 0x00);
|
||||
|
||||
|
||||
// End config
|
||||
ret |= tas5805m_write_byte(0x0, 0x0);
|
||||
ret |= tas5805m_write_byte(0x7f, 0x0);
|
||||
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Setting Bridge-Mode failed");
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user