diff options
-rw-r--r-- | sound/soc/mid-x86/sst_platform.c | 49 |
1 files changed, 21 insertions, 28 deletions
diff --git a/sound/soc/mid-x86/sst_platform.c b/sound/soc/mid-x86/sst_platform.c index a4e3fa3761fa..1d1f5447b338 100644 --- a/sound/soc/mid-x86/sst_platform.c +++ b/sound/soc/mid-x86/sst_platform.c | |||
@@ -168,7 +168,7 @@ static int sst_platform_alloc_stream(struct snd_pcm_substream *substream) | |||
168 | pr_debug("Capture stream,Device %d\n", | 168 | pr_debug("Capture stream,Device %d\n", |
169 | substream->pcm->device); | 169 | substream->pcm->device); |
170 | } | 170 | } |
171 | ret_val = stream->sstdrv_ops->control_set(SST_SND_ALLOC, &str_params); | 171 | ret_val = stream->sstdrv_ops->pcm_control->open(&str_params); |
172 | pr_debug("SST_SND_PLAY/CAPTURE ret_val = %x\n", ret_val); | 172 | pr_debug("SST_SND_PLAY/CAPTURE ret_val = %x\n", ret_val); |
173 | if (ret_val < 0) | 173 | if (ret_val < 0) |
174 | return ret_val; | 174 | return ret_val; |
@@ -207,8 +207,8 @@ static int sst_platform_init_stream(struct snd_pcm_substream *substream) | |||
207 | stream->stream_info.mad_substream = substream; | 207 | stream->stream_info.mad_substream = substream; |
208 | stream->stream_info.buffer_ptr = 0; | 208 | stream->stream_info.buffer_ptr = 0; |
209 | stream->stream_info.sfreq = substream->runtime->rate; | 209 | stream->stream_info.sfreq = substream->runtime->rate; |
210 | ret_val = stream->sstdrv_ops->control_set(SST_SND_STREAM_INIT, | 210 | ret_val = stream->sstdrv_ops->pcm_control->device_control( |
211 | &stream->stream_info); | 211 | SST_SND_STREAM_INIT, &stream->stream_info); |
212 | if (ret_val) | 212 | if (ret_val) |
213 | pr_err("control_set ret error %d\n", ret_val); | 213 | pr_err("control_set ret error %d\n", ret_val); |
214 | return ret_val; | 214 | return ret_val; |
@@ -261,8 +261,7 @@ static int sst_platform_close(struct snd_pcm_substream *substream) | |||
261 | stream = substream->runtime->private_data; | 261 | stream = substream->runtime->private_data; |
262 | str_id = stream->stream_info.str_id; | 262 | str_id = stream->stream_info.str_id; |
263 | if (str_id) | 263 | if (str_id) |
264 | ret_val = stream->sstdrv_ops->control_set( | 264 | ret_val = stream->sstdrv_ops->pcm_control->close(str_id); |
265 | SST_SND_FREE, &str_id); | ||
266 | kfree(stream->sstdrv_ops); | 265 | kfree(stream->sstdrv_ops); |
267 | kfree(stream); | 266 | kfree(stream); |
268 | return ret_val; | 267 | return ret_val; |
@@ -277,7 +276,7 @@ static int sst_platform_pcm_prepare(struct snd_pcm_substream *substream) | |||
277 | stream = substream->runtime->private_data; | 276 | stream = substream->runtime->private_data; |
278 | str_id = stream->stream_info.str_id; | 277 | str_id = stream->stream_info.str_id; |
279 | if (stream->stream_info.str_id) { | 278 | if (stream->stream_info.str_id) { |
280 | ret_val = stream->sstdrv_ops->control_set( | 279 | ret_val = stream->sstdrv_ops->pcm_control->device_control( |
281 | SST_SND_DROP, &str_id); | 280 | SST_SND_DROP, &str_id); |
282 | return ret_val; | 281 | return ret_val; |
283 | } | 282 | } |
@@ -300,6 +299,7 @@ static int sst_platform_pcm_trigger(struct snd_pcm_substream *substream, | |||
300 | { | 299 | { |
301 | int ret_val = 0, str_id; | 300 | int ret_val = 0, str_id; |
302 | struct sst_runtime_stream *stream; | 301 | struct sst_runtime_stream *stream; |
302 | int str_cmd, status; | ||
303 | 303 | ||
304 | pr_debug("sst_platform_pcm_trigger called\n"); | 304 | pr_debug("sst_platform_pcm_trigger called\n"); |
305 | stream = substream->runtime->private_data; | 305 | stream = substream->runtime->private_data; |
@@ -307,40 +307,33 @@ static int sst_platform_pcm_trigger(struct snd_pcm_substream *substream, | |||
307 | switch (cmd) { | 307 | switch (cmd) { |
308 | case SNDRV_PCM_TRIGGER_START: | 308 | case SNDRV_PCM_TRIGGER_START: |
309 | pr_debug("sst: Trigger Start\n"); | 309 | pr_debug("sst: Trigger Start\n"); |
310 | ret_val = stream->sstdrv_ops->control_set( | 310 | str_cmd = SST_SND_START; |
311 | SST_SND_START, &str_id); | 311 | status = SST_PLATFORM_RUNNING; |
312 | if (ret_val) | ||
313 | break; | ||
314 | sst_set_stream_status(stream, SST_PLATFORM_RUNNING); | ||
315 | stream->stream_info.mad_substream = substream; | 312 | stream->stream_info.mad_substream = substream; |
316 | break; | 313 | break; |
317 | case SNDRV_PCM_TRIGGER_STOP: | 314 | case SNDRV_PCM_TRIGGER_STOP: |
318 | pr_debug("sst: in stop\n"); | 315 | pr_debug("sst: in stop\n"); |
319 | ret_val = stream->sstdrv_ops->control_set( | 316 | str_cmd = SST_SND_DROP; |
320 | SST_SND_DROP, &str_id); | 317 | status = SST_PLATFORM_DROPPED; |
321 | if (ret_val) | ||
322 | break; | ||
323 | sst_set_stream_status(stream, SST_PLATFORM_DROPPED); | ||
324 | break; | 318 | break; |
325 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: | 319 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: |
326 | pr_debug("sst: in pause\n"); | 320 | pr_debug("sst: in pause\n"); |
327 | ret_val = stream->sstdrv_ops->control_set( | 321 | str_cmd = SST_SND_PAUSE; |
328 | SST_SND_PAUSE, &str_id); | 322 | status = SST_PLATFORM_PAUSED; |
329 | if (ret_val) | ||
330 | break; | ||
331 | sst_set_stream_status(stream, SST_PLATFORM_PAUSED); | ||
332 | break; | 323 | break; |
333 | case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: | 324 | case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: |
334 | pr_debug("sst: in pause release\n"); | 325 | pr_debug("sst: in pause release\n"); |
335 | ret_val = stream->sstdrv_ops->control_set( | 326 | str_cmd = SST_SND_RESUME; |
336 | SST_SND_RESUME, &str_id); | 327 | status = SST_PLATFORM_RUNNING; |
337 | if (ret_val) | ||
338 | break; | ||
339 | sst_set_stream_status(stream, SST_PLATFORM_RUNNING); | ||
340 | break; | 328 | break; |
341 | default: | 329 | default: |
342 | ret_val = -EINVAL; | 330 | return -EINVAL; |
343 | } | 331 | } |
332 | ret_val = stream->sstdrv_ops->pcm_control->device_control(str_cmd, | ||
333 | &str_id); | ||
334 | if (!ret_val) | ||
335 | sst_set_stream_status(stream, status); | ||
336 | |||
344 | return ret_val; | 337 | return ret_val; |
345 | } | 338 | } |
346 | 339 | ||
@@ -357,7 +350,7 @@ static snd_pcm_uframes_t sst_platform_pcm_pointer | |||
357 | if (status == SST_PLATFORM_INIT) | 350 | if (status == SST_PLATFORM_INIT) |
358 | return 0; | 351 | return 0; |
359 | str_info = &stream->stream_info; | 352 | str_info = &stream->stream_info; |
360 | ret_val = stream->sstdrv_ops->control_set( | 353 | ret_val = stream->sstdrv_ops->pcm_control->device_control( |
361 | SST_SND_BUFFER_POINTER, str_info); | 354 | SST_SND_BUFFER_POINTER, str_info); |
362 | if (ret_val) { | 355 | if (ret_val) { |
363 | pr_err("sst: error code = %d\n", ret_val); | 356 | pr_err("sst: error code = %d\n", ret_val); |