AudDrv_Common.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /******************************************************************************
  2. *
  3. *
  4. * Filename:
  5. * ---------
  6. * AudDrv_Common.h
  7. *
  8. * Project:
  9. * --------
  10. * MT6797 FPGA LDVT Audio Driver
  11. *
  12. * Description:
  13. * ------------
  14. * Audio register
  15. *
  16. * Author:
  17. * -------
  18. * Chipeng Chang (MTK02308)
  19. *
  20. *---------------------------------------------------------------------------
  21. ---
  22. *
  23. *
  24. *******************************************************************************/
  25. #ifndef AUDIO_GLOBAL_H
  26. #define AUDIO_GLOBAL_H
  27. #include <linux/kernel.h>
  28. #include <linux/module.h>
  29. #include <linux/slab.h>
  30. #include <linux/fs.h>
  31. #include <linux/mm.h>
  32. #include <linux/delay.h>
  33. #include <linux/vmalloc.h>
  34. #include <linux/wait.h>
  35. #include <linux/spinlock.h>
  36. #include <linux/sched.h>
  37. #include <linux/jiffies.h>
  38. #include <linux/string.h>
  39. #include <linux/mutex.h>
  40. #include <linux/time.h>
  41. #include <linux/timer.h>
  42. #include <mach/irqs.h>
  43. #include <mt-plat/sync_write.h>
  44. /*#include <linux/xlog.h>*/
  45. /*#include <mach/mt_typedefs.h>*/
  46. #include <linux/types.h>
  47. #include "AudDrv_Def.h"
  48. #include <linux/clk.h>
  49. /* TODO: KC: don't declare unnecessary typdef, just use it */
  50. #define DL_ABNORMAL_CONTROL_MAX (5)
  51. typedef uint8_t kal_uint8;
  52. typedef int8_t kal_int8;
  53. typedef uint32_t kal_uint32;
  54. typedef int32_t kal_int32;
  55. typedef uint64_t kal_uint64;
  56. typedef int64_t kal_int64;
  57. typedef struct {
  58. kal_uint32 pucPhysBufAddr;
  59. kal_uint8 *pucVirtBufAddr;
  60. kal_int32 u4BufferSize;
  61. kal_int32 u4DataRemained;
  62. kal_uint32 u4SampleNumMask; /* sample number mask */
  63. kal_uint32 u4SamplesPerInt; /* number of samples to play before interrupting */
  64. kal_int32 u4WriteIdx; /* Previous Write Index. */
  65. kal_int32 u4DMAReadIdx; /* Previous DMA Read Index. */
  66. kal_uint32 u4MaxCopySize;
  67. kal_uint32 u4fsyncflag;
  68. kal_uint32 uResetFlag;
  69. } AFE_BLOCK_T;
  70. typedef struct substreamList {
  71. struct snd_pcm_substream *substream;
  72. volatile kal_uint32 u4MaxCopySize;
  73. struct substreamList *next;
  74. } substreamList;
  75. typedef struct {
  76. struct file *flip;
  77. substreamList *substreamL;
  78. AFE_BLOCK_T rBlock;
  79. kal_uint32 MemIfNum;
  80. bool interruptTrigger;
  81. spinlock_t substream_lock;
  82. void (*offloadCbk)(void *stream);
  83. void *offloadstream;
  84. } AFE_MEM_CONTROL_T;
  85. struct pcm_afe_info {
  86. struct AFE_BLOCK_T *mAfeBlock;
  87. struct snd_pcm_substream *substream;
  88. };
  89. typedef struct {
  90. kal_int32 u4BufferSize[DL_ABNORMAL_CONTROL_MAX];
  91. kal_int32 u4DataRemained[DL_ABNORMAL_CONTROL_MAX];
  92. kal_int32 u4WriteIdx[DL_ABNORMAL_CONTROL_MAX]; /* Previous Write Index. */
  93. kal_int32 u4DMAReadIdx[DL_ABNORMAL_CONTROL_MAX]; /* Previous DMA Read Index. */
  94. kal_int32 u4ConsumedBytes[DL_ABNORMAL_CONTROL_MAX];
  95. kal_int32 u4HwMemoryIndex[DL_ABNORMAL_CONTROL_MAX];
  96. kal_int32 pucPhysBufAddr[DL_ABNORMAL_CONTROL_MAX];
  97. kal_int32 u4UnderflowCnt;
  98. kal_uint32 MemIfNum[DL_ABNORMAL_CONTROL_MAX];
  99. unsigned long long IrqLastTimeNs[DL_ABNORMAL_CONTROL_MAX];
  100. unsigned long long IrqCurrentTimeNs[DL_ABNORMAL_CONTROL_MAX];
  101. unsigned long long IrqIntervalNs[DL_ABNORMAL_CONTROL_MAX];
  102. kal_uint32 IrqIntervalLimitMs[DL_ABNORMAL_CONTROL_MAX];
  103. bool IrqDelayCnt;
  104. } AFE_DL_ABNORMAL_CONTROL_T;
  105. #endif