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

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
Loading
Loading
Loading
Loading
+16 −9
Original line number Diff line number Diff line
@@ -13,10 +13,9 @@
#include "sof-priv.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)
{
	wait_queue_entry_t wait;
	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,
	if (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 */
	init_waitqueue_entry(&wait, current);
	set_current_state(TASK_INTERRUPTIBLE);
@@ -42,12 +54,7 @@ static size_t sof_wait_trace_avail(struct snd_sof_dev *sdev,
	}
	remove_wait_queue(&sdev->trace_sleep, &wait);

	/* return bytes available for copy */
	host_offset = READ_ONCE(sdev->host_offset);
	if (host_offset < pos)
		return buffer_size - pos;

	return host_offset - pos;
	return sof_trace_avail(sdev, pos, buffer_size);
}

static ssize_t sof_dfsentry_trace_read(struct file *file, char __user *buffer,