0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #ifndef SMU_UCODE_XFER_CZ_H
0025 #define SMU_UCODE_XFER_CZ_H
0026
0027 #define NUM_JOBLIST_ENTRIES 32
0028
0029 #define TASK_TYPE_NO_ACTION 0
0030 #define TASK_TYPE_UCODE_LOAD 1
0031 #define TASK_TYPE_UCODE_SAVE 2
0032 #define TASK_TYPE_REG_LOAD 3
0033 #define TASK_TYPE_REG_SAVE 4
0034 #define TASK_TYPE_INITIALIZE 5
0035
0036 #define TASK_ARG_REG_SMCIND 0
0037 #define TASK_ARG_REG_MMIO 1
0038 #define TASK_ARG_REG_FCH 2
0039 #define TASK_ARG_REG_UNB 3
0040
0041 #define TASK_ARG_INIT_MM_PWR_LOG 0
0042 #define TASK_ARG_INIT_CLK_TABLE 1
0043
0044 #define JOB_GFX_SAVE 0
0045 #define JOB_GFX_RESTORE 1
0046 #define JOB_FCH_SAVE 2
0047 #define JOB_FCH_RESTORE 3
0048 #define JOB_UNB_SAVE 4
0049 #define JOB_UNB_RESTORE 5
0050 #define JOB_GMC_SAVE 6
0051 #define JOB_GMC_RESTORE 7
0052 #define JOB_GNB_SAVE 8
0053 #define JOB_GNB_RESTORE 9
0054
0055 #define IGNORE_JOB 0xff
0056 #define END_OF_TASK_LIST (uint16_t)0xffff
0057
0058
0059 #define SMU_DRAM_REQ_MM_PWR_LOG 48
0060
0061 #define UCODE_ID_SDMA0 0
0062 #define UCODE_ID_SDMA1 1
0063 #define UCODE_ID_CP_CE 2
0064 #define UCODE_ID_CP_PFP 3
0065 #define UCODE_ID_CP_ME 4
0066 #define UCODE_ID_CP_MEC_JT1 5
0067 #define UCODE_ID_CP_MEC_JT2 6
0068 #define UCODE_ID_GMCON_RENG 7
0069 #define UCODE_ID_RLC_G 8
0070 #define UCODE_ID_RLC_SCRATCH 9
0071 #define UCODE_ID_RLC_SRM_ARAM 10
0072 #define UCODE_ID_RLC_SRM_DRAM 11
0073 #define UCODE_ID_DMCU_ERAM 12
0074 #define UCODE_ID_DMCU_IRAM 13
0075
0076 #define UCODE_ID_SDMA0_MASK 0x00000001
0077 #define UCODE_ID_SDMA1_MASK 0x00000002
0078 #define UCODE_ID_CP_CE_MASK 0x00000004
0079 #define UCODE_ID_CP_PFP_MASK 0x00000008
0080 #define UCODE_ID_CP_ME_MASK 0x00000010
0081 #define UCODE_ID_CP_MEC_JT1_MASK 0x00000020
0082 #define UCODE_ID_CP_MEC_JT2_MASK 0x00000040
0083 #define UCODE_ID_GMCON_RENG_MASK 0x00000080
0084 #define UCODE_ID_RLC_G_MASK 0x00000100
0085 #define UCODE_ID_RLC_SCRATCH_MASK 0x00000200
0086 #define UCODE_ID_RLC_SRM_ARAM_MASK 0x00000400
0087 #define UCODE_ID_RLC_SRM_DRAM_MASK 0x00000800
0088 #define UCODE_ID_DMCU_ERAM_MASK 0x00001000
0089 #define UCODE_ID_DMCU_IRAM_MASK 0x00002000
0090
0091 #define UCODE_ID_SDMA0_SIZE_BYTE 10368
0092 #define UCODE_ID_SDMA1_SIZE_BYTE 10368
0093 #define UCODE_ID_CP_CE_SIZE_BYTE 8576
0094 #define UCODE_ID_CP_PFP_SIZE_BYTE 16768
0095 #define UCODE_ID_CP_ME_SIZE_BYTE 16768
0096 #define UCODE_ID_CP_MEC_JT1_SIZE_BYTE 384
0097 #define UCODE_ID_CP_MEC_JT2_SIZE_BYTE 384
0098 #define UCODE_ID_GMCON_RENG_SIZE_BYTE 4096
0099 #define UCODE_ID_RLC_G_SIZE_BYTE 2048
0100 #define UCODE_ID_RLC_SCRATCH_SIZE_BYTE 132
0101 #define UCODE_ID_RLC_SRM_ARAM_SIZE_BYTE 8192
0102 #define UCODE_ID_RLC_SRM_DRAM_SIZE_BYTE 4096
0103 #define UCODE_ID_DMCU_ERAM_SIZE_BYTE 24576
0104 #define UCODE_ID_DMCU_IRAM_SIZE_BYTE 1024
0105
0106 #define NUM_UCODES 14
0107
0108 typedef struct {
0109 uint32_t high;
0110 uint32_t low;
0111 } data_64_t;
0112
0113 struct SMU_Task {
0114 uint8_t type;
0115 uint8_t arg;
0116 uint16_t next;
0117 data_64_t addr;
0118 uint32_t size_bytes;
0119 };
0120 typedef struct SMU_Task SMU_Task;
0121
0122 struct TOC {
0123 uint8_t JobList[NUM_JOBLIST_ENTRIES];
0124 SMU_Task tasks[];
0125 };
0126
0127
0128 #define METADATA_CMD_MODE0 0x00000103
0129 #define METADATA_CMD_MODE1 0x00000113
0130 #define METADATA_CMD_MODE2 0x00000123
0131 #define METADATA_CMD_MODE3 0x00000133
0132 #define METADATA_CMD_DELAY 0x00000203
0133 #define METADATA_CMD_CHNG_REGSPACE 0x00000303
0134 #define METADATA_PERFORM_ON_SAVE 0x00001000
0135 #define METADATA_PERFORM_ON_LOAD 0x00002000
0136 #define METADATA_CMD_ARG_MASK 0xFFFF0000
0137 #define METADATA_CMD_ARG_SHIFT 16
0138
0139
0140 struct SMU_MetaData_Mode0 {
0141 uint32_t register_address;
0142 uint32_t register_data;
0143 };
0144 typedef struct SMU_MetaData_Mode0 SMU_MetaData_Mode0;
0145
0146
0147 struct SMU_MetaData_Mode1 {
0148 uint32_t register_address;
0149 uint32_t register_mask;
0150 uint32_t register_data;
0151 };
0152 typedef struct SMU_MetaData_Mode1 SMU_MetaData_Mode1;
0153
0154 struct SMU_MetaData_Mode2 {
0155 uint32_t register_address;
0156 uint32_t register_mask;
0157 uint32_t target_value;
0158 };
0159 typedef struct SMU_MetaData_Mode2 SMU_MetaData_Mode2;
0160
0161
0162 struct SMU_MetaData_Mode3 {
0163 uint32_t register_address;
0164 uint32_t register_mask;
0165 uint32_t register_data;
0166 };
0167 typedef struct SMU_MetaData_Mode3 SMU_MetaData_Mode3;
0168
0169 #endif