audio: Remove HTC acoustic amplifier code

Change-Id: Id9ea8f1eb9403d171150fd5f15c7ec431c4a1504
diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index a8d3793..193fcf3 100644
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2017 Christopher N. Hesse <raymanfx@gmail.com>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -880,9 +881,7 @@
 
     /* Disable current sound devices */
     if (usecase->out_snd_device != SND_DEVICE_NONE) {
-        pthread_mutex_lock(&adev->tfa9895_lock);
         disable_snd_device(adev, usecase, usecase->out_snd_device, false);
-        pthread_mutex_unlock(&adev->tfa9895_lock);
     }
 
     if (usecase->in_snd_device != SND_DEVICE_NONE) {
@@ -906,10 +905,6 @@
     usecase->in_snd_device = in_snd_device;
     usecase->out_snd_device = out_snd_device;
 
-    if (out_snd_device != SND_DEVICE_NONE)
-        if (usecase->devices & (AUDIO_DEVICE_OUT_WIRED_HEADSET | AUDIO_DEVICE_OUT_WIRED_HEADPHONE))
-            if (adev->htc_acoustic_set_rt5506_amp != NULL)
-                adev->htc_acoustic_set_rt5506_amp(adev->mode, usecase->devices);
     return 0;
 }
 
@@ -2935,24 +2930,6 @@
     return -ENOSYS;
 }
 
-static void *tfa9895_config_thread(void *context)
-{
-    ALOGV("%s: enter", __func__);
-    pthread_detach(pthread_self());
-    struct audio_device *adev = (struct audio_device *)context;
-    pthread_mutex_lock(&adev->tfa9895_lock);
-    adev->tfa9895_init =
-        adev->htc_acoustic_set_amp_mode(adev->mode, AUDIO_DEVICE_OUT_SPEAKER, 0, 0, false);
-    if (!adev->tfa9895_init) {
-        ALOGE("set_amp_mode failed, need to re-config again");
-        adev->tfa9895_mode_change |= 0x1;
-    }
-    ALOGI("@@##tfa9895_config_thread Done!! tfa9895_mode_change=%d", adev->tfa9895_mode_change);
-    pthread_mutex_unlock(&adev->tfa9895_lock);
-    dummybuf_thread_close(adev);
-    return NULL;
-}
-
 static int fast_set_affinity(pid_t tid) {
     cpu_set_t cpu_set;
     int cpu_num;
@@ -3135,75 +3112,6 @@
                     out->echo_reference->write(out->echo_reference, &b);
                  }
 #endif
-                if (adev->tfa9895_mode_change == 0x1) {
-                    if (out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
-                        pthread_mutex_lock(&adev->tfa9895_lock);
-                        data = (unsigned char *)
-                                calloc(pcm_frames_to_bytes(pcm_device->pcm, out->config.period_size),
-                                        sizeof(unsigned char));
-                        if (data) {
-                            int i;
-
-                            // reopen pcm with stop_threshold = INT_MAX/2
-                            memcpy(&config, &pcm_device->pcm_profile->config,
-                                    sizeof(struct pcm_config));
-                            config.stop_threshold = INT_MAX/2;
-
-                            if (pcm_device->pcm)
-                                pcm_close(pcm_device->pcm);
-
-                            for (i = 0; i < RETRY_NUMBER; i++) {
-                                pcm_device->pcm = pcm_open(pcm_device->pcm_profile->card,
-                                        pcm_device->pcm_profile->id,
-                                        PCM_OUT | PCM_MONOTONIC, &config);
-                                if (pcm_device->pcm != NULL && pcm_is_ready(pcm_device->pcm))
-                                    break;
-                                else
-                                    usleep(10000);
-                            }
-                            if (i >= RETRY_NUMBER)
-                                ALOGE("%s: failed to reopen pcm device", __func__);
-
-                            if (pcm_device->pcm) {
-                                for (i = out->config.period_count; i > 0; i--)
-                                    pcm_write(pcm_device->pcm, (void *)data,
-                                           pcm_frames_to_bytes(pcm_device->pcm,
-                                           out->config.period_size));
-                                /* TODO: Hold on 100 ms and wait i2s signal ready
-                                     before giving dsp related i2c commands */
-                                usleep(100000);
-                                adev->tfa9895_mode_change &= ~0x1;
-                                ALOGV("@@##checking - 2: tfa9895_config_thread: "
-                                    "adev->tfa9895_mode_change=%d", adev->tfa9895_mode_change);
-                                adev->tfa9895_init =
-                                        adev->htc_acoustic_set_amp_mode(
-                                                adev->mode, AUDIO_DEVICE_OUT_SPEAKER, 0, 0, false);
-                            }
-                            free(data);
-
-                            // reopen pcm with normal stop_threshold
-                            if (pcm_device->pcm)
-                                pcm_close(pcm_device->pcm);
-
-                            for (i = 0; i < RETRY_NUMBER; i++) {
-                                pcm_device->pcm = pcm_open(pcm_device->pcm_profile->card,
-                                        pcm_device->pcm_profile->id,
-                                        PCM_OUT | PCM_MONOTONIC, &pcm_device->pcm_profile->config);
-                                if (pcm_device->pcm != NULL && pcm_is_ready(pcm_device->pcm))
-                                    break;
-                                else
-                                    usleep(10000);
-                            }
-                            if (i >= RETRY_NUMBER) {
-                                ALOGE("%s: failed to reopen pcm device, error return", __func__);
-                                pthread_mutex_unlock(&adev->tfa9895_lock);
-                                pthread_mutex_unlock(&out->lock);
-                                return -1;
-                            }
-                        }
-                    }
-                    pthread_mutex_unlock(&adev->tfa9895_lock);
-                }
                 ALOGVV("%s: writing buffer (%d bytes) to pcm device", __func__, bytes);
                 if (pcm_device->resampler && pcm_device->res_buffer)
                     pcm_device->status =
@@ -4141,8 +4049,6 @@
                 usecase = node_to_item(node, struct audio_usecase, adev_list_node);
                 if (usecase->type == PCM_PLAYBACK) {
                     select_devices(adev, usecase->id);
-                    if (adev->htc_acoustic_spk_reverse)
-                        adev->htc_acoustic_spk_reverse(adev->speaker_lr_swap);
                     break;
                 }
             }
@@ -4228,9 +4134,6 @@
     if (adev->mode != mode) {
         ALOGI("%s mode = %d", __func__, mode);
         adev->mode = mode;
-        pthread_mutex_lock(&adev->tfa9895_lock);
-        adev->tfa9895_mode_change |= 0x1;
-        pthread_mutex_unlock(&adev->tfa9895_lock);
     }
     pthread_mutex_unlock(&adev->lock);
     return 0;
@@ -4683,29 +4586,6 @@
         }
     }
 
-    if (access(HTC_ACOUSTIC_LIBRARY_PATH, R_OK) == 0) {
-        adev->htc_acoustic_lib = dlopen(HTC_ACOUSTIC_LIBRARY_PATH, RTLD_NOW);
-        if (adev->htc_acoustic_lib == NULL) {
-            ALOGE("%s: DLOPEN failed for %s", __func__, HTC_ACOUSTIC_LIBRARY_PATH);
-        } else {
-            ALOGV("%s: DLOPEN successful for %s", __func__, HTC_ACOUSTIC_LIBRARY_PATH);
-            adev->htc_acoustic_init_rt5506 =
-                        (int (*)())dlsym(adev->htc_acoustic_lib,
-                                                        "init_rt5506");
-            adev->htc_acoustic_set_rt5506_amp =
-                        (int (*)(int, int))dlsym(adev->htc_acoustic_lib,
-                                                        "set_rt5506_amp");
-            adev->htc_acoustic_set_amp_mode =
-                        (int (*)(int , int, int, int, bool))dlsym(adev->htc_acoustic_lib,
-                                                        "set_amp_mode");
-            adev->htc_acoustic_spk_reverse =
-                        (int (*)(bool))dlsym(adev->htc_acoustic_lib,
-                                                        "spk_reverse");
-            if (adev->htc_acoustic_spk_reverse)
-                adev->htc_acoustic_spk_reverse(adev->speaker_lr_swap);
-        }
-    }
-
     if (access(SOUND_TRIGGER_HAL_LIBRARY_PATH, R_OK) == 0) {
         adev->sound_trigger_lib = dlopen(SOUND_TRIGGER_HAL_LIBRARY_PATH, RTLD_NOW);
         if (adev->sound_trigger_lib == NULL) {
@@ -4736,9 +4616,6 @@
 
     *device = &adev->device.common;
 
-    if (adev->htc_acoustic_init_rt5506 != NULL)
-        adev->htc_acoustic_init_rt5506();
-
     if (audio_device_ref_count == 0) {
         /* For HS GPIO initial config */
         adev->dummybuf_thread_devices = AUDIO_DEVICE_OUT_WIRED_HEADPHONE;
@@ -4754,31 +4631,6 @@
             usleep(10000);
         }
         dummybuf_thread_close(adev);
-
-        /* For NXP DSP config */
-        if (adev->htc_acoustic_set_amp_mode) {
-            pthread_t th;
-            adev->dummybuf_thread_devices = AUDIO_DEVICE_OUT_SPEAKER;
-            dummybuf_thread_open(adev);
-            pthread_mutex_lock(&adev->dummybuf_thread_lock);
-            retry_count = RETRY_NUMBER;
-            while (retry_count-- > 0) {
-                if (adev->dummybuf_thread_active) {
-                    break;
-                }
-                pthread_mutex_unlock(&adev->dummybuf_thread_lock);
-                usleep(10000);
-                pthread_mutex_lock(&adev->dummybuf_thread_lock);
-            }
-            if (adev->dummybuf_thread_active) {
-                usleep(10000); /* tfa9895 spk amp need more than 1ms i2s signal before giving dsp related i2c commands*/
-                if (pthread_create(&th, NULL, tfa9895_config_thread, (void* )adev) != 0) {
-                    ALOGE("@@##THREAD_FADE_IN_UPPER_SPEAKER thread create fail");
-                }
-            }
-            pthread_mutex_unlock(&adev->dummybuf_thread_lock);
-            /* Then, dummybuf_thread_close() is called by tfa9895_config_thread() */
-        }
     }
     audio_device_ref_count++;
 
diff --git a/audio/audio_hw.h b/audio/audio_hw.h
index 8b097e1..b08c8d6 100644
--- a/audio/audio_hw.h
+++ b/audio/audio_hw.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2013 The Android Open Source Project
+ * Copyright (C) 2017 Christopher N. Hesse <raymanfx@gmail.com>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -36,8 +37,6 @@
 #define OFFLOAD_FX_LIBRARY_PATH "/system/lib/soundfx/libnvvisualizer.so"
 #endif
 
-#define HTC_ACOUSTIC_LIBRARY_PATH "/vendor/lib/libhtcacoustic.so"
-
 #ifdef PREPROCESSING_ENABLED
 #include <audio_utils/echo_reference.h>
 #define MAX_PREPROCESSORS 3
@@ -419,21 +418,11 @@
     volatile int32_t        echo_reference_generation;
 #endif
 
-    void*                   htc_acoustic_lib;
-    int                     (*htc_acoustic_init_rt5506)();
-    int                     (*htc_acoustic_set_rt5506_amp)(int, int);
-    int                     (*htc_acoustic_set_amp_mode)(int, int, int, int, bool);
-    int                     (*htc_acoustic_spk_reverse)(bool);
-
     void*                   sound_trigger_lib;
     int                     (*sound_trigger_open_for_streaming)();
     size_t                  (*sound_trigger_read_samples)(int, void*, size_t);
     int                     (*sound_trigger_close_for_streaming)(int);
 
-    int                     tfa9895_init;
-    int                     tfa9895_mode_change;
-    pthread_mutex_t         tfa9895_lock;
-
     int                     dummybuf_thread_timeout;
     int                     dummybuf_thread_cancel;
     int                     dummybuf_thread_active;
@@ -446,7 +435,7 @@
 
 /*
  * NOTE: when multiple mutexes have to be acquired, always take the
- * lock_inputs, stream_in, stream_out, audio_device, then tfa9895 mutex.
+ * lock_inputs, stream_in, stream_out, then audio_device mutex.
  * stream_in mutex must always be before stream_out mutex
  * if both have to be taken (see get_echo_reference(), put_echo_reference()...)
  * dummybuf_thread mutex is not related to the other mutexes with respect to order.