diff options
| author | Lars-Peter Clausen <lars@metafoo.de> | 2014-05-06 03:39:40 -0400 |
|---|---|---|
| committer | Mark Brown <broonie@linaro.org> | 2014-05-12 17:08:36 -0400 |
| commit | b74f7be90f5bd231358289dca1b25c91fe21143d (patch) | |
| tree | 4c643b6d13cb8ca843ee05703bd9849116a27eef | |
| parent | db88a8e3ca38b840c768e65a3ddb952cf1bf258f (diff) | |
ASoC: atmel-pcm-pdc: Remove broken suspend/resume code
Suspend/resume support for the atmel-pcm-pdc driver was broken in commit
f0fba2ad1 ("ASoC: multi-component - ASoC Multi-Component Support"). It
essentially reverted the modifications done in commit 10cab262 ("ASoC: Change
how suspend and resume obtain the PCM runtime"). The suspend and resume handlers
at the beginning check if dai->runtime is not NULL, but dai->runtime is always
NULL, hence the code never runs. Considering that nobody noticed any problems in
the last 4 years since the code was broken and that the driver does not set
SNDRV_PCM_INFO_RESUME, which means applications are expected to stop and restart
the audio stream during suspend/resume, it is probably safe to assume that his
code is not needed and can be removed.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
| -rw-r--r-- | sound/soc/atmel/atmel-pcm-pdc.c | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/sound/soc/atmel/atmel-pcm-pdc.c b/sound/soc/atmel/atmel-pcm-pdc.c index 33ec592ecd75..a366b3503c28 100644 --- a/sound/soc/atmel/atmel-pcm-pdc.c +++ b/sound/soc/atmel/atmel-pcm-pdc.c | |||
| @@ -76,12 +76,6 @@ struct atmel_runtime_data { | |||
| 76 | size_t period_size; | 76 | size_t period_size; |
| 77 | 77 | ||
| 78 | dma_addr_t period_ptr; /* physical address of next period */ | 78 | dma_addr_t period_ptr; /* physical address of next period */ |
| 79 | |||
| 80 | /* PDC register save */ | ||
| 81 | u32 pdc_xpr_save; | ||
| 82 | u32 pdc_xcr_save; | ||
| 83 | u32 pdc_xnpr_save; | ||
| 84 | u32 pdc_xncr_save; | ||
| 85 | }; | 79 | }; |
| 86 | 80 | ||
| 87 | /*--------------------------------------------------------------------------*\ | 81 | /*--------------------------------------------------------------------------*\ |
| @@ -320,67 +314,10 @@ static struct snd_pcm_ops atmel_pcm_ops = { | |||
| 320 | .mmap = atmel_pcm_mmap, | 314 | .mmap = atmel_pcm_mmap, |
| 321 | }; | 315 | }; |
| 322 | 316 | ||
| 323 | |||
| 324 | /*--------------------------------------------------------------------------*\ | ||
| 325 | * ASoC platform driver | ||
| 326 | \*--------------------------------------------------------------------------*/ | ||
| 327 | #ifdef CONFIG_PM | ||
| 328 | static int atmel_pcm_suspend(struct snd_soc_dai *dai) | ||
| 329 | { | ||
| 330 | struct snd_pcm_runtime *runtime = dai->runtime; | ||
| 331 | struct atmel_runtime_data *prtd; | ||
| 332 | struct atmel_pcm_dma_params *params; | ||
| 333 | |||
| 334 | if (!runtime) | ||
| 335 | return 0; | ||
| 336 | |||
| 337 | prtd = runtime->private_data; | ||
| 338 | params = prtd->params; | ||
| 339 | |||
| 340 | /* disable the PDC and save the PDC registers */ | ||
| 341 | |||
| 342 | ssc_writel(params->ssc->regs, PDC_PTCR, params->mask->pdc_disable); | ||
| 343 | |||
| 344 | prtd->pdc_xpr_save = ssc_readx(params->ssc->regs, params->pdc->xpr); | ||
| 345 | prtd->pdc_xcr_save = ssc_readx(params->ssc->regs, params->pdc->xcr); | ||
| 346 | prtd->pdc_xnpr_save = ssc_readx(params->ssc->regs, params->pdc->xnpr); | ||
| 347 | prtd->pdc_xncr_save = ssc_readx(params->ssc->regs, params->pdc->xncr); | ||
| 348 | |||
| 349 | return 0; | ||
| 350 | } | ||
| 351 | |||
| 352 | static int atmel_pcm_resume(struct snd_soc_dai *dai) | ||
| 353 | { | ||
| 354 | struct snd_pcm_runtime *runtime = dai->runtime; | ||
| 355 | struct atmel_runtime_data *prtd; | ||
| 356 | struct atmel_pcm_dma_params *params; | ||
| 357 | |||
| 358 | if (!runtime) | ||
| 359 | return 0; | ||
| 360 | |||
| 361 | prtd = runtime->private_data; | ||
| 362 | params = prtd->params; | ||
| 363 | |||
| 364 | /* restore the PDC registers and enable the PDC */ | ||
| 365 | ssc_writex(params->ssc->regs, params->pdc->xpr, prtd->pdc_xpr_save); | ||
| 366 | ssc_writex(params->ssc->regs, params->pdc->xcr, prtd->pdc_xcr_save); | ||
| 367 | ssc_writex(params->ssc->regs, params->pdc->xnpr, prtd->pdc_xnpr_save); | ||
| 368 | ssc_writex(params->ssc->regs, params->pdc->xncr, prtd->pdc_xncr_save); | ||
| 369 | |||
| 370 | ssc_writel(params->ssc->regs, PDC_PTCR, params->mask->pdc_enable); | ||
| 371 | return 0; | ||
| 372 | } | ||
| 373 | #else | ||
| 374 | #define atmel_pcm_suspend NULL | ||
| 375 | #define atmel_pcm_resume NULL | ||
| 376 | #endif | ||
| 377 | |||
| 378 | static struct snd_soc_platform_driver atmel_soc_platform = { | 317 | static struct snd_soc_platform_driver atmel_soc_platform = { |
| 379 | .ops = &atmel_pcm_ops, | 318 | .ops = &atmel_pcm_ops, |
| 380 | .pcm_new = atmel_pcm_new, | 319 | .pcm_new = atmel_pcm_new, |
| 381 | .pcm_free = atmel_pcm_free, | 320 | .pcm_free = atmel_pcm_free, |
| 382 | .suspend = atmel_pcm_suspend, | ||
| 383 | .resume = atmel_pcm_resume, | ||
| 384 | }; | 321 | }; |
| 385 | 322 | ||
| 386 | int atmel_pcm_pdc_platform_register(struct device *dev) | 323 | int atmel_pcm_pdc_platform_register(struct device *dev) |
