Lines Matching +full:codec +full:- +full:driver

1 // SPDX-License-Identifier: GPL-2.0-only
3 * sst_mfld_platform.c - Intel MID Platform driver
5 * Copyright (C) 2010-2014 Intel Corp
21 #include "sst-mfld-platform.h"
28 pr_debug("fragment elapsed by driver\n"); in sst_compr_fragment_elapsed()
37 pr_debug("drain notify by driver\n"); in sst_drain_notify()
46 struct snd_compr_runtime *runtime = cstream->runtime; in sst_platform_compr_open()
51 return -ENOMEM; in sst_platform_compr_open()
53 spin_lock_init(&stream->status_lock); in sst_platform_compr_open()
56 if (!sst || !try_module_get(sst->dev->driver->owner)) { in sst_platform_compr_open()
58 ret_val = -ENODEV; in sst_platform_compr_open()
61 stream->compr_ops = sst->compr_ops; in sst_platform_compr_open()
62 stream->id = 0; in sst_platform_compr_open()
65 sst->compr_ops->power(sst->dev, true); in sst_platform_compr_open()
68 runtime->private_data = stream; in sst_platform_compr_open()
81 stream = cstream->runtime->private_data; in sst_platform_compr_free()
83 sst->compr_ops->power(sst->dev, false); in sst_platform_compr_free()
86 str_id = stream->id; in sst_platform_compr_free()
88 ret_val = stream->compr_ops->close(sst->dev, str_id); in sst_platform_compr_free()
89 module_put(sst->dev->driver->owner); in sst_platform_compr_free()
105 stream = cstream->runtime->private_data; in sst_platform_compr_set_params()
109 /* fill the device type and stream id to pass to SST driver */ in sst_platform_compr_set_params()
115 switch (params->codec.id) { in sst_platform_compr_set_params()
117 str_params.codec = SST_CODEC_TYPE_MP3; in sst_platform_compr_set_params()
118 str_params.sparams.uc.mp3_params.num_chan = params->codec.ch_in; in sst_platform_compr_set_params()
124 str_params.codec = SST_CODEC_TYPE_AAC; in sst_platform_compr_set_params()
125 str_params.sparams.uc.aac_params.num_chan = params->codec.ch_in; in sst_platform_compr_set_params()
127 if (params->codec.format == SND_AUDIOSTREAMFORMAT_MP4ADTS) in sst_platform_compr_set_params()
130 else if (params->codec.format == SND_AUDIOSTREAMFORMAT_RAW) in sst_platform_compr_set_params()
134 pr_err("Undefined format%d\n", params->codec.format); in sst_platform_compr_set_params()
135 return -EINVAL; in sst_platform_compr_set_params()
138 params->codec.sample_rate; in sst_platform_compr_set_params()
143 pr_err("codec not supported, id =%d\n", params->codec.id); in sst_platform_compr_set_params()
144 return -EINVAL; in sst_platform_compr_set_params()
148 virt_to_phys(cstream->runtime->buffer); in sst_platform_compr_set_params()
150 cstream->runtime->buffer_size; in sst_platform_compr_set_params()
152 str_params.aparams.frag_size = cstream->runtime->fragment_size; in sst_platform_compr_set_params()
159 retval = stream->compr_ops->open(sst->dev, &str_params, &cb); in sst_platform_compr_set_params()
165 stream->id = retval; in sst_platform_compr_set_params()
172 struct sst_runtime_stream *stream = cstream->runtime->private_data; in sst_platform_compr_trigger()
176 if (stream->compr_ops->stream_start) in sst_platform_compr_trigger()
177 return stream->compr_ops->stream_start(sst->dev, stream->id); in sst_platform_compr_trigger()
180 if (stream->compr_ops->stream_drop) in sst_platform_compr_trigger()
181 return stream->compr_ops->stream_drop(sst->dev, stream->id); in sst_platform_compr_trigger()
184 if (stream->compr_ops->stream_drain) in sst_platform_compr_trigger()
185 return stream->compr_ops->stream_drain(sst->dev, stream->id); in sst_platform_compr_trigger()
188 if (stream->compr_ops->stream_partial_drain) in sst_platform_compr_trigger()
189 return stream->compr_ops->stream_partial_drain(sst->dev, stream->id); in sst_platform_compr_trigger()
192 if (stream->compr_ops->stream_pause) in sst_platform_compr_trigger()
193 return stream->compr_ops->stream_pause(sst->dev, stream->id); in sst_platform_compr_trigger()
196 if (stream->compr_ops->stream_pause_release) in sst_platform_compr_trigger()
197 return stream->compr_ops->stream_pause_release(sst->dev, stream->id); in sst_platform_compr_trigger()
200 return -EINVAL; in sst_platform_compr_trigger()
209 stream = cstream->runtime->private_data; in sst_platform_compr_pointer()
210 stream->compr_ops->tstamp(sst->dev, stream->id, tstamp); in sst_platform_compr_pointer()
211 tstamp->byte_offset = tstamp->copied_total % in sst_platform_compr_pointer()
212 (u32)cstream->runtime->buffer_size; in sst_platform_compr_pointer()
213 pr_debug("calc bytes offset/copied bytes as %d\n", tstamp->byte_offset); in sst_platform_compr_pointer()
223 stream = cstream->runtime->private_data; in sst_platform_compr_ack()
224 stream->compr_ops->ack(sst->dev, stream->id, (unsigned long)bytes); in sst_platform_compr_ack()
225 stream->bytes_written += bytes; in sst_platform_compr_ack()
235 cstream->runtime->private_data; in sst_platform_compr_get_caps()
237 return stream->compr_ops->get_caps(caps); in sst_platform_compr_get_caps()
242 struct snd_compr_codec_caps *codec) in sst_platform_compr_get_codec_caps() argument
245 cstream->runtime->private_data; in sst_platform_compr_get_codec_caps()
247 return stream->compr_ops->get_codec_caps(codec); in sst_platform_compr_get_codec_caps()
255 cstream->runtime->private_data; in sst_platform_compr_set_metadata()
257 return stream->compr_ops->set_metadata(sst->dev, stream->id, metadata); in sst_platform_compr_set_metadata()