.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Driver for Atmel AC97C |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright (C) 2005-2009 Atmel Corporation |
---|
5 | | - * |
---|
6 | | - * This program is free software; you can redistribute it and/or modify it |
---|
7 | | - * under the terms of the GNU General Public License version 2 as published by |
---|
8 | | - * the Free Software Foundation. |
---|
9 | 6 | */ |
---|
10 | 7 | #include <linux/clk.h> |
---|
11 | 8 | #include <linux/delay.h> |
---|
.. | .. |
---|
162 | 159 | struct snd_pcm_hw_params *hw_params) |
---|
163 | 160 | { |
---|
164 | 161 | struct atmel_ac97c *chip = snd_pcm_substream_chip(substream); |
---|
165 | | - int retval; |
---|
166 | | - |
---|
167 | | - retval = snd_pcm_lib_malloc_pages(substream, |
---|
168 | | - params_buffer_bytes(hw_params)); |
---|
169 | | - if (retval < 0) |
---|
170 | | - return retval; |
---|
171 | 162 | |
---|
172 | 163 | /* Set restrictions to params. */ |
---|
173 | 164 | mutex_lock(&opened_mutex); |
---|
.. | .. |
---|
175 | 166 | chip->cur_format = params_format(hw_params); |
---|
176 | 167 | mutex_unlock(&opened_mutex); |
---|
177 | 168 | |
---|
178 | | - return retval; |
---|
| 169 | + return 0; |
---|
179 | 170 | } |
---|
180 | 171 | |
---|
181 | 172 | static int atmel_ac97c_capture_hw_params(struct snd_pcm_substream *substream, |
---|
182 | 173 | struct snd_pcm_hw_params *hw_params) |
---|
183 | 174 | { |
---|
184 | 175 | struct atmel_ac97c *chip = snd_pcm_substream_chip(substream); |
---|
185 | | - int retval; |
---|
186 | | - |
---|
187 | | - retval = snd_pcm_lib_malloc_pages(substream, |
---|
188 | | - params_buffer_bytes(hw_params)); |
---|
189 | | - if (retval < 0) |
---|
190 | | - return retval; |
---|
191 | 176 | |
---|
192 | 177 | /* Set restrictions to params. */ |
---|
193 | 178 | mutex_lock(&opened_mutex); |
---|
.. | .. |
---|
195 | 180 | chip->cur_format = params_format(hw_params); |
---|
196 | 181 | mutex_unlock(&opened_mutex); |
---|
197 | 182 | |
---|
198 | | - return retval; |
---|
| 183 | + return 0; |
---|
199 | 184 | } |
---|
200 | 185 | |
---|
201 | 186 | static int atmel_ac97c_playback_prepare(struct snd_pcm_substream *substream) |
---|
.. | .. |
---|
234 | 219 | switch (runtime->format) { |
---|
235 | 220 | case SNDRV_PCM_FORMAT_S16_LE: |
---|
236 | 221 | break; |
---|
237 | | - case SNDRV_PCM_FORMAT_S16_BE: /* fall through */ |
---|
| 222 | + case SNDRV_PCM_FORMAT_S16_BE: |
---|
238 | 223 | word &= ~(AC97C_CMR_CEM_LITTLE); |
---|
239 | 224 | break; |
---|
240 | 225 | default: |
---|
.. | .. |
---|
316 | 301 | switch (runtime->format) { |
---|
317 | 302 | case SNDRV_PCM_FORMAT_S16_LE: |
---|
318 | 303 | break; |
---|
319 | | - case SNDRV_PCM_FORMAT_S16_BE: /* fall through */ |
---|
| 304 | + case SNDRV_PCM_FORMAT_S16_BE: |
---|
320 | 305 | word &= ~(AC97C_CMR_CEM_LITTLE); |
---|
321 | 306 | break; |
---|
322 | 307 | default: |
---|
.. | .. |
---|
371 | 356 | camr = ac97c_readl(chip, CAMR); |
---|
372 | 357 | |
---|
373 | 358 | switch (cmd) { |
---|
374 | | - case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: /* fall through */ |
---|
375 | | - case SNDRV_PCM_TRIGGER_RESUME: /* fall through */ |
---|
| 359 | + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: |
---|
| 360 | + case SNDRV_PCM_TRIGGER_RESUME: |
---|
376 | 361 | case SNDRV_PCM_TRIGGER_START: |
---|
377 | 362 | ptcr = ATMEL_PDC_TXTEN; |
---|
378 | 363 | camr |= AC97C_CMR_CENA | AC97C_CSR_ENDTX; |
---|
379 | 364 | break; |
---|
380 | | - case SNDRV_PCM_TRIGGER_PAUSE_PUSH: /* fall through */ |
---|
381 | | - case SNDRV_PCM_TRIGGER_SUSPEND: /* fall through */ |
---|
| 365 | + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: |
---|
| 366 | + case SNDRV_PCM_TRIGGER_SUSPEND: |
---|
382 | 367 | case SNDRV_PCM_TRIGGER_STOP: |
---|
383 | 368 | ptcr |= ATMEL_PDC_TXTDIS; |
---|
384 | 369 | if (chip->opened <= 1) |
---|
.. | .. |
---|
403 | 388 | ptcr = readl(chip->regs + ATMEL_PDC_PTSR); |
---|
404 | 389 | |
---|
405 | 390 | switch (cmd) { |
---|
406 | | - case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: /* fall through */ |
---|
407 | | - case SNDRV_PCM_TRIGGER_RESUME: /* fall through */ |
---|
| 391 | + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: |
---|
| 392 | + case SNDRV_PCM_TRIGGER_RESUME: |
---|
408 | 393 | case SNDRV_PCM_TRIGGER_START: |
---|
409 | 394 | ptcr = ATMEL_PDC_RXTEN; |
---|
410 | 395 | camr |= AC97C_CMR_CENA | AC97C_CSR_ENDRX; |
---|
411 | 396 | break; |
---|
412 | | - case SNDRV_PCM_TRIGGER_PAUSE_PUSH: /* fall through */ |
---|
413 | | - case SNDRV_PCM_TRIGGER_SUSPEND: /* fall through */ |
---|
| 397 | + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: |
---|
| 398 | + case SNDRV_PCM_TRIGGER_SUSPEND: |
---|
414 | 399 | case SNDRV_PCM_TRIGGER_STOP: |
---|
415 | 400 | ptcr |= ATMEL_PDC_RXTDIS; |
---|
416 | 401 | if (chip->opened <= 1) |
---|
.. | .. |
---|
462 | 447 | static const struct snd_pcm_ops atmel_ac97_playback_ops = { |
---|
463 | 448 | .open = atmel_ac97c_playback_open, |
---|
464 | 449 | .close = atmel_ac97c_playback_close, |
---|
465 | | - .ioctl = snd_pcm_lib_ioctl, |
---|
466 | 450 | .hw_params = atmel_ac97c_playback_hw_params, |
---|
467 | | - .hw_free = snd_pcm_lib_free_pages, |
---|
468 | 451 | .prepare = atmel_ac97c_playback_prepare, |
---|
469 | 452 | .trigger = atmel_ac97c_playback_trigger, |
---|
470 | 453 | .pointer = atmel_ac97c_playback_pointer, |
---|
.. | .. |
---|
473 | 456 | static const struct snd_pcm_ops atmel_ac97_capture_ops = { |
---|
474 | 457 | .open = atmel_ac97c_capture_open, |
---|
475 | 458 | .close = atmel_ac97c_capture_close, |
---|
476 | | - .ioctl = snd_pcm_lib_ioctl, |
---|
477 | 459 | .hw_params = atmel_ac97c_capture_hw_params, |
---|
478 | | - .hw_free = snd_pcm_lib_free_pages, |
---|
479 | 460 | .prepare = atmel_ac97c_capture_prepare, |
---|
480 | 461 | .trigger = atmel_ac97c_capture_trigger, |
---|
481 | 462 | .pointer = atmel_ac97c_capture_pointer, |
---|
.. | .. |
---|
494 | 475 | struct snd_pcm_runtime *runtime; |
---|
495 | 476 | int offset, next_period, block_size; |
---|
496 | 477 | dev_dbg(&chip->pdev->dev, "channel A event%s%s%s%s%s%s\n", |
---|
497 | | - casr & AC97C_CSR_OVRUN ? " OVRUN" : "", |
---|
498 | | - casr & AC97C_CSR_RXRDY ? " RXRDY" : "", |
---|
499 | | - casr & AC97C_CSR_UNRUN ? " UNRUN" : "", |
---|
500 | | - casr & AC97C_CSR_TXEMPTY ? " TXEMPTY" : "", |
---|
501 | | - casr & AC97C_CSR_TXRDY ? " TXRDY" : "", |
---|
502 | | - !casr ? " NONE" : ""); |
---|
| 478 | + (casr & AC97C_CSR_OVRUN) ? " OVRUN" : "", |
---|
| 479 | + (casr & AC97C_CSR_RXRDY) ? " RXRDY" : "", |
---|
| 480 | + (casr & AC97C_CSR_UNRUN) ? " UNRUN" : "", |
---|
| 481 | + (casr & AC97C_CSR_TXEMPTY) ? " TXEMPTY" : "", |
---|
| 482 | + (casr & AC97C_CSR_TXRDY) ? " TXRDY" : "", |
---|
| 483 | + !casr ? " NONE" : ""); |
---|
503 | 484 | if ((casr & camr) & AC97C_CSR_ENDTX) { |
---|
504 | 485 | runtime = chip->playback_substream->runtime; |
---|
505 | 486 | block_size = frames_to_bytes(runtime, runtime->period_size); |
---|
.. | .. |
---|
540 | 521 | |
---|
541 | 522 | if (sr & AC97C_SR_COEVT) { |
---|
542 | 523 | dev_info(&chip->pdev->dev, "codec channel event%s%s%s%s%s\n", |
---|
543 | | - cosr & AC97C_CSR_OVRUN ? " OVRUN" : "", |
---|
544 | | - cosr & AC97C_CSR_RXRDY ? " RXRDY" : "", |
---|
545 | | - cosr & AC97C_CSR_TXEMPTY ? " TXEMPTY" : "", |
---|
546 | | - cosr & AC97C_CSR_TXRDY ? " TXRDY" : "", |
---|
547 | | - !cosr ? " NONE" : ""); |
---|
| 524 | + (cosr & AC97C_CSR_OVRUN) ? " OVRUN" : "", |
---|
| 525 | + (cosr & AC97C_CSR_RXRDY) ? " RXRDY" : "", |
---|
| 526 | + (cosr & AC97C_CSR_TXEMPTY) ? " TXEMPTY" : "", |
---|
| 527 | + (cosr & AC97C_CSR_TXRDY) ? " TXRDY" : "", |
---|
| 528 | + !cosr ? " NONE" : ""); |
---|
548 | 529 | retval = IRQ_HANDLED; |
---|
549 | 530 | } |
---|
550 | 531 | |
---|
.. | .. |
---|
603 | 584 | snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &atmel_ac97_capture_ops); |
---|
604 | 585 | snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &atmel_ac97_playback_ops); |
---|
605 | 586 | |
---|
606 | | - retval = snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, |
---|
| 587 | + snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV, |
---|
607 | 588 | &chip->pdev->dev, hw.periods_min * hw.period_bytes_min, |
---|
608 | 589 | hw.buffer_bytes_max); |
---|
609 | | - if (retval) |
---|
610 | | - return retval; |
---|
611 | 590 | |
---|
612 | 591 | pcm->private_data = chip; |
---|
613 | 592 | pcm->info_flags = 0; |
---|
.. | .. |
---|
723 | 702 | struct atmel_ac97c *chip; |
---|
724 | 703 | struct resource *regs; |
---|
725 | 704 | struct clk *pclk; |
---|
726 | | - static struct snd_ac97_bus_ops ops = { |
---|
| 705 | + static const struct snd_ac97_bus_ops ops = { |
---|
727 | 706 | .write = atmel_ac97c_write, |
---|
728 | 707 | .read = atmel_ac97c_read, |
---|
729 | 708 | }; |
---|