Commit 5981c2d6 authored by Subhransu S. Prusty's avatar Subhransu S. Prusty Committed by Mark Brown
Browse files

ASoC: Intel: mfld-pcm: Use function instead of ioctl

parent ea5edfe2
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -314,8 +314,7 @@ static int sst_platform_init_stream(struct snd_pcm_substream *substream)
	stream->stream_info.arg = substream;
	stream->stream_info.buffer_ptr = 0;
	stream->stream_info.sfreq = substream->runtime->rate;
	ret_val = stream->ops->device_control(
			SST_SND_STREAM_INIT, &stream->stream_info);
	ret_val = stream->ops->stream_init(&stream->stream_info);
	if (ret_val)
		pr_err("control_set ret error %d\n", ret_val);
	return ret_val;
@@ -403,8 +402,7 @@ static int sst_media_prepare(struct snd_pcm_substream *substream,
	stream = substream->runtime->private_data;
	str_id = stream->stream_info.str_id;
	if (stream->stream_info.str_id) {
		ret_val = stream->ops->device_control(
				SST_SND_DROP, &str_id);
		ret_val = stream->ops->stream_drop(str_id);
		return ret_val;
	}

@@ -461,7 +459,7 @@ static int sst_platform_pcm_trigger(struct snd_pcm_substream *substream,
{
	int ret_val = 0, str_id;
	struct sst_runtime_stream *stream;
	int str_cmd, status;
	int status;

	pr_debug("sst_platform_pcm_trigger called\n");
	stream = substream->runtime->private_data;
@@ -469,29 +467,29 @@ static int sst_platform_pcm_trigger(struct snd_pcm_substream *substream,
	switch (cmd) {
	case SNDRV_PCM_TRIGGER_START:
		pr_debug("sst: Trigger Start\n");
		str_cmd = SST_SND_START;
		status = SST_PLATFORM_RUNNING;
		stream->stream_info.arg = substream;
		ret_val = stream->ops->stream_start(str_id);
		break;
	case SNDRV_PCM_TRIGGER_STOP:
		pr_debug("sst: in stop\n");
		str_cmd = SST_SND_DROP;
		status = SST_PLATFORM_DROPPED;
		ret_val = stream->ops->stream_drop(str_id);
		break;
	case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
		pr_debug("sst: in pause\n");
		str_cmd = SST_SND_PAUSE;
		status = SST_PLATFORM_PAUSED;
		ret_val = stream->ops->stream_pause(str_id);
		break;
	case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
		pr_debug("sst: in pause release\n");
		str_cmd = SST_SND_RESUME;
		status = SST_PLATFORM_RUNNING;
		ret_val = stream->ops->stream_pause_release(str_id);
		break;
	default:
		return -EINVAL;
	}
	ret_val = stream->ops->device_control(str_cmd, &str_id);

	if (!ret_val)
		sst_set_stream_status(stream, status);

@@ -511,8 +509,7 @@ static snd_pcm_uframes_t sst_platform_pcm_pointer
	if (status == SST_PLATFORM_INIT)
		return 0;
	str_info = &stream->stream_info;
	ret_val = stream->ops->device_control(
				SST_SND_BUFFER_POINTER, str_info);
	ret_val = stream->ops->stream_read_tstamp(str_info);
	if (ret_val) {
		pr_err("sst: error code = %d\n", ret_val);
		return ret_val;
+6 −13
Original line number Diff line number Diff line
@@ -54,18 +54,6 @@ enum sst_drv_status {
	SST_PLATFORM_DROPPED,
};

enum sst_controls {
	SST_SND_ALLOC =			0x00,
	SST_SND_PAUSE =			0x01,
	SST_SND_RESUME =		0x02,
	SST_SND_DROP =			0x03,
	SST_SND_FREE =			0x04,
	SST_SND_BUFFER_POINTER =	0x05,
	SST_SND_STREAM_INIT =		0x06,
	SST_SND_START	 =		0x07,
	SST_MAX_CONTROLS = 		0x07,
};

enum sst_stream_ops {
	STREAM_OPS_PLAYBACK = 0,
	STREAM_OPS_CAPTURE,
@@ -126,7 +114,12 @@ struct compress_sst_ops {

struct sst_ops {
	int (*open) (struct snd_sst_params *str_param);
	int (*device_control) (int cmd, void *arg);
	int (*stream_init) (struct pcm_stream_info *str_info);
	int (*stream_start) (int str_id);
	int (*stream_drop) (int str_id);
	int (*stream_pause) (int str_id);
	int (*stream_pause_release) (int str_id);
	int (*stream_read_tstamp) (struct pcm_stream_info *str_info);
	int (*send_byte_stream)(struct snd_sst_bytes_v2 *bytes);
	int (*close) (unsigned int str_id);
};