xd_misc.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #ifndef _H_XD_MISC
  2. #define _H_XD_MISC
  3. #include <linux/types.h>
  4. #include <linux/kernel.h>
  5. #include <linux/err.h>
  6. #include <linux/slab.h>
  7. #include <linux/module.h>
  8. #include <linux/init.h>
  9. #include <linux/delay.h>
  10. #include <asm/arch/am_regs.h>
  11. #include <asm/cacheflush.h>
  12. #include <asm/delay.h>
  13. #define AML_ATHENA
  14. #ifdef AML_ATHENA
  15. #define xd_sm_get_timer_tick() READ_ISA_REG(IREG_TIMER_E_COUNT) //unit: 10us or 1/100ms, max: 0 ~ 0xFFFFFF
  16. #define XD_SM_MAX_TIMER_TICK 0xFFFFFF
  17. #define TIMER_1US 1
  18. #define TIMER_10US (10*TIMER_1US)
  19. #define TIMER_1MS (100*TIMER_10US)
  20. #else /* */
  21. #define xd_sm_get_timer_tick() READ_ISA_REG(IREG_TIMER_A) //unit: 10us or 1/100ms, max: 0 ~ 0xFFFF
  22. #define XD_SM_MAX_TIMER_TICK 0xFFFF
  23. #define TIMER_10US 1
  24. #define TIMER_1MS (100*TIMER_10US)
  25. #endif /* */
  26. void xd_sm_start_timer(unsigned long time_value);
  27. int xd_sm_check_timer(void);
  28. int xd_sm_check_timeout(void);
  29. #define Debug_Printf printk
  30. //#define inline _Inline
  31. //Definition to use block address 0x3400000
  32. //#define AMLOGIC_CHIP_SUPPORT
  33. #ifdef AMLOGIC_CHIP_SUPPORT
  34. #ifdef AVOS
  35. #define WRITE_BYTE_TO_FIFO(DATA) {WRITE_MPEG_REG(HFIFO_DATA,DATA);while((READ_MPEG_REG(BFIFO_LEVEL)>>8) >= 120){}}
  36. #else /* */
  37. #define WRITE_BYTE_TO_FIFO(DATA) {Wr(HFIFO_DATA,DATA);while((Rd(BFIFO_LEVEL)>>8) >= 120){}}
  38. #endif /* */
  39. #endif /* */
  40. //Definition for debug
  41. #if ((!defined __ROM_) || (defined __ROM_ && defined __ROMDBG_))
  42. //#define XD_SM_DEBUG
  43. //#define XD_SM_ECC_CHECK
  44. #endif /* */
  45. //#if (defined T3510) || (defined T3511) || (defined AVOS)
  46. #define XD_CARD_SUPPORTED
  47. //#define SM_CARD_SUPPORTED
  48. //#else //T3295
  49. // #ifdef XDCARD
  50. // #define XD_CARD_SUPPORTED
  51. // #endif
  52. // #ifdef SMCARD
  53. // #define SM_CARD_SUPPORTED
  54. // #endif
  55. //#endif
  56. //#ifdef AVOS
  57. #define XD_SM_ALLOC_MEMORY
  58. #ifdef XD_SM_ALLOC_MEMORY
  59. #define XD_SM_NUM_POINTER
  60. #endif /* */
  61. //#endif
  62. #ifdef XD_SM_ALLOC_MEMORY
  63. #define xd_sm_malloc kmalloc
  64. #define xd_sm_free kfree
  65. #endif /* */
  66. //XD IO redfine
  67. #define xd_set_re_enable() xd_set_re_low()
  68. #define xd_set_re_disable() xd_set_re_high()
  69. #define xd_set_ce_enable() xd_set_ce_low()
  70. #define xd_set_ce_disable() xd_set_ce_high()
  71. #define xd_set_ale_enable() xd_set_ale_high()
  72. #define xd_set_ale_disable() xd_set_ale_low()
  73. #define xd_set_cle_enable() xd_set_cle_high()
  74. #define xd_set_cle_disable() xd_set_cle_low()
  75. #define xd_set_we_enable() xd_set_we_low()
  76. #define xd_set_we_disable() xd_set_we_high()
  77. #define xd_set_wp_enable() xd_set_wp_low()
  78. #define xd_set_wp_disable() xd_set_wp_high()
  79. //SM IO redfine
  80. #define sm_set_re_enable() sm_set_re_low()
  81. #define sm_set_re_disable() sm_set_re_high()
  82. #define sm_set_ce_enable() sm_set_ce_low()
  83. #define sm_set_ce_disable() sm_set_ce_high()
  84. #define sm_set_ale_enable() sm_set_ale_high()
  85. #define sm_set_ale_disable() sm_set_ale_low()
  86. #define sm_set_cle_enable() sm_set_cle_high()
  87. #define sm_set_cle_disable() sm_set_cle_low()
  88. #define sm_set_we_enable() sm_set_we_low()
  89. #define sm_set_we_disable() sm_set_we_high()
  90. #define sm_set_wp_enable() sm_set_wp_low()
  91. #define sm_set_wp_disable() sm_set_wp_high()
  92. //Time delay
  93. #define xd_sm_delay_20ns() {__asm__("nop");__asm__("nop");__asm__("nop");}
  94. #define xd_sm_delay_40ns() {xd_sm_delay_20ns(); xd_sm_delay_20ns();}
  95. #define xd_sm_delay_60ns() {xd_sm_delay_20ns(); xd_sm_delay_20ns(); xd_sm_delay_20ns();}
  96. //Delay time in 100 ns
  97. void xd_sm_delay_100ns(unsigned long num_100ns);
  98. //Delay time in 1 us
  99. void xd_sm_delay_us(unsigned long num_us);
  100. //Delay time in 1 ms
  101. void xd_sm_delay_ms(unsigned long num_ms);
  102. //ECC routines
  103. extern unsigned char ecc_table[];
  104. void ecc_trans_result(unsigned char reg2, unsigned char reg3,
  105. unsigned char *ecc1, unsigned char *ecc2);
  106. void ecc_calculate_ecc(unsigned char *table, unsigned char *data,
  107. unsigned char *ecc1, unsigned char *ecc2,
  108. unsigned char *ecc3);
  109. unsigned char ecc_correct_data(unsigned char *data, unsigned char *data_ecc,
  110. unsigned char ecc1, unsigned char ecc2,
  111. unsigned char ecc3);
  112. #endif //_H_sm_MISC