mirror of https://gitee.com/openkylin/linux.git
drm/amd/display: Implement VEGAM device IDs in DC
Implement device IDs for VEGAM Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
e930793280
commit
0c75d5acc8
|
@ -34,4 +34,10 @@ config DEBUG_KERNEL_DC
|
||||||
if you want to hit
|
if you want to hit
|
||||||
kdgb_break in assert.
|
kdgb_break in assert.
|
||||||
|
|
||||||
|
config DRM_AMD_DC_VEGAM
|
||||||
|
bool "VEGAM support"
|
||||||
|
depends on DRM_AMD_DC
|
||||||
|
help
|
||||||
|
Choose this option if you want to have
|
||||||
|
VEGAM support for display engine
|
||||||
endmenu
|
endmenu
|
||||||
|
|
|
@ -51,6 +51,9 @@ bool dal_bios_parser_init_cmd_tbl_helper(
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case DCE_VERSION_11_2:
|
case DCE_VERSION_11_2:
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
case DCE_VERSION_11_22:
|
||||||
|
#endif
|
||||||
*h = dal_cmd_tbl_helper_dce112_get_table();
|
*h = dal_cmd_tbl_helper_dce112_get_table();
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,9 @@ bool dal_bios_parser_init_cmd_tbl_helper2(
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case DCE_VERSION_11_2:
|
case DCE_VERSION_11_2:
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
case DCE_VERSION_11_22:
|
||||||
|
#endif
|
||||||
*h = dal_cmd_tbl_helper_dce112_get_table2();
|
*h = dal_cmd_tbl_helper_dce112_get_table2();
|
||||||
return true;
|
return true;
|
||||||
#if defined(CONFIG_DRM_AMD_DC_DCN1_0)
|
#if defined(CONFIG_DRM_AMD_DC_DCN1_0)
|
||||||
|
|
|
@ -59,6 +59,10 @@ static enum bw_calcs_version bw_calcs_version_from_asic_id(struct hw_asic_id asi
|
||||||
return BW_CALCS_VERSION_POLARIS10;
|
return BW_CALCS_VERSION_POLARIS10;
|
||||||
if (ASIC_REV_IS_POLARIS11_M(asic_id.hw_internal_rev))
|
if (ASIC_REV_IS_POLARIS11_M(asic_id.hw_internal_rev))
|
||||||
return BW_CALCS_VERSION_POLARIS11;
|
return BW_CALCS_VERSION_POLARIS11;
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
if (ASIC_REV_IS_VEGAM(asic_id.hw_internal_rev))
|
||||||
|
return BW_CALCS_VERSION_VEGAM;
|
||||||
|
#endif
|
||||||
return BW_CALCS_VERSION_INVALID;
|
return BW_CALCS_VERSION_INVALID;
|
||||||
|
|
||||||
case FAMILY_AI:
|
case FAMILY_AI:
|
||||||
|
@ -2147,6 +2151,11 @@ void bw_calcs_init(struct bw_calcs_dceip *bw_dceip,
|
||||||
dceip.mcifwr_all_surfaces_burst_time = bw_int_to_fixed(0); /* todo: this is a bug*/
|
dceip.mcifwr_all_surfaces_burst_time = bw_int_to_fixed(0); /* todo: this is a bug*/
|
||||||
break;
|
break;
|
||||||
case BW_CALCS_VERSION_POLARIS10:
|
case BW_CALCS_VERSION_POLARIS10:
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
/* TODO: Treat VEGAM the same as P10 for now
|
||||||
|
* Need to tune the para for VEGAM if needed */
|
||||||
|
case BW_CALCS_VERSION_VEGAM:
|
||||||
|
#endif
|
||||||
vbios.memory_type = bw_def_gddr5;
|
vbios.memory_type = bw_def_gddr5;
|
||||||
vbios.dram_channel_width_in_bits = 32;
|
vbios.dram_channel_width_in_bits = 32;
|
||||||
vbios.number_of_dram_channels = asic_id.vram_width / vbios.dram_channel_width_in_bits;
|
vbios.number_of_dram_channels = asic_id.vram_width / vbios.dram_channel_width_in_bits;
|
||||||
|
|
|
@ -79,6 +79,10 @@ enum dce_version resource_parse_asic_id(struct hw_asic_id asic_id)
|
||||||
ASIC_REV_IS_POLARIS12_V(asic_id.hw_internal_rev)) {
|
ASIC_REV_IS_POLARIS12_V(asic_id.hw_internal_rev)) {
|
||||||
dc_version = DCE_VERSION_11_2;
|
dc_version = DCE_VERSION_11_2;
|
||||||
}
|
}
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
if (ASIC_REV_IS_VEGAM(asic_id.hw_internal_rev))
|
||||||
|
dc_version = DCE_VERSION_11_22;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case FAMILY_AI:
|
case FAMILY_AI:
|
||||||
dc_version = DCE_VERSION_12_0;
|
dc_version = DCE_VERSION_12_0;
|
||||||
|
@ -125,6 +129,9 @@ struct resource_pool *dc_create_resource_pool(
|
||||||
num_virtual_links, dc, asic_id);
|
num_virtual_links, dc, asic_id);
|
||||||
break;
|
break;
|
||||||
case DCE_VERSION_11_2:
|
case DCE_VERSION_11_2:
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
case DCE_VERSION_11_22:
|
||||||
|
#endif
|
||||||
res_pool = dce112_create_resource_pool(
|
res_pool = dce112_create_resource_pool(
|
||||||
num_virtual_links, dc);
|
num_virtual_links, dc);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -590,6 +590,9 @@ static uint32_t dce110_get_pix_clk_dividers(
|
||||||
pll_settings, pix_clk_params);
|
pll_settings, pix_clk_params);
|
||||||
break;
|
break;
|
||||||
case DCE_VERSION_11_2:
|
case DCE_VERSION_11_2:
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
case DCE_VERSION_11_22:
|
||||||
|
#endif
|
||||||
case DCE_VERSION_12_0:
|
case DCE_VERSION_12_0:
|
||||||
#if defined(CONFIG_DRM_AMD_DC_DCN1_0)
|
#if defined(CONFIG_DRM_AMD_DC_DCN1_0)
|
||||||
case DCN_VERSION_1_0:
|
case DCN_VERSION_1_0:
|
||||||
|
@ -979,6 +982,9 @@ static bool dce110_program_pix_clk(
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case DCE_VERSION_11_2:
|
case DCE_VERSION_11_2:
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
case DCE_VERSION_11_22:
|
||||||
|
#endif
|
||||||
case DCE_VERSION_12_0:
|
case DCE_VERSION_12_0:
|
||||||
#if defined(CONFIG_DRM_AMD_DC_DCN1_0)
|
#if defined(CONFIG_DRM_AMD_DC_DCN1_0)
|
||||||
case DCN_VERSION_1_0:
|
case DCN_VERSION_1_0:
|
||||||
|
|
|
@ -75,6 +75,9 @@ bool dal_hw_factory_init(
|
||||||
return true;
|
return true;
|
||||||
case DCE_VERSION_11_0:
|
case DCE_VERSION_11_0:
|
||||||
case DCE_VERSION_11_2:
|
case DCE_VERSION_11_2:
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
case DCE_VERSION_11_22:
|
||||||
|
#endif
|
||||||
dal_hw_factory_dce110_init(factory);
|
dal_hw_factory_dce110_init(factory);
|
||||||
return true;
|
return true;
|
||||||
case DCE_VERSION_12_0:
|
case DCE_VERSION_12_0:
|
||||||
|
|
|
@ -72,6 +72,9 @@ bool dal_hw_translate_init(
|
||||||
case DCE_VERSION_10_0:
|
case DCE_VERSION_10_0:
|
||||||
case DCE_VERSION_11_0:
|
case DCE_VERSION_11_0:
|
||||||
case DCE_VERSION_11_2:
|
case DCE_VERSION_11_2:
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
case DCE_VERSION_11_22:
|
||||||
|
#endif
|
||||||
dal_hw_translate_dce110_init(translate);
|
dal_hw_translate_dce110_init(translate);
|
||||||
return true;
|
return true;
|
||||||
case DCE_VERSION_12_0:
|
case DCE_VERSION_12_0:
|
||||||
|
|
|
@ -83,6 +83,9 @@ struct i2caux *dal_i2caux_create(
|
||||||
case DCE_VERSION_8_3:
|
case DCE_VERSION_8_3:
|
||||||
return dal_i2caux_dce80_create(ctx);
|
return dal_i2caux_dce80_create(ctx);
|
||||||
case DCE_VERSION_11_2:
|
case DCE_VERSION_11_2:
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
case DCE_VERSION_11_22:
|
||||||
|
#endif
|
||||||
return dal_i2caux_dce112_create(ctx);
|
return dal_i2caux_dce112_create(ctx);
|
||||||
case DCE_VERSION_11_0:
|
case DCE_VERSION_11_0:
|
||||||
return dal_i2caux_dce110_create(ctx);
|
return dal_i2caux_dce110_create(ctx);
|
||||||
|
|
|
@ -43,6 +43,9 @@ enum bw_calcs_version {
|
||||||
BW_CALCS_VERSION_POLARIS10,
|
BW_CALCS_VERSION_POLARIS10,
|
||||||
BW_CALCS_VERSION_POLARIS11,
|
BW_CALCS_VERSION_POLARIS11,
|
||||||
BW_CALCS_VERSION_POLARIS12,
|
BW_CALCS_VERSION_POLARIS12,
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
BW_CALCS_VERSION_VEGAM,
|
||||||
|
#endif
|
||||||
BW_CALCS_VERSION_STONEY,
|
BW_CALCS_VERSION_STONEY,
|
||||||
BW_CALCS_VERSION_VEGA10
|
BW_CALCS_VERSION_VEGA10
|
||||||
};
|
};
|
||||||
|
|
|
@ -98,7 +98,14 @@
|
||||||
(eChipRev < VI_POLARIS11_M_A0))
|
(eChipRev < VI_POLARIS11_M_A0))
|
||||||
#define ASIC_REV_IS_POLARIS11_M(eChipRev) ((eChipRev >= VI_POLARIS11_M_A0) && \
|
#define ASIC_REV_IS_POLARIS11_M(eChipRev) ((eChipRev >= VI_POLARIS11_M_A0) && \
|
||||||
(eChipRev < VI_POLARIS12_V_A0))
|
(eChipRev < VI_POLARIS12_V_A0))
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
#define VI_VEGAM_A0 110
|
||||||
|
#define ASIC_REV_IS_POLARIS12_V(eChipRev) ((eChipRev >= VI_POLARIS12_V_A0) && \
|
||||||
|
(eChipRev < VI_VEGAM_A0))
|
||||||
|
#define ASIC_REV_IS_VEGAM(eChipRev) (eChipRev >= VI_VEGAM_A0)
|
||||||
|
#else
|
||||||
#define ASIC_REV_IS_POLARIS12_V(eChipRev) (eChipRev >= VI_POLARIS12_V_A0)
|
#define ASIC_REV_IS_POLARIS12_V(eChipRev) (eChipRev >= VI_POLARIS12_V_A0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* DCE11 */
|
/* DCE11 */
|
||||||
#define CZ_CARRIZO_A0 0x01
|
#define CZ_CARRIZO_A0 0x01
|
||||||
|
|
|
@ -40,6 +40,9 @@ enum dce_version {
|
||||||
DCE_VERSION_10_0,
|
DCE_VERSION_10_0,
|
||||||
DCE_VERSION_11_0,
|
DCE_VERSION_11_0,
|
||||||
DCE_VERSION_11_2,
|
DCE_VERSION_11_2,
|
||||||
|
#if defined(CONFIG_DRM_AMD_DC_VEGAM)
|
||||||
|
DCE_VERSION_11_22,
|
||||||
|
#endif
|
||||||
DCE_VERSION_12_0,
|
DCE_VERSION_12_0,
|
||||||
DCE_VERSION_MAX,
|
DCE_VERSION_MAX,
|
||||||
DCN_VERSION_1_0,
|
DCN_VERSION_1_0,
|
||||||
|
|
Loading…
Reference in New Issue