ANDROID: goldfish_audio: Clear audio read buffer status after each read

The buffer_status field is interrupt updated. After every read request,
the buffer_status read field should be reset so that on the next loop
iteration we don't read a stale value and read data before the
device is ready.

Signed-off-by: “Joshua Lang” <joshualang@google.com>
Change-Id: I4943d5aaada1cad9c7e59a94a87c387578dabe86
This commit is contained in:
Joshua Lang 2016-06-17 17:30:55 -07:00 committed by Amit Pundir
parent 038357818e
commit bdcc178732

View File

@ -117,6 +117,7 @@ static ssize_t goldfish_audio_read(struct file *fp, char __user *buf,
size_t count, loff_t *pos)
{
struct goldfish_audio *data = fp->private_data;
unsigned long irq_flags;
int length;
int result = 0;
@ -130,6 +131,10 @@ static ssize_t goldfish_audio_read(struct file *fp, char __user *buf,
wait_event_interruptible(data->wait, data->buffer_status &
AUDIO_INT_READ_BUFFER_FULL);
spin_lock_irqsave(&data->lock, irq_flags);
data->buffer_status &= ~AUDIO_INT_READ_BUFFER_FULL;
spin_unlock_irqrestore(&data->lock, irq_flags);
length = AUDIO_READ(data, AUDIO_READ_BUFFER_AVAILABLE);
/* copy data to user space */