AudDrv_Common.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /******************************************************************************
  2. *
  3. *
  4. * Filename:
  5. * ---------
  6. * AudDrv_Common.h
  7. *
  8. * Project:
  9. * --------
  10. * MT6583 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 <mt-plat/sync_write.h>
  43. #include <mt-plat/upmu_common.h>
  44. /*#include <linux/xlog.h>*/
  45. /*#include <mach/mt_typedefs.h>*/
  46. #include <linux/types.h>
  47. #include "AudDrv_Def.h"
  48. #ifndef CONFIG_MTK_CLKMGR
  49. #include <linux/clk.h>
  50. #else
  51. #include <mach/mt_clkmgr.h>
  52. #endif
  53. #define DL_ABNORMAL_CONTROL_MAX (5)
  54. typedef uint8_t kal_uint8;
  55. typedef int8_t kal_int8;
  56. typedef uint32_t kal_uint32;
  57. typedef int32_t kal_int32;
  58. typedef uint64_t kal_uint64;
  59. typedef int64_t kal_int64;
  60. typedef struct {
  61. kal_uint32 pucPhysBufAddr;
  62. kal_uint8 *pucVirtBufAddr;
  63. kal_int32 u4BufferSize;
  64. kal_int32 u4DataRemained;
  65. kal_uint32 u4SampleNumMask; /* sample number mask */
  66. kal_uint32 u4SamplesPerInt; /* number of samples to play before interrupting */
  67. kal_int32 u4WriteIdx; /* Previous Write Index. */
  68. kal_int32 u4DMAReadIdx; /* Previous DMA Read Index. */
  69. kal_uint32 u4MaxCopySize;
  70. kal_uint32 u4fsyncflag;
  71. kal_uint32 uResetFlag;
  72. } AFE_BLOCK_T;
  73. typedef struct substreamList {
  74. struct snd_pcm_substream *substream;
  75. volatile kal_uint32 u4MaxCopySize;
  76. struct substreamList *next;
  77. } substreamList;
  78. typedef struct {
  79. struct file *flip;
  80. substreamList *substreamL;
  81. AFE_BLOCK_T rBlock;
  82. kal_uint32 MemIfNum;
  83. bool interruptTrigger;
  84. spinlock_t substream_lock;
  85. void (*offloadCbk)(void *stream);
  86. void *offloadstream;
  87. } AFE_MEM_CONTROL_T;
  88. struct pcm_afe_info {
  89. struct AFE_BLOCK_T *mAfeBlock;
  90. struct snd_pcm_substream *substream;
  91. };
  92. typedef struct {
  93. kal_int32 u4BufferSize[DL_ABNORMAL_CONTROL_MAX];
  94. kal_int32 u4DataRemained[DL_ABNORMAL_CONTROL_MAX];
  95. kal_int32 u4WriteIdx[DL_ABNORMAL_CONTROL_MAX]; /* Previous Write Index. */
  96. kal_int32 u4DMAReadIdx[DL_ABNORMAL_CONTROL_MAX]; /* Previous DMA Read Index. */
  97. kal_int32 u4ConsumedBytes[DL_ABNORMAL_CONTROL_MAX];
  98. kal_int32 u4HwMemoryIndex[DL_ABNORMAL_CONTROL_MAX];
  99. kal_int32 pucPhysBufAddr[DL_ABNORMAL_CONTROL_MAX];
  100. kal_int32 u4UnderflowCnt;
  101. kal_uint32 MemIfNum[DL_ABNORMAL_CONTROL_MAX];
  102. unsigned long long IrqLastTimeNs[DL_ABNORMAL_CONTROL_MAX];
  103. unsigned long long IrqCurrentTimeNs[DL_ABNORMAL_CONTROL_MAX];
  104. unsigned long long IrqIntervalNs[DL_ABNORMAL_CONTROL_MAX];
  105. kal_uint32 IrqIntervalLimitMs[DL_ABNORMAL_CONTROL_MAX];
  106. bool IrqDelayCnt;
  107. } AFE_DL_ABNORMAL_CONTROL_T;
  108. #endif