diff options
| author | Vinod Koul <vinod.koul@intel.com> | 2015-02-11 23:29:56 -0500 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2015-02-23 10:43:59 -0500 |
| commit | e0b87d476bc13fc55e7000a84cd1d87c8fdc1f2f (patch) | |
| tree | c85ad27f9f2ff4d30eb5c00072b4738bc5d21a78 | |
| parent | 7b9ca9d7e561ebdc93b43277eb69d20a0dc8f5cd (diff) | |
ASoC: Intel: add support for pause and resume in sst
This adds missing pcm pause and resume ops in the driver
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
| -rw-r--r-- | sound/soc/intel/sst/sst_drv_interface.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sound/soc/intel/sst/sst_drv_interface.c b/sound/soc/intel/sst/sst_drv_interface.c index 5f75ef3cdd22..5d56fcdd58d8 100644 --- a/sound/soc/intel/sst/sst_drv_interface.c +++ b/sound/soc/intel/sst/sst_drv_interface.c | |||
| @@ -572,6 +572,35 @@ static int sst_stream_drop(struct device *dev, int str_id) | |||
| 572 | return sst_drop_stream(ctx, str_id); | 572 | return sst_drop_stream(ctx, str_id); |
| 573 | } | 573 | } |
| 574 | 574 | ||
| 575 | static int sst_stream_pause(struct device *dev, int str_id) | ||
| 576 | { | ||
| 577 | struct stream_info *str_info; | ||
| 578 | struct intel_sst_drv *ctx = dev_get_drvdata(dev); | ||
| 579 | |||
| 580 | if (ctx->sst_state != SST_FW_RUNNING) | ||
| 581 | return 0; | ||
| 582 | |||
| 583 | str_info = get_stream_info(ctx, str_id); | ||
| 584 | if (!str_info) | ||
| 585 | return -EINVAL; | ||
| 586 | |||
| 587 | return sst_pause_stream(ctx, str_id); | ||
| 588 | } | ||
| 589 | |||
| 590 | static int sst_stream_resume(struct device *dev, int str_id) | ||
| 591 | { | ||
| 592 | struct stream_info *str_info; | ||
| 593 | struct intel_sst_drv *ctx = dev_get_drvdata(dev); | ||
| 594 | |||
| 595 | if (ctx->sst_state != SST_FW_RUNNING) | ||
| 596 | return 0; | ||
| 597 | |||
| 598 | str_info = get_stream_info(ctx, str_id); | ||
| 599 | if (!str_info) | ||
| 600 | return -EINVAL; | ||
| 601 | return sst_resume_stream(ctx, str_id); | ||
| 602 | } | ||
| 603 | |||
| 575 | static int sst_stream_init(struct device *dev, struct pcm_stream_info *str_info) | 604 | static int sst_stream_init(struct device *dev, struct pcm_stream_info *str_info) |
| 576 | { | 605 | { |
| 577 | int str_id = 0; | 606 | int str_id = 0; |
| @@ -633,6 +662,8 @@ static struct sst_ops pcm_ops = { | |||
| 633 | .stream_init = sst_stream_init, | 662 | .stream_init = sst_stream_init, |
| 634 | .stream_start = sst_stream_start, | 663 | .stream_start = sst_stream_start, |
| 635 | .stream_drop = sst_stream_drop, | 664 | .stream_drop = sst_stream_drop, |
| 665 | .stream_pause = sst_stream_pause, | ||
| 666 | .stream_pause_release = sst_stream_resume, | ||
| 636 | .stream_read_tstamp = sst_read_timestamp, | 667 | .stream_read_tstamp = sst_read_timestamp, |
| 637 | .send_byte_stream = sst_send_byte_stream, | 668 | .send_byte_stream = sst_send_byte_stream, |
| 638 | .close = sst_close_pcm_stream, | 669 | .close = sst_close_pcm_stream, |
