]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ASoC: Intel: mfld-pcm: Use function instead of ioctl
authorSubhransu S. Prusty <subhransu.s.prusty@intel.com>
Mon, 4 Aug 2014 09:34:20 +0000 (15:04 +0530)
committerMark Brown <broonie@linaro.org>
Sat, 16 Aug 2014 22:06:30 +0000 (17:06 -0500)
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>
sound/soc/intel/sst-mfld-platform-pcm.c
sound/soc/intel/sst-mfld-platform.h

index 706212a6a68c4c9d873da9d68cf057396ee38bfc..42766a51c17e2b686125f1408f4cdb7b9507efc6 100644 (file)
@@ -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;
index cc3a088df7dd4a7fecb5a8998f0fdc276cb4a7a4..2d6e65bbbc49ac04f4ef977d242d0c9a3c278526 100644 (file)
@@ -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);
 };