summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/audio/wm8978.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/firmware/drivers/audio/wm8978.c b/firmware/drivers/audio/wm8978.c
index 0730ff5118..adc46c316f 100644
--- a/firmware/drivers/audio/wm8978.c
+++ b/firmware/drivers/audio/wm8978.c
@@ -499,7 +499,7 @@ void audiohw_enable_depth_3d(bool enable)
499 audiohw_set_depth_3d(wmc_vol.enh_3d); 499 audiohw_set_depth_3d(wmc_vol.enh_3d);
500} 500}
501 501
502#ifdef HAVE_RECORDING 502#if defined(HAVE_RECORDING) || defined(SAMSUNG_YPR1)
503void audiohw_set_recsrc(int source, bool recording) 503void audiohw_set_recsrc(int source, bool recording)
504{ 504{
505 switch (source) 505 switch (source)
@@ -561,6 +561,23 @@ void audiohw_set_recsrc(int source, bool recording)
561 /* Enable bypass to L/R mixers */ 561 /* Enable bypass to L/R mixers */
562 wmc_set(WMC_LEFT_MIXER_CTRL, WMC_BYPL2LMIX); 562 wmc_set(WMC_LEFT_MIXER_CTRL, WMC_BYPL2LMIX);
563 wmc_set(WMC_RIGHT_MIXER_CTRL, WMC_BYPR2RMIX); 563 wmc_set(WMC_RIGHT_MIXER_CTRL, WMC_BYPR2RMIX);
564#ifdef SAMSUNG_YPR1
565 /* On Samsung YP-R1 we have to do some extra steps to select the AUX
566 * analog input source i.e. where the audio lines of the FM tuner are.
567 */
568 wmc_set(WMC_LEFT_MIXER_CTRL, WMC_AUXL2LMIX);
569 wmc_set(WMC_RIGHT_MIXER_CTRL, WMC_AUXR2RMIX);
570 /* Set L/R AUX input gain to 0dB */
571 wmc_write_masked(WMC_LEFT_MIXER_CTRL, 0x05 << WMC_AUXLMIXVOL_POS,
572 WMC_AUXLMIXVOL);
573 wmc_write_masked(WMC_RIGHT_MIXER_CTRL, 0x05 << WMC_AUXRMIXVOL_POS,
574 WMC_AUXRMIXVOL);
575 wmc_set(WMC_LEFT_MIXER_CTRL, WMC_DACL2LMIX);
576 wmc_set(WMC_RIGHT_MIXER_CTRL, WMC_DACR2RMIX);
577 wmc_set(WMC_POWER_MANAGEMENT1, WMC_OUT3MIXEN);
578 wmc_set(WMC_POWER_MANAGEMENT3, WMC_RMIXEN);
579 wmc_set(WMC_POWER_MANAGEMENT3, WMC_LMIXEN);
580#endif
564 } 581 }
565 break; 582 break;
566 } 583 }