hsdramc1.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. /*
  2. * Register definitions for SDRAM Controller
  3. */
  4. #ifndef __ASM_AVR32_HSDRAMC1_H__
  5. #define __ASM_AVR32_HSDRAMC1_H__
  6. /* HSDRAMC1 register offsets */
  7. #define HSDRAMC1_MR 0x0000
  8. #define HSDRAMC1_TR 0x0004
  9. #define HSDRAMC1_CR 0x0008
  10. #define HSDRAMC1_HSR 0x000c
  11. #define HSDRAMC1_LPR 0x0010
  12. #define HSDRAMC1_IER 0x0014
  13. #define HSDRAMC1_IDR 0x0018
  14. #define HSDRAMC1_IMR 0x001c
  15. #define HSDRAMC1_ISR 0x0020
  16. #define HSDRAMC1_MDR 0x0024
  17. #define HSDRAMC1_VERSION 0x00fc
  18. /* Bitfields in MR */
  19. #define HSDRAMC1_MODE_OFFSET 0
  20. #define HSDRAMC1_MODE_SIZE 3
  21. /* Bitfields in TR */
  22. #define HSDRAMC1_COUNT_OFFSET 0
  23. #define HSDRAMC1_COUNT_SIZE 12
  24. /* Bitfields in CR */
  25. #define HSDRAMC1_NC_OFFSET 0
  26. #define HSDRAMC1_NC_SIZE 2
  27. #define HSDRAMC1_NR_OFFSET 2
  28. #define HSDRAMC1_NR_SIZE 2
  29. #define HSDRAMC1_NB_OFFSET 4
  30. #define HSDRAMC1_NB_SIZE 1
  31. #define HSDRAMC1_CAS_OFFSET 5
  32. #define HSDRAMC1_CAS_SIZE 2
  33. #define HSDRAMC1_DBW_OFFSET 7
  34. #define HSDRAMC1_DBW_SIZE 1
  35. #define HSDRAMC1_TWR_OFFSET 8
  36. #define HSDRAMC1_TWR_SIZE 4
  37. #define HSDRAMC1_TRC_OFFSET 12
  38. #define HSDRAMC1_TRC_SIZE 4
  39. #define HSDRAMC1_TRP_OFFSET 16
  40. #define HSDRAMC1_TRP_SIZE 4
  41. #define HSDRAMC1_TRCD_OFFSET 20
  42. #define HSDRAMC1_TRCD_SIZE 4
  43. #define HSDRAMC1_TRAS_OFFSET 24
  44. #define HSDRAMC1_TRAS_SIZE 4
  45. #define HSDRAMC1_TXSR_OFFSET 28
  46. #define HSDRAMC1_TXSR_SIZE 4
  47. /* Bitfields in HSR */
  48. #define HSDRAMC1_DA_OFFSET 0
  49. #define HSDRAMC1_DA_SIZE 1
  50. /* Bitfields in LPR */
  51. #define HSDRAMC1_LPCB_OFFSET 0
  52. #define HSDRAMC1_LPCB_SIZE 2
  53. #define HSDRAMC1_PASR_OFFSET 4
  54. #define HSDRAMC1_PASR_SIZE 3
  55. #define HSDRAMC1_TCSR_OFFSET 8
  56. #define HSDRAMC1_TCSR_SIZE 2
  57. #define HSDRAMC1_DS_OFFSET 10
  58. #define HSDRAMC1_DS_SIZE 2
  59. #define HSDRAMC1_TIMEOUT_OFFSET 12
  60. #define HSDRAMC1_TIMEOUT_SIZE 2
  61. /* Bitfields in IDR */
  62. #define HSDRAMC1_RES_OFFSET 0
  63. #define HSDRAMC1_RES_SIZE 1
  64. /* Bitfields in MDR */
  65. #define HSDRAMC1_MD_OFFSET 0
  66. #define HSDRAMC1_MD_SIZE 2
  67. /* Bitfields in VERSION */
  68. #define HSDRAMC1_VERSION_OFFSET 0
  69. #define HSDRAMC1_VERSION_SIZE 12
  70. #define HSDRAMC1_MFN_OFFSET 16
  71. #define HSDRAMC1_MFN_SIZE 3
  72. /* Constants for MODE */
  73. #define HSDRAMC1_MODE_NORMAL 0
  74. #define HSDRAMC1_MODE_NOP 1
  75. #define HSDRAMC1_MODE_BANKS_PRECHARGE 2
  76. #define HSDRAMC1_MODE_LOAD_MODE 3
  77. #define HSDRAMC1_MODE_AUTO_REFRESH 4
  78. #define HSDRAMC1_MODE_EXT_LOAD_MODE 5
  79. #define HSDRAMC1_MODE_POWER_DOWN 6
  80. /* Constants for NC */
  81. #define HSDRAMC1_NC_8_COLUMN_BITS 0
  82. #define HSDRAMC1_NC_9_COLUMN_BITS 1
  83. #define HSDRAMC1_NC_10_COLUMN_BITS 2
  84. #define HSDRAMC1_NC_11_COLUMN_BITS 3
  85. /* Constants for NR */
  86. #define HSDRAMC1_NR_11_ROW_BITS 0
  87. #define HSDRAMC1_NR_12_ROW_BITS 1
  88. #define HSDRAMC1_NR_13_ROW_BITS 2
  89. /* Constants for NB */
  90. #define HSDRAMC1_NB_TWO_BANKS 0
  91. #define HSDRAMC1_NB_FOUR_BANKS 1
  92. /* Constants for CAS */
  93. #define HSDRAMC1_CAS_ONE_CYCLE 1
  94. #define HSDRAMC1_CAS_TWO_CYCLES 2
  95. /* Constants for DBW */
  96. #define HSDRAMC1_DBW_32_BITS 0
  97. #define HSDRAMC1_DBW_16_BITS 1
  98. /* Constants for TIMEOUT */
  99. #define HSDRAMC1_TIMEOUT_AFTER_END 0
  100. #define HSDRAMC1_TIMEOUT_64_CYC_AFTER_END 1
  101. #define HSDRAMC1_TIMEOUT_128_CYC_AFTER_END 2
  102. /* Constants for MD */
  103. #define HSDRAMC1_MD_SDRAM 0
  104. #define HSDRAMC1_MD_LOW_POWER_SDRAM 1
  105. /* Bit manipulation macros */
  106. #define HSDRAMC1_BIT(name) \
  107. (1 << HSDRAMC1_##name##_OFFSET)
  108. #define HSDRAMC1_BF(name,value) \
  109. (((value) & ((1 << HSDRAMC1_##name##_SIZE) - 1)) \
  110. << HSDRAMC1_##name##_OFFSET)
  111. #define HSDRAMC1_BFEXT(name,value) \
  112. (((value) >> HSDRAMC1_##name##_OFFSET) \
  113. & ((1 << HSDRAMC1_##name##_SIZE) - 1))
  114. #define HSDRAMC1_BFINS(name,value,old) \
  115. (((old) & ~(((1 << HSDRAMC1_##name##_SIZE) - 1) \
  116. << HSDRAMC1_##name##_OFFSET)) \
  117. | HSDRAMC1_BF(name,value))
  118. /* Register access macros */
  119. #define hsdramc1_readl(reg) \
  120. readl((void *)ATMEL_BASE_HSDRAMC + HSDRAMC1_##reg)
  121. #define hsdramc1_writel(reg,value) \
  122. writel((value), (void *)ATMEL_BASE_HSDRAMC + HSDRAMC1_##reg)
  123. #endif /* __ASM_AVR32_HSDRAMC1_H__ */