diff options
| author | Hawking Zhang <Hawking.Zhang@amd.com> | 2020-01-20 04:41:40 +0800 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2020-07-01 01:59:09 -0400 | 
| commit | 9d3708169f4494bdccc4f8b89a8f866767c563b7 (patch) | |
| tree | ce7b85b196e4d6180b493e17af3964fbadc97083 /drivers/gpu/drm/amd/include/atomfirmware.h | |
| parent | f95c20464dd4954b81d860ae548666cd5bfeba2e (diff) | |
drm/amdgpu: add vram_info v2_5 in atomfirmware header
vram_info v2_5 was introduced to support sienna_cichlid
Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: Likun Gao <Likun.Gao@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/include/atomfirmware.h')
| -rw-r--r-- | drivers/gpu/drm/amd/include/atomfirmware.h | 124 | 
1 files changed, 124 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/include/atomfirmware.h b/drivers/gpu/drm/amd/include/atomfirmware.h index b36ea8340afa..2c3c73f1e6ee 100644 --- a/drivers/gpu/drm/amd/include/atomfirmware.h +++ b/drivers/gpu/drm/amd/include/atomfirmware.h @@ -2313,6 +2313,130 @@ struct atom_vram_info_header_v2_4 {    struct   atom_vram_module_v10  vram_module[16];        // just for allocation, real number of blocks is in ucNumOfVRAMModule;  }; +struct atom_vram_module_v11 { +	// Design Specific Values +	uint32_t  memory_size;                   // Total memory size in unit of MB for CONFIG_MEMSIZE zeros +	uint32_t  channel_enable;                // bit vector, each bit indicate specific channel enable or not +	uint16_t  mem_voltage;                   // mem_voltage +	uint16_t  vram_module_size;              // Size of atom_vram_module_v9 +	uint8_t   ext_memory_id;                 // Current memory module ID +	uint8_t   memory_type;                   // enum of atom_dgpu_vram_type +	uint8_t   channel_num;                   // Number of mem. channels supported in this module +	uint8_t   channel_width;                 // CHANNEL_16BIT/CHANNEL_32BIT/CHANNEL_64BIT +	uint8_t   density;                       // _8Mx32, _16Mx32, _16Mx16, _32Mx16 +	uint8_t   tunningset_id;                 // MC phy registers set per. +	uint16_t  reserved[4];                   // reserved +	uint8_t   vender_rev_id;                 // [7:4] Revision, [3:0] Vendor code +	uint8_t   refreshrate;			 // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) +	uint8_t   vram_flags;			 // bit0= bankgroup enable +	uint8_t   vram_rsd2;			 // reserved +	uint16_t  gddr6_mr10;                    // gddr6 mode register10 value +	uint16_t  gddr6_mr0;                     // gddr6 mode register0 value +	uint16_t  gddr6_mr1;                     // gddr6 mode register1 value +	uint16_t  gddr6_mr2;                     // gddr6 mode register2 value +	uint16_t  gddr6_mr4;                     // gddr6 mode register4 value +	uint16_t  gddr6_mr7;                     // gddr6 mode register7 value +	uint16_t  gddr6_mr8;                     // gddr6 mode register8 value +	char    dram_pnstring[40];               // part number end with '0'. +}; + +struct atom_gddr6_ac_timing_v2_5 { +	uint32_t  u32umc_id_access; +	uint8_t  RL; +	uint8_t  WL; +	uint8_t  tRAS; +	uint8_t  tRC; + +	uint16_t  tREFI; +	uint8_t  tRFC; +	uint8_t  tRFCpb; + +	uint8_t  tRREFD; +	uint8_t  tRCDRD; +	uint8_t  tRCDWR; +	uint8_t  tRP; + +	uint8_t  tRRDS; +	uint8_t  tRRDL; +	uint8_t  tWR; +	uint8_t  tWTRS; + +	uint8_t  tWTRL; +	uint8_t  tFAW; +	uint8_t  tCCDS; +	uint8_t  tCCDL; + +	uint8_t  tCRCRL; +	uint8_t  tCRCWL; +	uint8_t  tCKE; +	uint8_t  tCKSRE; + +	uint8_t  tCKSRX; +	uint8_t  tRTPS; +	uint8_t  tRTPL; +	uint8_t  tMRD; + +	uint8_t  tMOD; +	uint8_t  tXS; +	uint8_t  tXHP; +	uint8_t  tXSMRS; + +	uint32_t  tXSH; + +	uint8_t  tPD; +	uint8_t  tXP; +	uint8_t  tCPDED; +	uint8_t  tACTPDE; + +	uint8_t  tPREPDE; +	uint8_t  tREFPDE; +	uint8_t  tMRSPDEN; +	uint8_t  tRDSRE; + +	uint8_t  tWRSRE; +	uint8_t  tPPD; +	uint8_t  tCCDMW; +	uint8_t  tWTRTR; + +	uint8_t  tLTLTR; +	uint8_t  tREFTR; +	uint8_t  VNDR; +	uint8_t  reserved[9]; +}; + +struct atom_gddr6_bit_byte_remap { +	uint32_t dphy_byteremap;    //mmUMC_DPHY_ByteRemap +	uint32_t dphy_bitremap0;    //mmUMC_DPHY_BitRemap0 +	uint32_t dphy_bitremap1;    //mmUMC_DPHY_BitRemap1 +	uint32_t dphy_bitremap2;    //mmUMC_DPHY_BitRemap2 +	uint32_t aphy_bitremap0;    //mmUMC_APHY_BitRemap0 +	uint32_t aphy_bitremap1;    //mmUMC_APHY_BitRemap1 +	uint32_t phy_dram;          //mmUMC_PHY_DRAM +}; + +struct atom_gddr6_dram_data_remap { +	uint32_t table_size; +	uint8_t phyintf_ck_inverted[8];     //UMC_PHY_PHYINTF_CNTL.INV_CK +	struct atom_gddr6_bit_byte_remap bit_byte_remap[16]; +}; + +struct atom_vram_info_header_v2_5 { +	struct   atom_common_table_header table_header; +	uint16_t mem_adjust_tbloffset;                         // offset of atom_umc_init_reg_block structure for memory vendor specific UMC adjust settings +	uint16_t gddr6_ac_timing_offset;                     // offset of atom_gddr6_ac_timing_v2_5 structure for memory clock specific UMC settings +	uint16_t mc_adjust_pertile_tbloffset;                  // offset of atom_umc_init_reg_block structure for Per Byte Offset Preset Settings +	uint16_t mc_phyinit_tbloffset;                         // offset of atom_umc_init_reg_block structure for MC phy init set +	uint16_t dram_data_remap_tbloffset;                    // offset of atom_gddr6_dram_data_remap array to indicate DRAM data lane to GPU mapping +	uint16_t reserved;                                     // offset of reserved +	uint16_t post_ucode_init_offset;                       // offset of atom_umc_init_reg_block structure for MC phy init after MC uCode complete umc init +	uint16_t strobe_mode_patch_tbloffset;                  // offset of atom_umc_init_reg_block structure for Strobe Mode memory clock specific UMC settings +	uint8_t  vram_module_num;                              // indicate number of VRAM module +	uint8_t  umcip_min_ver; +	uint8_t  umcip_max_ver; +	uint8_t  mc_phy_tile_num;                              // indicate the MCD tile number which use in DramDataRemapTbl and usMcAdjustPerTileTblOffset +	struct   atom_vram_module_v11  vram_module[16];        // just for allocation, real number of blocks is in ucNumOfVRAMModule; +}; +  /*     ***************************************************************************      Data Table voltageobject_info  structure | 
