diff options
author | PixelBot AutoMerger <android-nexus-securitybot@system.gserviceaccount.com> | 2023-12-10 18:49:19 -0800 |
---|---|---|
committer | Ben McGee <benmcgee@google.com> | 2023-12-12 15:55:15 +0000 |
commit | 75705c7afa0385af6f5668dae5bb9e1bf8e0bcdc (patch) | |
tree | 793812a67d6714100ce4760f30f2eb68dc1648d4 | |
parent | aa08708c871bba33a5fa979c2c524c208e33c7ac (diff) | |
parent | c69225db7dde64287e2cdb8d17472cc65324f999 (diff) | |
download | aoc-75705c7afa0385af6f5668dae5bb9e1bf8e0bcdc.tar.gz |
Merge android13-gs-pixel-5.10-24Q1 into android14-gs-pixel-5.15-24Q1
Conflict files:
alsa/aoc_alsa.h
SBMerger: 571992243
Change-Id: Ie9d3c086b902757e1b57dab966cc99f1c4e4dd4b
Signed-off-by: benmcgee <benmcgee@google.com>
-rw-r--r-- | alsa/aoc_alsa.h | 1 | ||||
-rw-r--r-- | alsa/aoc_alsa_hw.c | 27 |
2 files changed, 28 insertions, 0 deletions
diff --git a/alsa/aoc_alsa.h b/alsa/aoc_alsa.h index e3c017c..24a21ed 100644 --- a/alsa/aoc_alsa.h +++ b/alsa/aoc_alsa.h @@ -546,6 +546,7 @@ int aoc_usb_init(void); void aoc_usb_exit(void); int aoc_dp_init(void); void aoc_dp_exit(void); +int aoc_audio_mic_mask_set(struct aoc_chip *chip, bool is_voice); int aoc_audio_us_record(struct aoc_chip *chip, bool enable); diff --git a/alsa/aoc_alsa_hw.c b/alsa/aoc_alsa_hw.c index 6a85b7c..ae3998b 100644 --- a/alsa/aoc_alsa_hw.c +++ b/alsa/aoc_alsa_hw.c @@ -423,6 +423,10 @@ int aoc_audio_capture_mic_prepare(struct aoc_chip *chip) goto exit; } + /* Update mask before start capture */ + if (mic_input_source == AP_INPUT_PROCESSOR_MIC_INPUT_INDEX) + aoc_audio_mic_mask_set(chip, false); + // CMD_AUDIO_INPUT_AP_INPUT_START_ID with mic_input_source pr_info("mic_input_source = %d\n", mic_input_source); @@ -3265,6 +3269,12 @@ static int aoc_telephony_mic_open(struct aoc_chip *chip, int mic) } mic_input_source = hw_id_to_phone_mic_source(mic); + + /* Update mask before start capture */ + if (mic_input_source == MODEM_MIC_INPUT_INDEX || + mic_input_source == MODEM_INCALL_INPUT_INDEX) + aoc_audio_mic_mask_set(chip, true); + pr_info("open telephony mic: %d - %d\n", mic_input_source, mic); if (mic_input_source != NULL_PATH) { err = aoc_audio_modem_mic_input(chip, START, mic_input_source); @@ -4021,3 +4031,20 @@ int aoc_audio_set_chre_src_aec_timeout(struct aoc_chip *chip, int timeout) return 0; } } + +/* Update PDM mic mask */ +int aoc_audio_mic_mask_set(struct aoc_chip *chip, bool is_voice) +{ + uint32_t value = UINT_MAX; + uint8_t *mask = (uint8_t *)(&value); + int key = is_voice, i; + const int cmd_id = CMD_AUDIO_INPUT_SET_PARAMETER_ID; + const int block = 139; /* ABLOCK_INPUT_PDM_MIC */ + const int component = ASP_ID_NONE; + const int total_lists = min(NUM_OF_BUILTIN_MIC, (int)sizeof(uint32_t)); + + for (i = 0; i < total_lists; i++) + mask[i] = chip->buildin_mic_id_list[i]; + + return aoc_audio_set_parameters(cmd_id, block, component, key, value, chip); +} |