CS7000: avoid spillover of FM audio when switching to HR_C6000 DAC output
This commit is contained in:
parent
6513d5593a
commit
f883d4e7e1
|
|
@ -122,9 +122,12 @@ void audio_connect(const enum AudioSource source, const enum AudioSink sink)
|
||||||
gpioDev_set(INT_MIC_SEL);
|
gpioDev_set(INT_MIC_SEL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PATH(SOURCE_MCU, SINK_SPK):
|
|
||||||
case PATH(SOURCE_RTX, SINK_SPK):
|
case PATH(SOURCE_RTX, SINK_SPK):
|
||||||
radio_enableAfOutput();
|
radio_enableAfOutput();
|
||||||
|
// Fallthrough
|
||||||
|
|
||||||
|
case PATH(SOURCE_MCU, SINK_SPK):
|
||||||
|
gpioDev_set(AF_MUTE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
@ -159,9 +162,12 @@ void audio_disconnect(const enum AudioSource source, const enum AudioSink sink)
|
||||||
gpioDev_clear(INT_MIC_SEL);
|
gpioDev_clear(INT_MIC_SEL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PATH(SOURCE_MCU, SINK_SPK):
|
|
||||||
case PATH(SOURCE_RTX, SINK_SPK):
|
case PATH(SOURCE_RTX, SINK_SPK):
|
||||||
radio_disableAfOutput();
|
radio_disableAfOutput();
|
||||||
|
// Fallthrough
|
||||||
|
|
||||||
|
case PATH(SOURCE_MCU, SINK_SPK):
|
||||||
|
gpioDev_clear(AF_MUTE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -201,6 +201,7 @@ void HR_Cx000< M >::fmMode()
|
||||||
writeReg(M::CONFIG, 0x36, 0x10); // Vocoder codec packet interface enabled
|
writeReg(M::CONFIG, 0x36, 0x10); // Vocoder codec packet interface enabled
|
||||||
writeReg(M::CONFIG, 0x36, 0x12); // Receiving and opening the voice channel in FM mode Codec switch, 1 means on, 0 means off.
|
writeReg(M::CONFIG, 0x36, 0x12); // Receiving and opening the voice channel in FM mode Codec switch, 1 means on, 0 means off.
|
||||||
writeReg(M::CONFIG, 0xE0, 0x8B);
|
writeReg(M::CONFIG, 0xE0, 0x8B);
|
||||||
|
writeReg(M::CONFIG, 0x26, 0xFE); // Undocumented register, disable FM audio output
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class M >
|
template< class M >
|
||||||
|
|
@ -221,5 +222,4 @@ void HR_Cx000< M >::stopAnalogTx()
|
||||||
writeReg(M::CONFIG, 0x60, 0x00); // Stop analog transmission
|
writeReg(M::CONFIG, 0x60, 0x00); // Stop analog transmission
|
||||||
writeReg(M::CONFIG, 0xE0, 0xC9); // Codec enabled, LineIn1, LineOut2, I2S slave mode
|
writeReg(M::CONFIG, 0xE0, 0xC9); // Codec enabled, LineIn1, LineOut2, I2S slave mode
|
||||||
writeReg(M::CONFIG, 0x34, 0x98); // FM bpf enabled, 25kHz bandwidth
|
writeReg(M::CONFIG, 0x34, 0x98); // FM bpf enabled, 25kHz bandwidth
|
||||||
writeReg(M::CONFIG, 0x26, 0xFD); // Undocumented register, enable FM receive
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -184,12 +184,15 @@ bool radio_checkRxDigitalSquelch()
|
||||||
|
|
||||||
void radio_enableAfOutput()
|
void radio_enableAfOutput()
|
||||||
{
|
{
|
||||||
gpioDev_set(AF_MUTE);
|
// Undocumented register, bits [1:0] seem to enable/disable FM audio RX.
|
||||||
|
// 0xFD enable FM receive.
|
||||||
|
C6000.writeCfgRegister(0x26, 0xFD);
|
||||||
}
|
}
|
||||||
|
|
||||||
void radio_disableAfOutput()
|
void radio_disableAfOutput()
|
||||||
{
|
{
|
||||||
gpioDev_clear(AF_MUTE);
|
// Undocumented register, disable FM receive
|
||||||
|
C6000.writeCfgRegister(0x26, 0xFE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void radio_enableRx()
|
void radio_enableRx()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue