ark_i2s.h 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. * ark_i2s.h
  3. *
  4. */
  5. #ifndef __ARK_I2S_H
  6. #define __ARK_I2S_H
  7. /*
  8. * I2S Controller Register and Bit Definitions
  9. */
  10. #define I2S_SACR0 0x00 /* Global Control Register */
  11. #define I2S_SACR1 0x04 /* Serial Audio I 2 S/MSB-Justified Control Register */
  12. #define I2S_DACR0 0x08 /* Volume Control Register 0 */
  13. #define I2S_DACR1 0x10 /* Volume Control Register 1 */
  14. #define I2S_SASR0 0x0C /* Serial Audio I 2 S/MSB-Justified Interface and FIFO Status Register */
  15. #define I2S_SAIMR 0x14 /* Serial Audio Interrupt Mask Register */
  16. #define I2S_SAICR 0x18 /* Serial Audio Interrupt Clear Register */
  17. #define I2S_ADCR0 0x1C /* ADC Contol Register */
  18. #define I2S_SADR 0x80 /* Serial Audio Data Register (TX and RX FIFO access Register). */
  19. #define SACR0_VREF_VOLSEL (1 << 28) /* Sel VREF Voltage 0:3.3v 1:2.2v */
  20. #define SACR0_ADC_VOLSET (1 << 27) /* Sel ADC PGA op commond voltage 0:��.5v 1:1.65v */
  21. #define SACR0_MIC_LINE_SEL (1 << 26) /* Select micin or linein */
  22. #define SACR0_SDRADC_POWEN (1 << 25) /* SARADC power Enable */
  23. #define SACR0_DATA_SEL (1 << 24) /* Select external i2s data or sdradc data */
  24. #define SACR0_SARADC_DIS (1 << 23) /* SARADC Disable */
  25. #define SACR0_DAC_PD (1 << 22) /* DAC Power down */
  26. #define SACR0_VREF_PD (1 << 21) /* VREF Power down */
  27. #define SACR0_RFTH_MASK (0x1F << 16)
  28. #define SACR0_RFTH(x) ((x) << 16) /* Rx FIFO Interrupt or DMA Trigger Threshold */
  29. #define SACR0_TFTH(x) ((x) << 8) /* Tx FIFO Interrupt or DMA Trigger Threshold */
  30. #define SACR0_STRF (1 << 7) /* DAC output clk edge select */
  31. #define SACR0_RDMAEN (1 << 6) /* RX DMA Enable */
  32. #define SACR0_ENLBF (1 << 5) /* Enable Loopback */
  33. #define SACR0_RST (1 << 4) /* FIFO, i2s Register Reset */
  34. #define SACR0_TDMAEN (1 << 3) /* TX DMA Enable */
  35. #define SACR0_BCKD (1 << 2) /* Bit Clock Direction */
  36. #define SACR0_SYNCD (1 << 1) /* Wprd Select Clock Direction */
  37. #define SACR0_ENB (1 << 0) /* Enable I2S Link */
  38. #define SACR1_DRPL (1 << 1) /* Disable Replaying Function */
  39. #define SACR1_DREC (1 << 0) /* Disable Recording Function */
  40. #define DACR0_LVOL_MASK (0x7f << 0)
  41. #define DACR0_LVOL(x) (((x) & 0x7f) << 0) /* Lefit Channel Volume */
  42. #define DACR0_RVOL_MASK (0x7f << 8)
  43. #define DACR0_RVOL(x) (((x) & 0x7f) << 8) /* Right Channel Volume */
  44. #define SASR0_RFL(x) ((x) << 16) /* Rx FIFO Level */
  45. #define SASR0_TFL(x) ((x) << 8) /* Tx FIFO Level */
  46. #define SASR0_ROR (1 << 6) /* Rx FIFO Overrun */
  47. #define SASR0_TUR (1 << 5) /* Tx FIFO Underrun */
  48. #define SASR0_RFS (1 << 4) /* Rx FIFO Service Request */
  49. #define SASR0_TFS (1 << 3) /* Tx FIFO Service Request */
  50. #define SASR0_BSY (1 << 2) /* I2S Busy */
  51. #define SASR0_RNE (1 << 1) /* Rx FIFO Not Empty */
  52. #define SASR0_TNF (1 << 0) /* Tx FIFO Not Full */
  53. #define SAICR_ROR (1 << 6) /* Clear Rx FIFO Overrun Interrupt */
  54. #define SAICR_TUR (1 << 5) /* Clear Tx FIFO Underrun Interrupt */
  55. #define SAICR_RFS (1 << 4) /* Clear Rx FIFO Service Interrupt */
  56. #define SAICR_TFS (1 << 3) /* Clear Tx FIFO Service Interrupt */
  57. #define SAIMR_ROR (1 << 6) /* Enable Rx FIFO Overrun Condition Interrupt */
  58. #define SAIMR_TUR (1 << 5) /* Enable Tx FIFO Underrun Condition Interrupt */
  59. #define SAIMR_RFS (1 << 4) /* Enable Rx FIFO Service Interrupt */
  60. #define SAIMR_TFS (1 << 3) /* Enable Tx FIFO Service Interrupt */
  61. #define ADCR0_LVOL_MASK (0xf << 0)
  62. #define ADCR0_LVOL(x) (((x) & 0xf) << 0) /* Lefit Channel Volume */
  63. #define ADCR0_RVOL_MASK (0xf << 4)
  64. #define ADCR0_RVOL(x) (((x) & 0xf) << 4) /* Right Channel Volume */
  65. #define ADCR0_LFS_MASK (0x3 << 9) /* Left Filter Sel Mask */
  66. #define ADCR0_RFS_MASK (0x3 << 11) /* Right Filter Sel Mask */
  67. #define ADCR0_LFS_1P4 (0 << 9) /* 1/4 sample rate filter */
  68. #define ADCR0_LFS_1P2 (1 << 9) /* 1/2 sample rate filter */
  69. #define ADCR0_LFS_1P8 (2 << 9) /* 1/8 sample rate filter */
  70. #define ADCR0_LFS_1 (3 << 9) /* bypass */
  71. #define ADCR0_RFS_1P4 (0 << 11) /* 1/4 sample rate filter */
  72. #define ADCR0_RFS_1P2 (1 << 11) /* 1/2 sample rate filter */
  73. #define ADCR0_RFS_1P8 (2 << 11) /* 1/8 sample rate filter */
  74. #define ADCR0_RFS_1 (3 << 11) /* bypass */
  75. #define ADCR0_LME (1 << 14) /* Left Channel mic enhance */
  76. #define ADCR0_RME (1 << 15) /* Right Channel mic enhance */
  77. #endif