smu_ucode_xfer_cz.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. // CZ Ucode Loading Definitions
  2. #ifndef SMU_UCODE_XFER_CZ_H
  3. #define SMU_UCODE_XFER_CZ_H
  4. #define NUM_JOBLIST_ENTRIES 32
  5. #define TASK_TYPE_NO_ACTION 0
  6. #define TASK_TYPE_UCODE_LOAD 1
  7. #define TASK_TYPE_UCODE_SAVE 2
  8. #define TASK_TYPE_REG_LOAD 3
  9. #define TASK_TYPE_REG_SAVE 4
  10. #define TASK_TYPE_INITIALIZE 5
  11. #define TASK_ARG_REG_SMCIND 0
  12. #define TASK_ARG_REG_MMIO 1
  13. #define TASK_ARG_REG_FCH 2
  14. #define TASK_ARG_REG_UNB 3
  15. #define TASK_ARG_INIT_MM_PWR_LOG 0
  16. #define TASK_ARG_INIT_CLK_TABLE 1
  17. #define JOB_GFX_SAVE 0
  18. #define JOB_GFX_RESTORE 1
  19. #define JOB_FCH_SAVE 2
  20. #define JOB_FCH_RESTORE 3
  21. #define JOB_UNB_SAVE 4
  22. #define JOB_UNB_RESTORE 5
  23. #define JOB_GMC_SAVE 6
  24. #define JOB_GMC_RESTORE 7
  25. #define JOB_GNB_SAVE 8
  26. #define JOB_GNB_RESTORE 9
  27. #define IGNORE_JOB 0xff
  28. #define END_OF_TASK_LIST (uint16_t)0xffff
  29. // Size of DRAM regions (in bytes) requested by SMU:
  30. #define SMU_DRAM_REQ_MM_PWR_LOG 48
  31. #define UCODE_ID_SDMA0 0
  32. #define UCODE_ID_SDMA1 1
  33. #define UCODE_ID_CP_CE 2
  34. #define UCODE_ID_CP_PFP 3
  35. #define UCODE_ID_CP_ME 4
  36. #define UCODE_ID_CP_MEC_JT1 5
  37. #define UCODE_ID_CP_MEC_JT2 6
  38. #define UCODE_ID_GMCON_RENG 7
  39. #define UCODE_ID_RLC_G 8
  40. #define UCODE_ID_RLC_SCRATCH 9
  41. #define UCODE_ID_RLC_SRM_ARAM 10
  42. #define UCODE_ID_RLC_SRM_DRAM 11
  43. #define UCODE_ID_DMCU_ERAM 12
  44. #define UCODE_ID_DMCU_IRAM 13
  45. #define UCODE_ID_SDMA0_MASK 0x00000001
  46. #define UCODE_ID_SDMA1_MASK 0x00000002
  47. #define UCODE_ID_CP_CE_MASK 0x00000004
  48. #define UCODE_ID_CP_PFP_MASK 0x00000008
  49. #define UCODE_ID_CP_ME_MASK 0x00000010
  50. #define UCODE_ID_CP_MEC_JT1_MASK 0x00000020
  51. #define UCODE_ID_CP_MEC_JT2_MASK 0x00000040
  52. #define UCODE_ID_GMCON_RENG_MASK 0x00000080
  53. #define UCODE_ID_RLC_G_MASK 0x00000100
  54. #define UCODE_ID_RLC_SCRATCH_MASK 0x00000200
  55. #define UCODE_ID_RLC_SRM_ARAM_MASK 0x00000400
  56. #define UCODE_ID_RLC_SRM_DRAM_MASK 0x00000800
  57. #define UCODE_ID_DMCU_ERAM_MASK 0x00001000
  58. #define UCODE_ID_DMCU_IRAM_MASK 0x00002000
  59. #define UCODE_ID_SDMA0_SIZE_BYTE 10368
  60. #define UCODE_ID_SDMA1_SIZE_BYTE 10368
  61. #define UCODE_ID_CP_CE_SIZE_BYTE 8576
  62. #define UCODE_ID_CP_PFP_SIZE_BYTE 16768
  63. #define UCODE_ID_CP_ME_SIZE_BYTE 16768
  64. #define UCODE_ID_CP_MEC_JT1_SIZE_BYTE 384
  65. #define UCODE_ID_CP_MEC_JT2_SIZE_BYTE 384
  66. #define UCODE_ID_GMCON_RENG_SIZE_BYTE 4096
  67. #define UCODE_ID_RLC_G_SIZE_BYTE 2048
  68. #define UCODE_ID_RLC_SCRATCH_SIZE_BYTE 132
  69. #define UCODE_ID_RLC_SRM_ARAM_SIZE_BYTE 8192
  70. #define UCODE_ID_RLC_SRM_DRAM_SIZE_BYTE 4096
  71. #define UCODE_ID_DMCU_ERAM_SIZE_BYTE 24576
  72. #define UCODE_ID_DMCU_IRAM_SIZE_BYTE 1024
  73. #define NUM_UCODES 14
  74. typedef struct {
  75. uint32_t high;
  76. uint32_t low;
  77. } data_64_t;
  78. struct SMU_Task {
  79. uint8_t type;
  80. uint8_t arg;
  81. uint16_t next;
  82. data_64_t addr;
  83. uint32_t size_bytes;
  84. };
  85. typedef struct SMU_Task SMU_Task;
  86. struct TOC {
  87. uint8_t JobList[NUM_JOBLIST_ENTRIES];
  88. SMU_Task tasks[1];
  89. };
  90. // META DATA COMMAND Definitions
  91. #define METADATA_CMD_MODE0 0x00000103
  92. #define METADATA_CMD_MODE1 0x00000113
  93. #define METADATA_CMD_MODE2 0x00000123
  94. #define METADATA_CMD_MODE3 0x00000133
  95. #define METADATA_CMD_DELAY 0x00000203
  96. #define METADATA_CMD_CHNG_REGSPACE 0x00000303
  97. #define METADATA_PERFORM_ON_SAVE 0x00001000
  98. #define METADATA_PERFORM_ON_LOAD 0x00002000
  99. #define METADATA_CMD_ARG_MASK 0xFFFF0000
  100. #define METADATA_CMD_ARG_SHIFT 16
  101. // Simple register addr/data fields
  102. struct SMU_MetaData_Mode0 {
  103. uint32_t register_address;
  104. uint32_t register_data;
  105. };
  106. typedef struct SMU_MetaData_Mode0 SMU_MetaData_Mode0;
  107. // Register addr/data with mask
  108. struct SMU_MetaData_Mode1 {
  109. uint32_t register_address;
  110. uint32_t register_mask;
  111. uint32_t register_data;
  112. };
  113. typedef struct SMU_MetaData_Mode1 SMU_MetaData_Mode1;
  114. struct SMU_MetaData_Mode2 {
  115. uint32_t register_address;
  116. uint32_t register_mask;
  117. uint32_t target_value;
  118. };
  119. typedef struct SMU_MetaData_Mode2 SMU_MetaData_Mode2;
  120. // Always write data (even on a save operation)
  121. struct SMU_MetaData_Mode3 {
  122. uint32_t register_address;
  123. uint32_t register_mask;
  124. uint32_t register_data;
  125. };
  126. typedef struct SMU_MetaData_Mode3 SMU_MetaData_Mode3;
  127. #endif