cx25821-audio.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * Driver for the Conexant CX25821 PCIe bridge
  3. *
  4. * Copyright (C) 2009 Conexant Systems Inc.
  5. * Authors <shu.lin@conexant.com>, <hiep.huynh@conexant.com>
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 2 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. *
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21. */
  22. #ifndef __CX25821_AUDIO_H__
  23. #define __CX25821_AUDIO_H__
  24. #define USE_RISC_NOOP 1
  25. #define LINES_PER_BUFFER 15
  26. #define AUDIO_LINE_SIZE 128
  27. /* Number of buffer programs to use at once. */
  28. #define NUMBER_OF_PROGRAMS 8
  29. /*
  30. * Max size of the RISC program for a buffer. - worst case is 2 writes per line
  31. * Space is also added for the 4 no-op instructions added on the end.
  32. */
  33. #ifndef USE_RISC_NOOP
  34. #define MAX_BUFFER_PROGRAM_SIZE \
  35. (2 * LINES_PER_BUFFER * RISC_WRITE_INSTRUCTION_SIZE + \
  36. RISC_WRITECR_INSTRUCTION_SIZE * 4)
  37. #endif
  38. /* MAE 12 July 2005 Try to use NOOP RISC instruction instead */
  39. #ifdef USE_RISC_NOOP
  40. #define MAX_BUFFER_PROGRAM_SIZE \
  41. (2 * LINES_PER_BUFFER * RISC_WRITE_INSTRUCTION_SIZE + \
  42. RISC_NOOP_INSTRUCTION_SIZE * 4)
  43. #endif
  44. /* Sizes of various instructions in bytes. Used when adding instructions. */
  45. #define RISC_WRITE_INSTRUCTION_SIZE 12
  46. #define RISC_JUMP_INSTRUCTION_SIZE 12
  47. #define RISC_SKIP_INSTRUCTION_SIZE 4
  48. #define RISC_SYNC_INSTRUCTION_SIZE 4
  49. #define RISC_WRITECR_INSTRUCTION_SIZE 16
  50. #define RISC_NOOP_INSTRUCTION_SIZE 4
  51. #define MAX_AUDIO_DMA_BUFFER_SIZE \
  52. (MAX_BUFFER_PROGRAM_SIZE * NUMBER_OF_PROGRAMS + \
  53. RISC_SYNC_INSTRUCTION_SIZE)
  54. #endif