diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index 193fcf3..31b1621 100644
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -50,9 +50,6 @@
 #include "sound/compress_params.h"
 
 #define MIXER_CTL_COMPRESS_PLAYBACK_VOLUME "Compress Playback Volume"
-#define MIXER_CTL_HEADPHONE_JACK_SWITCH "Headphone Jack Switch"
-#define MIXER_CTL_CODEC_VMIXER_CODEC_SWITCH "Codec VMixer Codec Switch"
-#define MIXER_CTL_SPK_VMIXER_SPK_SWITCH "SPK VMixer SPK Switch"
 
 /* TODO: the following PCM device profiles could be read from a config file */
 static struct pcm_device_profile pcm_device_playback = {
@@ -232,8 +229,6 @@
     STRING_TO_ENUM(AUDIO_CHANNEL_OUT_7POINT1),
 };
 
-static void dummybuf_thread_close(struct audio_device *adev);
-
 static bool is_supported_format(audio_format_t format)
 {
     if (format == AUDIO_FORMAT_MP3 ||
@@ -4332,169 +4327,6 @@
     return 0;
 }
 
-static void *dummybuf_thread(void *context)
-{
-    ALOGV("%s: enter", __func__);
-    pthread_detach(pthread_self());
-    struct audio_device *adev = (struct audio_device *)context;
-    struct pcm_config config;
-    struct mixer *mixer = NULL;
-    struct mixer_ctl *ctl;
-    unsigned char *data = NULL;
-    struct pcm *pcm = NULL;
-    struct pcm_device_profile *profile = NULL;
-    audio_devices_t dummybuf_thread_devices = adev->dummybuf_thread_devices;
-
-    pthread_mutex_lock(&adev->dummybuf_thread_lock);
-
-    memset(&config, 0, sizeof(struct pcm_config));
-
-    profile = &pcm_device_playback;
-
-    memcpy(&config, &profile->config, sizeof(struct pcm_config));
-    /* Use large value for stop_threshold so that automatic
-       trigger for stop is avoided, when this thread fails to write data */
-    config.stop_threshold = INT_MAX/2;
-    pcm = pcm_open(profile->card, profile->id,
-                   (PCM_OUT | PCM_MONOTONIC), &config);
-    if (pcm != NULL && !pcm_is_ready(pcm)) {
-        ALOGE("pcm_open: card=%d, id=%d is not ready", profile->card, profile->id);
-        pcm_close(pcm);
-        pcm = NULL;
-    } else {
-        ALOGV("pcm_open: card=%d, id=%d", profile->card, profile->id);
-    }
-
-    mixer = mixer_open(profile->card);
-    if (mixer) {
-        if (dummybuf_thread_devices == AUDIO_DEVICE_OUT_WIRED_HEADPHONE) {
-            ctl = mixer_get_ctl_by_name(mixer, MIXER_CTL_HEADPHONE_JACK_SWITCH);
-            if (ctl != NULL)
-                mixer_ctl_set_value(ctl, 0, 1);
-            else {
-                ALOGE("Invalid mixer control: name(%s): skip dummy thread", MIXER_CTL_HEADPHONE_JACK_SWITCH);
-                goto exit;
-            }
-
-            ctl = mixer_get_ctl_by_name(mixer, MIXER_CTL_CODEC_VMIXER_CODEC_SWITCH);
-            if (ctl != NULL)
-                mixer_ctl_set_value(ctl, 0, 1);
-            else {
-                ALOGE("Invalid mixer control: name(%s): skip dummy thread", MIXER_CTL_CODEC_VMIXER_CODEC_SWITCH);
-                goto exit;
-            }
-        } else {
-            ctl = mixer_get_ctl_by_name(mixer, MIXER_CTL_SPK_VMIXER_SPK_SWITCH);
-            if (ctl != NULL)
-                mixer_ctl_set_value(ctl, 0, 1);
-            else {
-                ALOGE("Invalid mixer control: name(%s): skip dummy thread", MIXER_CTL_SPK_VMIXER_SPK_SWITCH);
-                goto exit;
-            }
-        }
-    }
-
-    while (1) {
-        if (pcm) {
-            if (data == NULL)
-                data = (unsigned char *)calloc(DEEP_BUFFER_OUTPUT_PERIOD_SIZE * 8,
-                            sizeof(unsigned char));
-            if (data) {
-                pcm_write(pcm, (void *)data, DEEP_BUFFER_OUTPUT_PERIOD_SIZE * 8);
-                adev->dummybuf_thread_active = 1;
-            } else {
-                ALOGV("%s: cant open a buffer, retry to open it", __func__);
-            }
-        } else {
-            ALOGV("%s: cant open a output deep stream, retry to open it", __func__);
-            pcm = pcm_open(profile->card, profile->id,
-                   (PCM_OUT | PCM_MONOTONIC), &config);
-            if (pcm != NULL && !pcm_is_ready(pcm)) {
-                ALOGE("pcm_open: card=%d, id=%d is not ready", profile->card, profile->id);
-                pcm_close(pcm);
-                pcm = NULL;
-            } else {
-                ALOGV("pcm_open: card=%d, id=%d", profile->card, profile->id);
-            }
-        }
-
-        if (adev->dummybuf_thread_cancel || adev->dummybuf_thread_timeout-- <= 0) {
-            adev->dummybuf_thread_cancel = 0;
-            break;
-        }
-
-        pthread_mutex_unlock(&adev->dummybuf_thread_lock);
-        usleep(3000);
-        pthread_mutex_lock(&adev->dummybuf_thread_lock);
-    }
-
-exit:
-    adev->dummybuf_thread_active = 0;
-    if (mixer) {
-        if (dummybuf_thread_devices == AUDIO_DEVICE_OUT_WIRED_HEADPHONE) {
-            ctl = mixer_get_ctl_by_name(mixer, MIXER_CTL_HEADPHONE_JACK_SWITCH);
-            if (ctl != NULL)
-                mixer_ctl_set_value(ctl, 0, 0);
-            ctl = mixer_get_ctl_by_name(mixer, MIXER_CTL_CODEC_VMIXER_CODEC_SWITCH);
-            if (ctl != NULL)
-                mixer_ctl_set_value(ctl, 0, 0);
-        } else {
-            ctl = mixer_get_ctl_by_name(mixer, MIXER_CTL_SPK_VMIXER_SPK_SWITCH);
-            if (ctl != NULL)
-                mixer_ctl_set_value(ctl, 0, 0);
-        }
-        mixer_close(mixer);
-    }
-    if (pcm) {
-        pcm_close(pcm);
-        pcm = NULL;
-    }
-    pthread_mutex_unlock(&adev->dummybuf_thread_lock);
-
-    if (data)
-        free(data);
-
-    return NULL;
-}
-
-static void dummybuf_thread_open(struct audio_device *adev)
-{
-    adev->dummybuf_thread_timeout = 6000; /* in 18 sec */
-    adev->dummybuf_thread_cancel = 0;
-    adev->dummybuf_thread_active = 0;
-    pthread_mutex_init(&adev->dummybuf_thread_lock, (const pthread_mutexattr_t *) NULL);
-    if (!adev->dummybuf_thread)
-        pthread_create(&adev->dummybuf_thread, (const pthread_attr_t *) NULL, dummybuf_thread, adev);
-}
-
-static void dummybuf_thread_close(struct audio_device *adev)
-{
-    ALOGV("%s: enter", __func__);
-    int retry_cnt = 20;
-
-    if (adev->dummybuf_thread == 0)
-        return;
-
-    pthread_mutex_lock(&adev->dummybuf_thread_lock);
-    adev->dummybuf_thread_cancel = 1;
-    pthread_mutex_unlock(&adev->dummybuf_thread_lock);
-
-    while (retry_cnt > 0) {
-        pthread_mutex_lock(&adev->dummybuf_thread_lock);
-        if (adev->dummybuf_thread_active == 0) {
-            pthread_mutex_unlock(&adev->dummybuf_thread_lock);
-            break;
-        }
-        pthread_mutex_unlock(&adev->dummybuf_thread_lock);
-        retry_cnt--;
-        usleep(1000);
-    }
-
-    pthread_join(adev->dummybuf_thread, (void **) NULL);
-    pthread_mutex_destroy(&adev->dummybuf_thread_lock);
-    adev->dummybuf_thread = 0;
-}
-
 /* This returns true if the input parameter looks at all plausible as a low latency period size,
  * or false otherwise.  A return value of true doesn't mean the value is guaranteed to work,
  * just that it _might_ work.
@@ -4616,22 +4448,6 @@
 
     *device = &adev->device.common;
 
-    if (audio_device_ref_count == 0) {
-        /* For HS GPIO initial config */
-        adev->dummybuf_thread_devices = AUDIO_DEVICE_OUT_WIRED_HEADPHONE;
-        dummybuf_thread_open(adev);
-        retry_count = RETRY_NUMBER;
-        while (retry_count-- > 0) {
-            pthread_mutex_lock(&adev->dummybuf_thread_lock);
-            if (adev->dummybuf_thread_active != 0) {
-                pthread_mutex_unlock(&adev->dummybuf_thread_lock);
-                break;
-            }
-            pthread_mutex_unlock(&adev->dummybuf_thread_lock);
-            usleep(10000);
-        }
-        dummybuf_thread_close(adev);
-    }
     audio_device_ref_count++;
 
     char value[PROPERTY_VALUE_MAX];
diff --git a/audio/audio_hw.h b/audio/audio_hw.h
index b08c8d6..87b7a93 100644
--- a/audio/audio_hw.h
+++ b/audio/audio_hw.h
@@ -423,13 +423,6 @@
     size_t                  (*sound_trigger_read_samples)(int, void*, size_t);
     int                     (*sound_trigger_close_for_streaming)(int);
 
-    int                     dummybuf_thread_timeout;
-    int                     dummybuf_thread_cancel;
-    int                     dummybuf_thread_active;
-    audio_devices_t         dummybuf_thread_devices;
-    pthread_mutex_t         dummybuf_thread_lock;
-    pthread_t               dummybuf_thread;
-
     pthread_mutex_t         lock_inputs; /* see note below on mutex acquisition order */
 };
 
@@ -437,8 +430,6 @@
  * NOTE: when multiple mutexes have to be acquired, always take the
  * 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.
  * lock_inputs must be held in order to either close the input stream, or prevent closure.
  */
 
