Audio: refine kcontrol for s1a [1/1]
PD#SWPL-131125
Problem:
now the kctl for volume adjust is
"TDMOUT_B Software Gain";
however s1a use tdma for same source
of cvbs and hdmi_tx, not tdmb.
Solution:
refine it for s1a chip.
Verify:
yocto zapper bg201A.
Change-Id: Iba0f1f6a628f44e770e4a0d8c796857ec9f97c09
Signed-off-by: wei.wang1 <wei.wang1@amlogic.com>
diff --git a/src/AML_Audio_Setting.cpp b/src/AML_Audio_Setting.cpp
index a2c2294..8d6ed79 100644
--- a/src/AML_Audio_Setting.cpp
+++ b/src/AML_Audio_Setting.cpp
@@ -42,6 +42,9 @@
#define TLV_HEADER_SIZE (2 * sizeof(unsigned int))
#define TDMB_GAIN "TDMOUT_B Software Gain"
+#define TDMA_GAIN "TDMOUT_A Software Gain"
+#define AML_CHIP_ID "AML chip id"
+#define AML_CHIP_ID_S1A 69
#define HDMI_OUT_MUTE "Audio hdmi-out mute"
#define DAC_DIGITAL_VOLUME "DAC Digital Playback Volume"
#define DAC_DIGITAl_DEFAULT_VOLUME (251)
@@ -79,6 +82,7 @@
static pthread_mutex_t g_volume_lock = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t g_mute_lock = PTHREAD_MUTEX_INITIALIZER;
+static int chip_id = 0;
static void _mixer_close(struct mixer *mixer)
{
@@ -727,8 +731,14 @@
}
pthread_mutex_lock(&g_volume_lock);
- ret = aml_audio_mixer_int(TDMB_GAIN, value, true);
- ALOGD("[%s:%d] volume: %d, ret: %d", __func__, __LINE__, value, ret);
+ chip_id = aml_audio_mixer_int(AML_CHIP_ID, 0, false);
+ /*s1a use TDM-A as cvbs/hdmi_tx samesource*/
+ if (AML_CHIP_ID_S1A == chip_id)
+ ret = aml_audio_mixer_int(TDMA_GAIN, value, true);
+ else
+ ret = aml_audio_mixer_int(TDMB_GAIN, value, true);
+
+ ALOGD("[%s:%d] chip_id: %d, volume: %d, ret: %d", __func__, __LINE__, chip_id, value, ret);
pthread_mutex_unlock(&g_volume_lock);
return ret;
@@ -738,8 +748,11 @@
{
pthread_mutex_lock(&g_volume_lock);
int ret = 0;
- ret = aml_audio_mixer_int(TDMB_GAIN, 0, false);
- ALOGD("[%s:%d] volume: %d", __func__, __LINE__, ret);
+ if (AML_CHIP_ID_S1A == chip_id)
+ ret = aml_audio_mixer_int(TDMA_GAIN, 0, false);
+ else
+ ret = aml_audio_mixer_int(TDMB_GAIN, 0, false);
+ ALOGD("[%s:%d] chip_id: %d, volume: %d", __func__, __LINE__, chip_id, ret);
pthread_mutex_unlock(&g_volume_lock);
return ret;