pl041.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /*
  2. * Arm PrimeCell PL041 Advanced Audio Codec Interface
  3. *
  4. * Copyright (c) 2011
  5. * Written by Mathieu Sonet - www.elasticsheep.com
  6. *
  7. * This code is licensed under the GPL.
  8. *
  9. * *****************************************************************
  10. */
  11. #ifndef HW_PL041_H
  12. #define HW_PL041_H
  13. /* Register file */
  14. #define REGISTER(name, offset) uint32_t name;
  15. typedef struct {
  16. #include "pl041.hx"
  17. } pl041_regfile;
  18. #undef REGISTER
  19. /* Register addresses */
  20. #define REGISTER(name, offset) PL041_##name = offset,
  21. enum {
  22. #include "pl041.hx"
  23. PL041_periphid0 = 0xFE0,
  24. PL041_periphid1 = 0xFE4,
  25. PL041_periphid2 = 0xFE8,
  26. PL041_periphid3 = 0xFEC,
  27. PL041_pcellid0 = 0xFF0,
  28. PL041_pcellid1 = 0xFF4,
  29. PL041_pcellid2 = 0xFF8,
  30. PL041_pcellid3 = 0xFFC,
  31. };
  32. #undef REGISTER
  33. /* Register bits */
  34. /* IEx */
  35. #define TXCIE (1 << 0)
  36. #define RXTIE (1 << 1)
  37. #define TXIE (1 << 2)
  38. #define RXIE (1 << 3)
  39. #define RXOIE (1 << 4)
  40. #define TXUIE (1 << 5)
  41. #define RXTOIE (1 << 6)
  42. /* TXCRx */
  43. #define TXEN (1 << 0)
  44. #define TXSLOT1 (1 << 1)
  45. #define TXSLOT2 (1 << 2)
  46. #define TXSLOT3 (1 << 3)
  47. #define TXSLOT4 (1 << 4)
  48. #define TXCOMPACT (1 << 15)
  49. #define TXFEN (1 << 16)
  50. #define TXSLOT_MASK_BIT (1)
  51. #define TXSLOT_MASK (0xFFF << TXSLOT_MASK_BIT)
  52. #define TSIZE_MASK_BIT (13)
  53. #define TSIZE_MASK (0x3 << TSIZE_MASK_BIT)
  54. #define TSIZE_16BITS (0x0 << TSIZE_MASK_BIT)
  55. #define TSIZE_18BITS (0x1 << TSIZE_MASK_BIT)
  56. #define TSIZE_20BITS (0x2 << TSIZE_MASK_BIT)
  57. #define TSIZE_12BITS (0x3 << TSIZE_MASK_BIT)
  58. /* SRx */
  59. #define RXFE (1 << 0)
  60. #define TXFE (1 << 1)
  61. #define RXHF (1 << 2)
  62. #define TXHE (1 << 3)
  63. #define RXFF (1 << 4)
  64. #define TXFF (1 << 5)
  65. #define RXBUSY (1 << 6)
  66. #define TXBUSY (1 << 7)
  67. #define RXOVERRUN (1 << 8)
  68. #define TXUNDERRUN (1 << 9)
  69. #define RXTIMEOUT (1 << 10)
  70. #define RXTOFE (1 << 11)
  71. /* ISRx */
  72. #define TXCINTR (1 << 0)
  73. #define RXTOINTR (1 << 1)
  74. #define TXINTR (1 << 2)
  75. #define RXINTR (1 << 3)
  76. #define ORINTR (1 << 4)
  77. #define URINTR (1 << 5)
  78. #define RXTOFEINTR (1 << 6)
  79. /* SLFR */
  80. #define SL1RXBUSY (1 << 0)
  81. #define SL1TXBUSY (1 << 1)
  82. #define SL2RXBUSY (1 << 2)
  83. #define SL2TXBUSY (1 << 3)
  84. #define SL12RXBUSY (1 << 4)
  85. #define SL12TXBUSY (1 << 5)
  86. #define SL1RXVALID (1 << 6)
  87. #define SL1TXEMPTY (1 << 7)
  88. #define SL2RXVALID (1 << 8)
  89. #define SL2TXEMPTY (1 << 9)
  90. #define SL12RXVALID (1 << 10)
  91. #define SL12TXEMPTY (1 << 11)
  92. #define RAWGPIOINT (1 << 12)
  93. #define RWIS (1 << 13)
  94. /* MAINCR */
  95. #define AACIFE (1 << 0)
  96. #define LOOPBACK (1 << 1)
  97. #define LOWPOWER (1 << 2)
  98. #define SL1RXEN (1 << 3)
  99. #define SL1TXEN (1 << 4)
  100. #define SL2RXEN (1 << 5)
  101. #define SL2TXEN (1 << 6)
  102. #define SL12RXEN (1 << 7)
  103. #define SL12TXEN (1 << 8)
  104. #define DMAENABLE (1 << 9)
  105. /* INTCLR */
  106. #define WISC (1 << 0)
  107. #define RXOEC1 (1 << 1)
  108. #define RXOEC2 (1 << 2)
  109. #define RXOEC3 (1 << 3)
  110. #define RXOEC4 (1 << 4)
  111. #define TXUEC1 (1 << 5)
  112. #define TXUEC2 (1 << 6)
  113. #define TXUEC3 (1 << 7)
  114. #define TXUEC4 (1 << 8)
  115. #define RXTOFEC1 (1 << 9)
  116. #define RXTOFEC2 (1 << 10)
  117. #define RXTOFEC3 (1 << 11)
  118. #define RXTOFEC4 (1 << 12)
  119. #endif /* HW_PL041_H */