AudDrv_BTCVSD.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. #ifndef AUDDRV_BTCVSD_H
  2. #define AUDDRV_BTCVSD_H
  3. #include <linux/types.h>
  4. #include "AudioBTCVSDDef.h"
  5. #undef DEBUG_AUDDRV
  6. #ifdef DEBUG_AUDDRV
  7. #define PRINTK_AUDDRV(format, args...) pr_debug(format, ##args)
  8. #else
  9. #define PRINTK_AUDDRV(format, args...)
  10. #endif
  11. /*****************************************************************************
  12. * C O M P I L E R F L A G S
  13. *****************************************************************************/
  14. /*****************************************************************************
  15. * E X T E R N A L R E F E R E N C E S
  16. *****************************************************************************/
  17. /*****************************************************************************
  18. * D A T A T Y P E S
  19. *****************************************************************************/
  20. typedef uint8_t kal_uint8;
  21. typedef int8_t kal_int8;
  22. typedef uint16_t kal_uint16;
  23. typedef uint32_t kal_uint32;
  24. typedef int32_t kal_int32;
  25. typedef uint64_t kal_uint64;
  26. typedef int64_t kal_int64;
  27. typedef bool kal_bool;
  28. typedef enum {
  29. BT_SCO_TXSTATE_IDLE = 0x0,
  30. BT_SCO_TXSTATE_INIT,
  31. BT_SCO_TXSTATE_READY,
  32. BT_SCO_TXSTATE_RUNNING,
  33. BT_SCO_TXSTATE_ENDING,
  34. BT_SCO_RXSTATE_IDLE = 0x10,
  35. BT_SCO_RXSTATE_INIT,
  36. BT_SCO_RXSTATE_READY,
  37. BT_SCO_RXSTATE_RUNNING,
  38. BT_SCO_RXSTATE_ENDING,
  39. BT_SCO_TXSTATE_DIRECT_LOOPBACK
  40. } CVSD_STATE;
  41. typedef enum {
  42. BT_SCO_DIRECT_BT2ARM,
  43. BT_SCO_DIRECT_ARM2BT
  44. } BT_SCO_DIRECT;
  45. typedef enum {
  46. BT_SCO_CVSD_30 = 0,
  47. BT_SCO_CVSD_60 = 1,
  48. BT_SCO_CVSD_90 = 2,
  49. BT_SCO_CVSD_120 = 3,
  50. BT_SCO_CVSD_10 = 4,
  51. BT_SCO_CVSD_20 = 5,
  52. BT_SCO_CVSD_MAX = 6
  53. } BT_SCO_PACKET_LEN;
  54. typedef struct {
  55. dma_addr_t pucTXPhysBufAddr;
  56. dma_addr_t pucRXPhysBufAddr;
  57. kal_uint8 *pucTXVirtBufAddr;
  58. kal_uint8 *pucRXVirtBufAddr;
  59. kal_int32 u4TXBufferSize;
  60. kal_int32 u4RXBufferSize;
  61. } CVSD_MEMBLOCK_T;
  62. typedef struct {
  63. kal_uint8 PacketBuf[SCO_RX_PACKER_BUF_NUM][SCO_RX_PLC_SIZE + BTSCO_CVSD_PACKET_VALID_SIZE];
  64. kal_bool PacketValid[SCO_RX_PACKER_BUF_NUM];
  65. int iPacket_w;
  66. int iPacket_r;
  67. kal_uint8 TempPacketBuf[BT_SCO_PACKET_180];
  68. kal_bool fOverflow;
  69. kal_uint32 u4BufferSize; /*RX packetbuf size*/
  70. } BT_SCO_RX_T;
  71. typedef struct {
  72. kal_uint8 PacketBuf[SCO_TX_PACKER_BUF_NUM][SCO_TX_ENCODE_SIZE];
  73. kal_int32 iPacket_w;
  74. kal_int32 iPacket_r;
  75. kal_uint8 TempPacketBuf[BT_SCO_PACKET_180];
  76. kal_bool fUnderflow;
  77. kal_uint32 u4BufferSize; /*TX packetbuf size*/
  78. } BT_SCO_TX_T;
  79. CVSD_MEMBLOCK_T BT_CVSD_Mem;
  80. /* here is temp address for ioremap BT hardware register */
  81. void *BTSYS_PKV_BASE_ADDRESS = 0;
  82. void *BTSYS_SRAM_BANK2_BASE_ADDRESS = 0;
  83. void *AUDIO_INFRA_BASE_VIRTUAL = 0;
  84. #ifdef CONFIG_OF
  85. unsigned long btsys_pkv_physical_base = 0;
  86. unsigned long btsys_sram_bank2_physical_base = 0;
  87. unsigned long infra_base = 0;
  88. /* INFRA_MISC address=AUDIO_INFRA_BASE_PHYSICAL + INFRA_MISC_OFFSET */
  89. unsigned long infra_misc_offset = 0;
  90. /* bit 11 of INFRA_MISC */
  91. unsigned long conn_bt_cvsd_mask = 0;
  92. /* BTSYS_PKV_BASE_ADDRESS+cvsd_mcu_read_offset */
  93. unsigned long cvsd_mcu_read_offset = 0;
  94. /* BTSYS_PKV_BASE_ADDRESS+cvsd_mcu_write_offset */
  95. unsigned long cvsd_mcu_write_offset = 0;
  96. /* BTSYS_PKV_BASE_ADDRESS+cvsd_packet_indicator */
  97. unsigned long cvsd_packet_indicator = 0;
  98. #else
  99. #define AUDIO_BTSYS_PKV_PHYSICAL_BASE (0x18000000)
  100. #define AUDIO_BTSYS_SRAM_BANK2_PHYSICAL_BASE (0x18080000)
  101. #define AUDIO_INFRA_BASE_PHYSICAL (0x10000000)
  102. /* INFRA_MISC address=AUDIO_INFRA_BASE_PHYSICAL + INFRA_MISC_OFFSET */
  103. #define INFRA_MISC_OFFSET (0x0700)
  104. /* bit 11 of INFRA_MISC */
  105. #define conn_bt_cvsd_mask (0x00000800)
  106. #define CVSD_MCU_READ_OFFSET (0xFD0)
  107. #define CVSD_MCU_WRITE_OFFSET (0xFD4)
  108. #define CVSD_PACKET_INDICATOR (0xFD8)
  109. #endif
  110. #define AP_BT_CVSD_IRQ_LINE (260)
  111. u32 btcvsd_irq_number = AP_BT_CVSD_IRQ_LINE;
  112. #endif