drv_debug.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. #ifndef _DRV_DEBUG_H_
  2. #define _DRV_DEBUG_H_
  3. /*
  4. * Macros to help debugging
  5. */
  6. #include <drv_dev.h>
  7. #include "drv_spi_flashalloc_external.h"
  8. // part I: debug message
  9. #define DBGCONFIG1ADDR 0xa0000010
  10. #define DBGCONFIG2ADDR 0xa0000014
  11. // pdbgconf1 Flags
  12. #define DBGCFG_VIP (1 << MODULEID_VIP) // 0x1
  13. #define DBGCFG_MPEG (1 << MODULEID_MPEG) // 0x2
  14. #define DBGCFG_CVD2 (1 << MODULEID_CVD2) // 0x4
  15. #define DBGCFG_ADC (1 << MODULEID_ADC) // 0x8
  16. #define DBGCFG_HDMI (1 << MODULEID_HDMI) // 0x10
  17. #define DBGCFG_AUDIO (1 << MODULEID_AUDIO) // 0x20
  18. #define DBGCFG_BLT (1 << MODULEID_BLT) // 0x40 // not used. reserved.
  19. #define DBGCFG_OSDLIB (1 << MODULEID_OSDLIB) // 0x80 // not used. reserved.
  20. #define DBGCFG_TUNER (1 << MODULEID_TUNER) // 0x100
  21. #define DBGCFG_KMF (1 << MODULEID_KMF) // 0x200
  22. #define DBGCFG_UMF (1 << MODULEID_UMF) // 0x400
  23. #define DBGCFG_MENU (1 << MODULEID_MENU) // 0x800 // not used. reserved.
  24. #define DBGCFG_DEMUX (1 << MODULEID_DEMUX) // 0x1000 // not used. reserved.
  25. #define DBGCFG_PSI (1 << MODULEID_PSI) // 0x2000
  26. #define DBGCFG_EPG (1 << MODULEID_EPG) // 0x4000 // not used. reserved.
  27. #define DBGCFG_SUBTITLE (1 << MODULEID_SUBTITLE) // 0x8000 // not used. reserved.
  28. #define DBGCFG_ATVCC (1 << MODULEID_ATVCC) // 0x10000
  29. #define DBGCFG_DTVCC (1 << MODULEID_DTVCC) // 0x20000
  30. #define DBGCFG_TTSLICER (1 << MODULEID_TTSLICER) // 0x40000
  31. #define DBGCFG_TTDECODER (1 << MODULEID_TTDECORDER) // 0x80000
  32. #define DBGCFG_JPEG (1 << MODULEID_JPEG) // 0x100000 // not used. reserved.
  33. #define DBGCFG_USB (1 << MODULEID_USB) // 0x200000 // used for usb
  34. #define DBGCFG_IR (1 << MODULEID_IR) // 0x400000
  35. #define DBGCFG_KEYPAD (1 << MODULEID_KEYPAD) // 0x800000
  36. #define DBGCFG_SPI (1 << MODULEID_SPI) // 0x1000000
  37. #define DBGCFG_I2C (1 << MODULEID_I2C) // 0x2000000
  38. #define DBGCFG_EDID (1 << MODULEID_EDID) // 0x4000000
  39. #define DBGCFG_GPIO (1 << MODULEID_GPIO) // 0x8000000
  40. #define DBGCFG_LE (1 << MODULEID_LE) // 0x10000000 // not used. reserved.
  41. #define DBGCFG_CEC (1 << MODULEID_CEC) // 0x20000000
  42. #define DBGCFG_VBV (1 << MODULEID_VBV) // 0x40000000 // used for runav log.
  43. #define DBGCFG_CI (1 << MODULEID_CI) // 0x80000000
  44. //~ end of pdbgconf1 Flags
  45. // pdbgconf2 Flags
  46. #define DBGCFG_MP3 ( 1 << (MODULEID_MP3% 32) ) // 0x1 // not used. reserved.
  47. #define DBGCFG_CECSWITCH ( 1 << (MODULEID_CECSWITCH % 32) ) // 0x2
  48. #define DBGCFG_PVR ( 1 << (MODULEID_PVR % 32) ) // 0x4
  49. #define DBGCFG_DVBEUMIDDLEWARE ( 1 << (MODULEID_DVBEUMIDDLEWARE % 32) ) // 0x4 // not used. reserved.
  50. #define DBGCFG_HDMIOUT ( 1 << (MODULEID_HDMIOUT % 32) ) // 0x10 // not used. reserved.
  51. #define DBGCFG_FRAMEBUFFER ( 1 << (MODULEID_FRAMEBUFFER % 32) ) // 0x20 // not used. reserved.
  52. #define DBGCFG_2D ( 1 << (MODULEID_2D % 32) ) // 0x40 // not used. reserved.
  53. #define DBGCFG_SMP ( 1 << (MODULEID_SMP % 32) ) // 0x80 // not used. reserved.
  54. #define DBGCFG_ALSA (1<<(MODULEID_ALSA%32)) // 0x100 // not used. reserved.
  55. #define DBGCFG_RUNAV (1<<(MODULEID_RUNAV%32)) //0x1000 //used for runav debug log.
  56. #define DBGCFG_AUTOREBOOT 0x20000000 // not used. reserved.
  57. #define DBGCFG_AUTORUN_USB 0x40000000 // not used. reserved.
  58. #define DBGCFG_NOAUTORUN 0x80000000 // not used. reserved.
  59. //~ end of pdbgconf2 Flags
  60. extern unsigned int *pdbgconf1;
  61. extern unsigned int *pdbgconf2;
  62. extern unsigned char *DrvMsgPrint;
  63. //Example how to use new debug macro
  64. //DBG_MSG1(DBGCFG_KMF, "example dbg message\n");
  65. //~Example
  66. # ifndef CONFIG_SUPPORT_DEBUG_MESSAGE
  67. # define DBG_MSG1(id, fmt,args...)
  68. # ifdef __KERNEL__
  69. # define RELEASE_MSG1(id, fmt,args...) do{ if(*pdbgconf1 & id) printk(KERN_DEBUG " " fmt, ## args);}while(0)
  70. # else
  71. # define RELEASE_MSG1(id, fmt,args...) do{ if(*pdbgconf1 & id) fprintf(stdout,fmt, ## args);}while(0)
  72. # endif
  73. # else
  74. # ifdef __KERNEL__
  75. # define DBG_MSG1(id, fmt,args...) do{ if (*pdbgconf1 & id) printk(KERN_DEBUG " " fmt, ## args); } while(0)
  76. # define RELEASE_MSG1(id, fmt,args...) do{ if (*pdbgconf1 & id) printk(KERN_CRIT fmt, ## args); } while(0)
  77. # else
  78. # define DBG_MSG1(id, fmt,args...) do{ if (*pdbgconf1 & id) fprintf(stdout,fmt, ## args); } while(0)
  79. # define RELEASE_MSG1(id, fmt,args...) do{ if (*pdbgconf1 & id) fprintf(stdout,fmt, ## args); } while(0)
  80. # endif
  81. # endif
  82. # ifndef CONFIG_SUPPORT_DEBUG_MESSAGE
  83. # define DBG_MSG2(id, fmt,args...)
  84. # ifdef __KERNEL__
  85. # define RELEASE_MSG2(id, fmt,args...) do{ if (*pdbgconf2 & id) printk(KERN_DEBUG " " fmt, ## args); } while(0)
  86. # else
  87. # define RELEASE_MSG2(id, fmt,args...) do{ if (*pdbgconf2 & id) fprintf(stdout,fmt, ## args); } while(0)
  88. # endif
  89. # else
  90. # ifdef __KERNEL__
  91. # define DBG_MSG2(id, fmt,args...) do{ if (*pdbgconf2 & id) printk(KERN_DEBUG " " fmt, ## args); } while(0)
  92. # define RELEASE_MSG2(id, fmt,args...) do{ if (*pdbgconf2 & id) printk(KERN_CRIT fmt, ## args); } while(0)
  93. # else
  94. # define DBG_MSG2(id, fmt,args...) do{ if (*pdbgconf2 & id) fprintf(stdout,fmt, ## args); } while(0)
  95. # define RELEASE_MSG2(id, fmt,args...) do{ if (*pdbgconf2 & id) fprintf(stdout,fmt, ## args); } while(0)
  96. # endif
  97. # endif
  98. // part II: measure boot time
  99. #define BOOT_TIME_BUFFER_ADDRESS 0xba027ef0
  100. enum{
  101. BOOT_TIME_ID_ALL_MODULE_INIT_START,
  102. BOOT_TIME_ID_AUDIO_INIT_START,
  103. BOOT_TIME_ID_AUDIO_INIT_END,
  104. BOOT_TIME_ID_ALL_MODULE_INIT_END,
  105. BOOT_TIME_ID_TV_INIT_START,
  106. BOOT_TIME_ID_SOURCE_ENABLE_START,
  107. BOOT_TIME_ID_TV_INIT_END,
  108. BOOT_TIME_ID_NORMAL_SCREEN,
  109. BOOT_TIME_ID_POST_SETTING_START,
  110. BOOT_TIME_ID_POST_SETTING_END,
  111. BOOT_TIME_ID_NORMAL_SCREEN_END,
  112. BOOT_TIME_ID_MAX
  113. };
  114. #ifdef MEASURE_BOOTTIME
  115. #define BOOT_TIME_STORE_RTC(id) \
  116. do { \
  117. writel(readl(0xbe0f0000), BOOT_TIME_BUFFER_ADDRESS - 8*(id) ); \
  118. writel(readl(0xbe0f0004), BOOT_TIME_BUFFER_ADDRESS - 8*(id)+4); \
  119. } while(0)
  120. #else
  121. #define BOOT_TIME_STORE_RTC(id)
  122. #endif //ifdef MEASURE_BOOTTIME
  123. #ifdef CONFIG_MEASURE_SOURCECHANGETIME
  124. extern struct timeval srcChangeTime[BOOT_TIME_ID_MAX];
  125. extern void printSrcChangeTime(void);
  126. extern void saveSourceChangeTime(int id);
  127. #undef BOOT_TIME_STORE_RTC
  128. #define BOOT_TIME_STORE_RTC(id) \
  129. do {\
  130. saveSourceChangeTime(id); \
  131. } while(0)
  132. #endif
  133. #endif //_DRV_DEBUG_H_