Commit f627b052 authored by Kai Vehmanen's avatar Kai Vehmanen Committed by Mark Brown

ASoC: SOF: trace: remove code duplication in sof_wait_trace_avail()

Move duplicated code in sof_wait_trace_avail() to a helper function.
Signed-off-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent b11c5b5e
...@@ -13,10 +13,9 @@ ...@@ -13,10 +13,9 @@
#include "sof-priv.h" #include "sof-priv.h"
#include "ops.h" #include "ops.h"
static size_t sof_wait_trace_avail(struct snd_sof_dev *sdev, static size_t sof_trace_avail(struct snd_sof_dev *sdev,
loff_t pos, size_t buffer_size) loff_t pos, size_t buffer_size)
{ {
wait_queue_entry_t wait;
loff_t host_offset = READ_ONCE(sdev->host_offset); loff_t host_offset = READ_ONCE(sdev->host_offset);
/* /*
...@@ -31,6 +30,19 @@ static size_t sof_wait_trace_avail(struct snd_sof_dev *sdev, ...@@ -31,6 +30,19 @@ static size_t sof_wait_trace_avail(struct snd_sof_dev *sdev,
if (host_offset > pos) if (host_offset > pos)
return host_offset - pos; return host_offset - pos;
return 0;
}
static size_t sof_wait_trace_avail(struct snd_sof_dev *sdev,
loff_t pos, size_t buffer_size)
{
wait_queue_entry_t wait;
size_t ret = sof_trace_avail(sdev, pos, buffer_size);
/* data immediately available */
if (ret)
return ret;
/* wait for available trace data from FW */ /* wait for available trace data from FW */
init_waitqueue_entry(&wait, current); init_waitqueue_entry(&wait, current);
set_current_state(TASK_INTERRUPTIBLE); set_current_state(TASK_INTERRUPTIBLE);
...@@ -42,12 +54,7 @@ static size_t sof_wait_trace_avail(struct snd_sof_dev *sdev, ...@@ -42,12 +54,7 @@ static size_t sof_wait_trace_avail(struct snd_sof_dev *sdev,
} }
remove_wait_queue(&sdev->trace_sleep, &wait); remove_wait_queue(&sdev->trace_sleep, &wait);
/* return bytes available for copy */ return sof_trace_avail(sdev, pos, buffer_size);
host_offset = READ_ONCE(sdev->host_offset);
if (host_offset < pos)
return buffer_size - pos;
return host_offset - pos;
} }
static ssize_t sof_dfsentry_trace_read(struct file *file, char __user *buffer, static ssize_t sof_dfsentry_trace_read(struct file *file, char __user *buffer,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment