audio: zapper 4k volume control fails [1/1]
PD#OTT-64556
Problem:
Setting kctrl does not match
Solution:
Set the correct kctrl
Verify:
zapper 4k
Change-Id: I9f7a7506b846d18e5934d3326920554c347e390d
Signed-off-by: haiyang.ren <haiyang.ren@amlogic.com>
diff --git a/src/AML_Audio_Setting.cpp b/src/AML_Audio_Setting.cpp
index 2f0221e..3b846b7 100644
--- a/src/AML_Audio_Setting.cpp
+++ b/src/AML_Audio_Setting.cpp
@@ -37,28 +37,32 @@
#ifndef SNDRV_CTL_ELEM_ID_NAME_MAXLEN
#define SNDRV_CTL_ELEM_ID_NAME_MAXLEN 44
#endif
-#define DEFAULT_AML_SOUND_CARD 0
+#define DEFAULT_AML_SOUND_CARD 0
/* TLV header size*/
-#define TLV_HEADER_SIZE (2 * sizeof(unsigned int))
+#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 DIGITAL_MODE "Audio Digital Mode"
-#define DRC_CONTROL "Audio DRC Control"
-#define HDMI_CON "Audio Output Select"
-#define SPDIF_FORMAT "Audio spdif format"
+#define TDMC_GAIN "TDMOUT_C Software Gain"
+#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 AML_CHIP_ID_S4D 58
+
+#define HDMI_OUT_MUTE "Audio hdmi-out mute"
+#define DAC_DIGITAL_VOLUME "DAC Digital Playback Volume"
+#define DIGITAL_MODE "Audio Digital Mode"
+#define DRC_CONTROL "Audio DRC Control"
+#define HDMI_CON "Audio Output Select"
+#define SPDIF_FORMAT "Audio spdif format"
+
#define DAC_DIGITAl_DEFAULT_VOLUME (251)
-#define HEADPHONE_DAC_CHANNEL_NUM (2)
+#define HEADPHONE_DAC_CHANNEL_NUM (2)
-#define DRC_MODE_LINE 2
-#define DRC_MODE_RF 3
-#define DRC_MODE_BIT 0
-#define DRC_HIGH_CUT_BIT 3
-#define DRC_LOW_BST_BIT 16
+#define DRC_MODE_LINE 2
+#define DRC_MODE_RF 3
+#define DRC_MODE_BIT 0
+#define DRC_HIGH_CUT_BIT 3
+#define DRC_LOW_BST_BIT 16
extern "C" {
@@ -740,7 +744,7 @@
pthread_mutex_lock(&g_volume_lock);
chip_id = aml_audio_mixer_int(AML_CHIP_ID, 0, false);
/*s1a use this way to set hdmi status*/
- if (AML_CHIP_ID_S1A == chip_id) {
+ if (AML_CHIP_ID_S1A == chip_id || AML_CHIP_ID_S4D == chip_id) {
ret = aml_audio_mixer_int(HDMI_CON, isconnect, true);
ALOGD("[%s:%d] isconnect: %d, ret: %d", __func__, __LINE__, isconnect, ret);
}
@@ -759,11 +763,13 @@
pthread_mutex_lock(&g_volume_lock);
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)
+ if (AML_CHIP_ID_S1A == chip_id) {
ret = aml_audio_mixer_int(TDMA_GAIN, value, true);
- else
+ } else if (AML_CHIP_ID_S4D == chip_id) {
+ ret = aml_audio_mixer_int(TDMC_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);
@@ -775,10 +781,13 @@
pthread_mutex_lock(&g_volume_lock);
int ret = 0;
chip_id = aml_audio_mixer_int(AML_CHIP_ID, 0, false);
- if (AML_CHIP_ID_S1A == chip_id)
+ if (AML_CHIP_ID_S1A == chip_id) {
ret = aml_audio_mixer_int(TDMA_GAIN, 0, false);
- else
+ } else if (AML_CHIP_ID_S4D == chip_id) {
+ ret = aml_audio_mixer_int(TDMC_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);