ASoC: Intel: mfld-pcm: Use function instead of ioctl
Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
parent
ea5edfe2f1
commit
5981c2d6db
2 changed files with 15 additions and 25 deletions
|
@ -314,8 +314,7 @@ static int sst_platform_init_stream(struct snd_pcm_substream *substream)
|
||||||
stream->stream_info.arg = substream;
|
stream->stream_info.arg = substream;
|
||||||
stream->stream_info.buffer_ptr = 0;
|
stream->stream_info.buffer_ptr = 0;
|
||||||
stream->stream_info.sfreq = substream->runtime->rate;
|
stream->stream_info.sfreq = substream->runtime->rate;
|
||||||
ret_val = stream->ops->device_control(
|
ret_val = stream->ops->stream_init(&stream->stream_info);
|
||||||
SST_SND_STREAM_INIT, &stream->stream_info);
|
|
||||||
if (ret_val)
|
if (ret_val)
|
||||||
pr_err("control_set ret error %d\n", ret_val);
|
pr_err("control_set ret error %d\n", ret_val);
|
||||||
return ret_val;
|
return ret_val;
|
||||||
|
@ -403,8 +402,7 @@ static int sst_media_prepare(struct snd_pcm_substream *substream,
|
||||||
stream = substream->runtime->private_data;
|
stream = substream->runtime->private_data;
|
||||||
str_id = stream->stream_info.str_id;
|
str_id = stream->stream_info.str_id;
|
||||||
if (stream->stream_info.str_id) {
|
if (stream->stream_info.str_id) {
|
||||||
ret_val = stream->ops->device_control(
|
ret_val = stream->ops->stream_drop(str_id);
|
||||||
SST_SND_DROP, &str_id);
|
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -461,7 +459,7 @@ static int sst_platform_pcm_trigger(struct snd_pcm_substream *substream,
|
||||||
{
|
{
|
||||||
int ret_val = 0, str_id;
|
int ret_val = 0, str_id;
|
||||||
struct sst_runtime_stream *stream;
|
struct sst_runtime_stream *stream;
|
||||||
int str_cmd, status;
|
int status;
|
||||||
|
|
||||||
pr_debug("sst_platform_pcm_trigger called\n");
|
pr_debug("sst_platform_pcm_trigger called\n");
|
||||||
stream = substream->runtime->private_data;
|
stream = substream->runtime->private_data;
|
||||||
|
@ -469,29 +467,29 @@ static int sst_platform_pcm_trigger(struct snd_pcm_substream *substream,
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case SNDRV_PCM_TRIGGER_START:
|
case SNDRV_PCM_TRIGGER_START:
|
||||||
pr_debug("sst: Trigger Start\n");
|
pr_debug("sst: Trigger Start\n");
|
||||||
str_cmd = SST_SND_START;
|
|
||||||
status = SST_PLATFORM_RUNNING;
|
status = SST_PLATFORM_RUNNING;
|
||||||
stream->stream_info.arg = substream;
|
stream->stream_info.arg = substream;
|
||||||
|
ret_val = stream->ops->stream_start(str_id);
|
||||||
break;
|
break;
|
||||||
case SNDRV_PCM_TRIGGER_STOP:
|
case SNDRV_PCM_TRIGGER_STOP:
|
||||||
pr_debug("sst: in stop\n");
|
pr_debug("sst: in stop\n");
|
||||||
str_cmd = SST_SND_DROP;
|
|
||||||
status = SST_PLATFORM_DROPPED;
|
status = SST_PLATFORM_DROPPED;
|
||||||
|
ret_val = stream->ops->stream_drop(str_id);
|
||||||
break;
|
break;
|
||||||
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
||||||
pr_debug("sst: in pause\n");
|
pr_debug("sst: in pause\n");
|
||||||
str_cmd = SST_SND_PAUSE;
|
|
||||||
status = SST_PLATFORM_PAUSED;
|
status = SST_PLATFORM_PAUSED;
|
||||||
|
ret_val = stream->ops->stream_pause(str_id);
|
||||||
break;
|
break;
|
||||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||||
pr_debug("sst: in pause release\n");
|
pr_debug("sst: in pause release\n");
|
||||||
str_cmd = SST_SND_RESUME;
|
|
||||||
status = SST_PLATFORM_RUNNING;
|
status = SST_PLATFORM_RUNNING;
|
||||||
|
ret_val = stream->ops->stream_pause_release(str_id);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
ret_val = stream->ops->device_control(str_cmd, &str_id);
|
|
||||||
if (!ret_val)
|
if (!ret_val)
|
||||||
sst_set_stream_status(stream, status);
|
sst_set_stream_status(stream, status);
|
||||||
|
|
||||||
|
@ -511,8 +509,7 @@ static snd_pcm_uframes_t sst_platform_pcm_pointer
|
||||||
if (status == SST_PLATFORM_INIT)
|
if (status == SST_PLATFORM_INIT)
|
||||||
return 0;
|
return 0;
|
||||||
str_info = &stream->stream_info;
|
str_info = &stream->stream_info;
|
||||||
ret_val = stream->ops->device_control(
|
ret_val = stream->ops->stream_read_tstamp(str_info);
|
||||||
SST_SND_BUFFER_POINTER, str_info);
|
|
||||||
if (ret_val) {
|
if (ret_val) {
|
||||||
pr_err("sst: error code = %d\n", ret_val);
|
pr_err("sst: error code = %d\n", ret_val);
|
||||||
return ret_val;
|
return ret_val;
|
||||||
|
|
|
@ -54,18 +54,6 @@ enum sst_drv_status {
|
||||||
SST_PLATFORM_DROPPED,
|
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 {
|
enum sst_stream_ops {
|
||||||
STREAM_OPS_PLAYBACK = 0,
|
STREAM_OPS_PLAYBACK = 0,
|
||||||
STREAM_OPS_CAPTURE,
|
STREAM_OPS_CAPTURE,
|
||||||
|
@ -126,7 +114,12 @@ struct compress_sst_ops {
|
||||||
|
|
||||||
struct sst_ops {
|
struct sst_ops {
|
||||||
int (*open) (struct snd_sst_params *str_param);
|
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 (*send_byte_stream)(struct snd_sst_bytes_v2 *bytes);
|
||||||
int (*close) (unsigned int str_id);
|
int (*close) (unsigned int str_id);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue