Audio: Revert hal changes to block pcm_close during SSR
pcm driver supports pcm_close during SSR, so reverted
HAL code to block pcm session close during SSR.
CRs-Fixed: 663477
Change-Id: I752e3f4f55288f91294e090b974ba1367c27122d
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 81ba6f1..5d12dce 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -836,11 +836,9 @@
pcm_close(in->pcm);
in->pcm = NULL;
ret = -EIO;
- in->pcm_error_type = PCM_ERROR_EIO;
goto error_open;
}
- in->pcm_error_type = PCM_ERROR_NONE;
ALOGV("%s: exit", __func__);
return ret;
@@ -1237,10 +1235,8 @@
pcm_close(out->pcm);
out->pcm = NULL;
ret = -EIO;
- out->pcm_error_type = PCM_ERROR_EIO;
goto error_open;
}
- out->pcm_error_type = PCM_ERROR_NONE;
} else {
out->pcm = NULL;
out->compr = compress_open(adev->snd_card,
@@ -1679,12 +1675,6 @@
ALOGD(" %s: sound card is not active/SSR state", __func__);
ret= -ENETRESET;
goto exit;
- } else if (PCM_ERROR_ENETRESET == out->pcm_error_type) {
- ALOGD(" %s restarting pcm session on post SSR", __func__);
- out->standby = false;
- pthread_mutex_unlock(&out->lock);
- out_standby(&out->stream.common);
- pthread_mutex_lock(&out->lock);
}
}
@@ -1736,12 +1726,11 @@
}
exit:
-
+ /* ToDo: There may be a corner case when SSR happens back to back during
+ start/stop. Need to post different error to handle that. */
if (-ENETRESET == ret) {
pthread_mutex_lock(&adev->snd_card_status.lock);
adev->snd_card_status.state = SND_CARD_STATE_OFFLINE;
- out->pcm_error_type = PCM_ERROR_ENETRESET;
- out->standby = true; /*standby will be called on post SSR */
pthread_mutex_unlock(&adev->snd_card_status.lock);
}
@@ -2097,12 +2086,6 @@
ALOGD(" %s: sound card is not active/SSR state", __func__);
ret= -ENETRESET;
goto exit;
- } else if (PCM_ERROR_ENETRESET == in->pcm_error_type) {
- ALOGD(" %s restarting pcm session on post SSR", __func__);
- in->standby = false;
- pthread_mutex_unlock(&in->lock);
- in_standby(&in->stream.common);
- pthread_mutex_lock(&in->lock);
}
}
@@ -2136,13 +2119,12 @@
memset(buffer, 0, bytes);
exit:
-
+ /* ToDo: There may be a corner case when SSR happens back to back during
+ start/stop. Need to post different error to handle that. */
if (-ENETRESET == ret) {
pthread_mutex_lock(&adev->snd_card_status.lock);
adev->snd_card_status.state = SND_CARD_STATE_OFFLINE;
- in->pcm_error_type = PCM_ERROR_ENETRESET;
memset(buffer, 0, bytes);
- in->standby = true; /*standby will be called on post SSR */
pthread_mutex_unlock(&adev->snd_card_status.lock);
}
pthread_mutex_unlock(&in->lock);
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 3f780d3..a602e56 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -140,12 +140,6 @@
OFFLOAD_STATE_PAUSED,
};
-enum {
- PCM_ERROR_NONE,
- PCM_ERROR_EIO,
- PCM_ERROR_ENETRESET, /* For SSR */
-};
-
struct offload_cmd {
struct listnode node;
int cmd;
@@ -186,7 +180,6 @@
void *offload_cookie;
struct compr_gapless_mdata gapless_mdata;
int send_new_metadata;
- int pcm_error_type;
struct audio_device *dev;
};
@@ -205,7 +198,6 @@
bool enable_aec;
bool enable_ns;
audio_format_t format;
- int pcm_error_type;
struct audio_device *dev;
};