| .. | .. |
|---|
| 16 | 16 | |
|---|
| 17 | 17 | #include "aio.h" |
|---|
| 18 | 18 | |
|---|
| 19 | | -static int uniphier_aio_compr_prepare(struct snd_compr_stream *cstream); |
|---|
| 20 | | -static int uniphier_aio_compr_hw_free(struct snd_compr_stream *cstream); |
|---|
| 19 | +static int uniphier_aio_compr_prepare(struct snd_soc_component *component, |
|---|
| 20 | + struct snd_compr_stream *cstream); |
|---|
| 21 | +static int uniphier_aio_compr_hw_free(struct snd_soc_component *component, |
|---|
| 22 | + struct snd_compr_stream *cstream); |
|---|
| 21 | 23 | |
|---|
| 22 | 24 | static int uniphier_aio_comprdma_new(struct snd_soc_pcm_runtime *rtd) |
|---|
| 23 | 25 | { |
|---|
| 24 | 26 | struct snd_compr *compr = rtd->compr; |
|---|
| 25 | 27 | struct device *dev = compr->card->dev; |
|---|
| 26 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 28 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 27 | 29 | struct uniphier_aio_sub *sub = &aio->sub[compr->direction]; |
|---|
| 28 | 30 | size_t size = AUD_RING_SIZE; |
|---|
| 29 | 31 | int dma_dir = DMA_FROM_DEVICE, ret; |
|---|
| .. | .. |
|---|
| 56 | 58 | { |
|---|
| 57 | 59 | struct snd_compr *compr = rtd->compr; |
|---|
| 58 | 60 | struct device *dev = compr->card->dev; |
|---|
| 59 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 61 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 60 | 62 | struct uniphier_aio_sub *sub = &aio->sub[compr->direction]; |
|---|
| 61 | 63 | int dma_dir = DMA_FROM_DEVICE; |
|---|
| 62 | 64 | |
|---|
| .. | .. |
|---|
| 70 | 72 | return 0; |
|---|
| 71 | 73 | } |
|---|
| 72 | 74 | |
|---|
| 73 | | -static int uniphier_aio_compr_open(struct snd_compr_stream *cstream) |
|---|
| 75 | +static int uniphier_aio_compr_open(struct snd_soc_component *component, |
|---|
| 76 | + struct snd_compr_stream *cstream) |
|---|
| 74 | 77 | { |
|---|
| 75 | 78 | struct snd_soc_pcm_runtime *rtd = cstream->private_data; |
|---|
| 76 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 79 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 77 | 80 | struct uniphier_aio_sub *sub = &aio->sub[cstream->direction]; |
|---|
| 78 | 81 | int ret; |
|---|
| 79 | 82 | |
|---|
| .. | .. |
|---|
| 95 | 98 | return 0; |
|---|
| 96 | 99 | } |
|---|
| 97 | 100 | |
|---|
| 98 | | -static int uniphier_aio_compr_free(struct snd_compr_stream *cstream) |
|---|
| 101 | +static int uniphier_aio_compr_free(struct snd_soc_component *component, |
|---|
| 102 | + struct snd_compr_stream *cstream) |
|---|
| 99 | 103 | { |
|---|
| 100 | 104 | struct snd_soc_pcm_runtime *rtd = cstream->private_data; |
|---|
| 101 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 105 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 102 | 106 | struct uniphier_aio_sub *sub = &aio->sub[cstream->direction]; |
|---|
| 103 | 107 | int ret; |
|---|
| 104 | 108 | |
|---|
| 105 | | - ret = uniphier_aio_compr_hw_free(cstream); |
|---|
| 109 | + ret = uniphier_aio_compr_hw_free(component, cstream); |
|---|
| 106 | 110 | if (ret) |
|---|
| 107 | 111 | return ret; |
|---|
| 108 | 112 | ret = uniphier_aio_comprdma_free(rtd); |
|---|
| .. | .. |
|---|
| 114 | 118 | return 0; |
|---|
| 115 | 119 | } |
|---|
| 116 | 120 | |
|---|
| 117 | | -static int uniphier_aio_compr_get_params(struct snd_compr_stream *cstream, |
|---|
| 121 | +static int uniphier_aio_compr_get_params(struct snd_soc_component *component, |
|---|
| 122 | + struct snd_compr_stream *cstream, |
|---|
| 118 | 123 | struct snd_codec *params) |
|---|
| 119 | 124 | { |
|---|
| 120 | 125 | struct snd_soc_pcm_runtime *rtd = cstream->private_data; |
|---|
| 121 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 126 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 122 | 127 | struct uniphier_aio_sub *sub = &aio->sub[cstream->direction]; |
|---|
| 123 | 128 | |
|---|
| 124 | 129 | *params = sub->cparams.codec; |
|---|
| .. | .. |
|---|
| 126 | 131 | return 0; |
|---|
| 127 | 132 | } |
|---|
| 128 | 133 | |
|---|
| 129 | | -static int uniphier_aio_compr_set_params(struct snd_compr_stream *cstream, |
|---|
| 134 | +static int uniphier_aio_compr_set_params(struct snd_soc_component *component, |
|---|
| 135 | + struct snd_compr_stream *cstream, |
|---|
| 130 | 136 | struct snd_compr_params *params) |
|---|
| 131 | 137 | { |
|---|
| 132 | 138 | struct snd_soc_pcm_runtime *rtd = cstream->private_data; |
|---|
| 133 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 139 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 134 | 140 | struct uniphier_aio_sub *sub = &aio->sub[cstream->direction]; |
|---|
| 135 | 141 | struct device *dev = &aio->chip->pdev->dev; |
|---|
| 136 | 142 | int ret; |
|---|
| .. | .. |
|---|
| 155 | 161 | aio_port_reset(sub); |
|---|
| 156 | 162 | aio_src_reset(sub); |
|---|
| 157 | 163 | |
|---|
| 158 | | - ret = uniphier_aio_compr_prepare(cstream); |
|---|
| 164 | + ret = uniphier_aio_compr_prepare(component, cstream); |
|---|
| 159 | 165 | if (ret) |
|---|
| 160 | 166 | return ret; |
|---|
| 161 | 167 | |
|---|
| 162 | 168 | return 0; |
|---|
| 163 | 169 | } |
|---|
| 164 | 170 | |
|---|
| 165 | | -static int uniphier_aio_compr_hw_free(struct snd_compr_stream *cstream) |
|---|
| 171 | +static int uniphier_aio_compr_hw_free(struct snd_soc_component *component, |
|---|
| 172 | + struct snd_compr_stream *cstream) |
|---|
| 166 | 173 | { |
|---|
| 167 | 174 | struct snd_soc_pcm_runtime *rtd = cstream->private_data; |
|---|
| 168 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 175 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 169 | 176 | struct uniphier_aio_sub *sub = &aio->sub[cstream->direction]; |
|---|
| 170 | 177 | |
|---|
| 171 | 178 | sub->setting = 0; |
|---|
| .. | .. |
|---|
| 173 | 180 | return 0; |
|---|
| 174 | 181 | } |
|---|
| 175 | 182 | |
|---|
| 176 | | -static int uniphier_aio_compr_prepare(struct snd_compr_stream *cstream) |
|---|
| 183 | +static int uniphier_aio_compr_prepare(struct snd_soc_component *component, |
|---|
| 184 | + struct snd_compr_stream *cstream) |
|---|
| 177 | 185 | { |
|---|
| 178 | 186 | struct snd_soc_pcm_runtime *rtd = cstream->private_data; |
|---|
| 179 | 187 | struct snd_compr_runtime *runtime = cstream->runtime; |
|---|
| 180 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 188 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 181 | 189 | struct uniphier_aio_sub *sub = &aio->sub[cstream->direction]; |
|---|
| 182 | 190 | int bytes = runtime->fragment_size; |
|---|
| 183 | 191 | unsigned long flags; |
|---|
| .. | .. |
|---|
| 210 | 218 | return 0; |
|---|
| 211 | 219 | } |
|---|
| 212 | 220 | |
|---|
| 213 | | -static int uniphier_aio_compr_trigger(struct snd_compr_stream *cstream, |
|---|
| 221 | +static int uniphier_aio_compr_trigger(struct snd_soc_component *component, |
|---|
| 222 | + struct snd_compr_stream *cstream, |
|---|
| 214 | 223 | int cmd) |
|---|
| 215 | 224 | { |
|---|
| 216 | 225 | struct snd_soc_pcm_runtime *rtd = cstream->private_data; |
|---|
| 217 | 226 | struct snd_compr_runtime *runtime = cstream->runtime; |
|---|
| 218 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 227 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 219 | 228 | struct uniphier_aio_sub *sub = &aio->sub[cstream->direction]; |
|---|
| 220 | 229 | struct device *dev = &aio->chip->pdev->dev; |
|---|
| 221 | 230 | int bytes = runtime->fragment_size, ret = 0; |
|---|
| .. | .. |
|---|
| 243 | 252 | return ret; |
|---|
| 244 | 253 | } |
|---|
| 245 | 254 | |
|---|
| 246 | | -static int uniphier_aio_compr_pointer(struct snd_compr_stream *cstream, |
|---|
| 255 | +static int uniphier_aio_compr_pointer(struct snd_soc_component *component, |
|---|
| 256 | + struct snd_compr_stream *cstream, |
|---|
| 247 | 257 | struct snd_compr_tstamp *tstamp) |
|---|
| 248 | 258 | { |
|---|
| 249 | 259 | struct snd_soc_pcm_runtime *rtd = cstream->private_data; |
|---|
| 250 | 260 | struct snd_compr_runtime *runtime = cstream->runtime; |
|---|
| 251 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 261 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 252 | 262 | struct uniphier_aio_sub *sub = &aio->sub[cstream->direction]; |
|---|
| 253 | 263 | int bytes = runtime->fragment_size; |
|---|
| 254 | 264 | unsigned long flags; |
|---|
| .. | .. |
|---|
| 316 | 326 | return 0; |
|---|
| 317 | 327 | } |
|---|
| 318 | 328 | |
|---|
| 319 | | -static int uniphier_aio_compr_copy(struct snd_compr_stream *cstream, |
|---|
| 329 | +static int uniphier_aio_compr_copy(struct snd_soc_component *component, |
|---|
| 330 | + struct snd_compr_stream *cstream, |
|---|
| 320 | 331 | char __user *buf, size_t count) |
|---|
| 321 | 332 | { |
|---|
| 322 | 333 | struct snd_soc_pcm_runtime *rtd = cstream->private_data; |
|---|
| 323 | 334 | struct snd_compr_runtime *runtime = cstream->runtime; |
|---|
| 324 | 335 | struct device *carddev = rtd->compr->card->dev; |
|---|
| 325 | | - struct uniphier_aio *aio = uniphier_priv(rtd->cpu_dai); |
|---|
| 336 | + struct uniphier_aio *aio = uniphier_priv(asoc_rtd_to_cpu(rtd, 0)); |
|---|
| 326 | 337 | struct uniphier_aio_sub *sub = &aio->sub[cstream->direction]; |
|---|
| 327 | 338 | size_t cnt = min_t(size_t, count, aio_rb_space_to_end(sub) / 2); |
|---|
| 328 | 339 | int bytes = runtime->fragment_size; |
|---|
| .. | .. |
|---|
| 375 | 386 | return cnt; |
|---|
| 376 | 387 | } |
|---|
| 377 | 388 | |
|---|
| 378 | | -static int uniphier_aio_compr_get_caps(struct snd_compr_stream *cstream, |
|---|
| 389 | +static int uniphier_aio_compr_get_caps(struct snd_soc_component *component, |
|---|
| 390 | + struct snd_compr_stream *cstream, |
|---|
| 379 | 391 | struct snd_compr_caps *caps) |
|---|
| 380 | 392 | { |
|---|
| 381 | 393 | caps->num_codecs = 1; |
|---|
| .. | .. |
|---|
| 401 | 413 | .descriptor[0].formats = 0, |
|---|
| 402 | 414 | }; |
|---|
| 403 | 415 | |
|---|
| 404 | | -static int uniphier_aio_compr_get_codec_caps(struct snd_compr_stream *stream, |
|---|
| 416 | +static int uniphier_aio_compr_get_codec_caps(struct snd_soc_component *component, |
|---|
| 417 | + struct snd_compr_stream *stream, |
|---|
| 405 | 418 | struct snd_compr_codec_caps *codec) |
|---|
| 406 | 419 | { |
|---|
| 407 | 420 | if (codec->codec == SND_AUDIOCODEC_IEC61937) |
|---|
| .. | .. |
|---|
| 412 | 425 | return 0; |
|---|
| 413 | 426 | } |
|---|
| 414 | 427 | |
|---|
| 415 | | -const struct snd_compr_ops uniphier_aio_compr_ops = { |
|---|
| 428 | +const struct snd_compress_ops uniphier_aio_compress_ops = { |
|---|
| 416 | 429 | .open = uniphier_aio_compr_open, |
|---|
| 417 | 430 | .free = uniphier_aio_compr_free, |
|---|
| 418 | 431 | .get_params = uniphier_aio_compr_get_params, |
|---|