drm/amd/display: Implement VEGAM device IDs in DC
authorJerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>
Wed, 11 Apr 2018 20:39:35 +0000 (15:39 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 May 2018 18:44:01 +0000 (13:44 -0500)
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>
12 files changed:
drivers/gpu/drm/amd/display/Kconfig
drivers/gpu/drm/amd/display/dc/bios/command_table_helper.c
drivers/gpu/drm/amd/display/dc/bios/command_table_helper2.c
drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
drivers/gpu/drm/amd/display/dc/core/dc_resource.c
drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c
drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c
drivers/gpu/drm/amd/display/dc/gpio/hw_translate.c
drivers/gpu/drm/amd/display/dc/i2caux/i2caux.c
drivers/gpu/drm/amd/display/dc/inc/dce_calcs.h
drivers/gpu/drm/amd/display/include/dal_asic_id.h
drivers/gpu/drm/amd/display/include/dal_types.h

index d5d4586e617653b982d54ade172302c5294b9714..e6ca72c0d3475e137e97f85fd50d2c3bd178a4f9 100644 (file)
@@ -34,4 +34,10 @@ config DEBUG_KERNEL_DC
          if you want to hit
          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
index 2979358c6a55c27be5e64728dbdae6500abd1c2b..be066c49b984b63af7a789e536641e94e707cefd 100644 (file)
@@ -51,6 +51,9 @@ bool dal_bios_parser_init_cmd_tbl_helper(
                return true;
 
        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();
                return true;
 
index 9a4d30dd4969360096a2b64029d756a6f3b5aeb8..9b9e06995805ced525acfe10e420816923c1e76a 100644 (file)
@@ -52,6 +52,9 @@ bool dal_bios_parser_init_cmd_tbl_helper2(
                return true;
 
        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();
                return true;
 #if defined(CONFIG_DRM_AMD_DC_DCN1_0)
index 56f46a065a93d92bbd3e225aeab8f8f5ea05f090..4ee3c26f7c13c504a91ea40d07c384fb36723318 100644 (file)
@@ -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;
                if (ASIC_REV_IS_POLARIS11_M(asic_id.hw_internal_rev))
                        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;
 
        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*/
                break;
        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.dram_channel_width_in_bits = 32;
                vbios.number_of_dram_channels = asic_id.vram_width / vbios.dram_channel_width_in_bits;
index d7a92eca8a273f33de950f0331378847c41ba512..447729cd29f0b550d8440d7f91919abb2abb7d75 100644 (file)
@@ -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)) {
                        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;
        case FAMILY_AI:
                dc_version = DCE_VERSION_12_0;
@@ -125,6 +129,9 @@ struct resource_pool *dc_create_resource_pool(
                        num_virtual_links, dc, asic_id);
                break;
        case DCE_VERSION_11_2:
+#if defined(CONFIG_DRM_AMD_DC_VEGAM)
+       case DCE_VERSION_11_22:
+#endif
                res_pool = dce112_create_resource_pool(
                        num_virtual_links, dc);
                break;
index 67dad7f1e64392609fcc139e69e6e4cdcaa167d0..223db98a568a715a618a5327ad7f74a531258e31 100644 (file)
@@ -590,6 +590,9 @@ static uint32_t dce110_get_pix_clk_dividers(
                        pll_settings, pix_clk_params);
                break;
        case DCE_VERSION_11_2:
+#if defined(CONFIG_DRM_AMD_DC_VEGAM)
+       case DCE_VERSION_11_22:
+#endif
        case DCE_VERSION_12_0:
 #if defined(CONFIG_DRM_AMD_DC_DCN1_0)
        case DCN_VERSION_1_0:
@@ -979,6 +982,9 @@ static bool dce110_program_pix_clk(
 
                break;
        case DCE_VERSION_11_2:
+#if defined(CONFIG_DRM_AMD_DC_VEGAM)
+       case DCE_VERSION_11_22:
+#endif
        case DCE_VERSION_12_0:
 #if defined(CONFIG_DRM_AMD_DC_DCN1_0)
        case DCN_VERSION_1_0:
index 87b580fa4bc90dd74362c7ed1719ec2fe74187f8..61fe484da1a0080e453ccb2f44cb99426795b75e 100644 (file)
@@ -75,6 +75,9 @@ bool dal_hw_factory_init(
                return true;
        case DCE_VERSION_11_0:
        case DCE_VERSION_11_2:
+#if defined(CONFIG_DRM_AMD_DC_VEGAM)
+       case DCE_VERSION_11_22:
+#endif
                dal_hw_factory_dce110_init(factory);
                return true;
        case DCE_VERSION_12_0:
index 0ae8ace257391310cf5aa234fd2d03acf43a2bb4..910ae2b7bf6426e175a29b784e182ac3ac9b90e5 100644 (file)
@@ -72,6 +72,9 @@ bool dal_hw_translate_init(
        case DCE_VERSION_10_0:
        case DCE_VERSION_11_0:
        case DCE_VERSION_11_2:
+#if defined(CONFIG_DRM_AMD_DC_VEGAM)
+       case DCE_VERSION_11_22:
+#endif
                dal_hw_translate_dce110_init(translate);
                return true;
        case DCE_VERSION_12_0:
index 5cbf6626b8d40cb896d371518b2790433e952066..c3d7c320fdba92bfc9cc2d77ef8e1856b6ea06d3 100644 (file)
@@ -83,6 +83,9 @@ struct i2caux *dal_i2caux_create(
        case DCE_VERSION_8_3:
                return dal_i2caux_dce80_create(ctx);
        case DCE_VERSION_11_2:
+#if defined(CONFIG_DRM_AMD_DC_VEGAM)
+       case DCE_VERSION_11_22:
+#endif
                return dal_i2caux_dce112_create(ctx);
        case DCE_VERSION_11_0:
                return dal_i2caux_dce110_create(ctx);
index 0bd87f24fc06a59691922ba9087322e2cf708ef1..933ea7a1e18bede7be678556eb971914c38bc1ed 100644 (file)
@@ -43,6 +43,9 @@ enum bw_calcs_version {
        BW_CALCS_VERSION_POLARIS10,
        BW_CALCS_VERSION_POLARIS11,
        BW_CALCS_VERSION_POLARIS12,
+#if defined(CONFIG_DRM_AMD_DC_VEGAM)
+       BW_CALCS_VERSION_VEGAM,
+#endif
        BW_CALCS_VERSION_STONEY,
        BW_CALCS_VERSION_VEGA10
 };
index 9831cb5eaa7cfc8b67d33c8ee4cbcc7ec3b915c3..3e8e535e08f21aa109abedfff4db65add6527e0e 100644 (file)
                (eChipRev < VI_POLARIS11_M_A0))
 #define ASIC_REV_IS_POLARIS11_M(eChipRev) ((eChipRev >= VI_POLARIS11_M_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)
+#endif
 
 /* DCE11 */
 #define CZ_CARRIZO_A0 0x01
index fa543965feb51b373e1c5f6a44ec7f6452547b1f..5b1f8cef0c229c2a228bc2ce59a12358a04f7be7 100644 (file)
@@ -40,6 +40,9 @@ enum dce_version {
        DCE_VERSION_10_0,
        DCE_VERSION_11_0,
        DCE_VERSION_11_2,
+#if defined(CONFIG_DRM_AMD_DC_VEGAM)
+       DCE_VERSION_11_22,
+#endif
        DCE_VERSION_12_0,
        DCE_VERSION_MAX,
        DCN_VERSION_1_0,