Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright 2016 Advanced Micro Devices, Inc.
0003  *
0004  * Permission is hereby granted, free of charge, to any person obtaining a
0005  * copy of this software and associated documentation files (the "Software"),
0006  * to deal in the Software without restriction, including without limitation
0007  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
0008  * and/or sell copies of the Software, and to permit persons to whom the
0009  * Software is furnished to do so, subject to the following conditions:
0010  *
0011  * The above copyright notice and this permission notice shall be included in
0012  * all copies or substantial portions of the Software.
0013  *
0014  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0015  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0016  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
0017  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
0018  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
0019  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
0020  * OTHER DEALINGS IN THE SOFTWARE.
0021  *
0022  */
0023 // CZ Ucode Loading Definitions
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 // Size of DRAM regions (in bytes) requested by SMU:
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 // META DATA COMMAND Definitions
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 // Simple register addr/data fields
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 // Register addr/data with mask
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 // Always write data (even on a save operation)
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