aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3018-drm-amd-display-hubp-refactor.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3018-drm-amd-display-hubp-refactor.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3018-drm-amd-display-hubp-refactor.patch333
1 files changed, 333 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3018-drm-amd-display-hubp-refactor.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3018-drm-amd-display-hubp-refactor.patch
new file mode 100644
index 00000000..6bf0ac7a
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3018-drm-amd-display-hubp-refactor.patch
@@ -0,0 +1,333 @@
+From a8e2e1dc7408eb2a360438bd49c7fc06707c0888 Mon Sep 17 00:00:00 2001
+From: Yue Hin Lau <Yuehin.Lau@amd.com>
+Date: Fri, 8 Dec 2017 15:57:44 -0500
+Subject: [PATCH 3018/4131] drm/amd/display: hubp refactor
+
+Signed-off-by: Yue Hin Lau <Yuehin.Lau@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.c | 18 +-
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.h | 216 +++++++++++-----------
+ 2 files changed, 120 insertions(+), 114 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.c
+index 943b7ac..585b333 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.c
+@@ -107,10 +107,12 @@ static void hubp1_vready_workaround(struct hubp *hubp,
+ }
+
+ void hubp1_program_tiling(
+- struct dcn10_hubp *hubp1,
++ struct hubp *hubp,
+ const union dc_tiling_info *info,
+ const enum surface_pixel_format pixel_format)
+ {
++ struct dcn10_hubp *hubp1 = TO_DCN10_HUBP(hubp);
++
+ REG_UPDATE_6(DCSURF_ADDR_CONFIG,
+ NUM_PIPES, log_2(info->gfx9.num_pipes),
+ NUM_BANKS, log_2(info->gfx9.num_banks),
+@@ -127,13 +129,14 @@ void hubp1_program_tiling(
+ }
+
+ void hubp1_program_size_and_rotation(
+- struct dcn10_hubp *hubp1,
++ struct hubp *hubp,
+ enum dc_rotation_angle rotation,
+ enum surface_pixel_format format,
+ const union plane_size *plane_size,
+ struct dc_plane_dcc_param *dcc,
+ bool horizontal_mirror)
+ {
++ struct dcn10_hubp *hubp1 = TO_DCN10_HUBP(hubp);
+ uint32_t pitch, meta_pitch, pitch_c, meta_pitch_c, mirror;
+
+ /* Program data and meta surface pitch (calculation from addrlib)
+@@ -189,9 +192,10 @@ void hubp1_program_size_and_rotation(
+ }
+
+ void hubp1_program_pixel_format(
+- struct dcn10_hubp *hubp1,
++ struct hubp *hubp,
+ enum surface_pixel_format format)
+ {
++ struct dcn10_hubp *hubp1 = TO_DCN10_HUBP(hubp);
+ uint32_t red_bar = 3;
+ uint32_t blue_bar = 2;
+
+@@ -435,13 +439,11 @@ void hubp1_program_surface_config(
+ struct dc_plane_dcc_param *dcc,
+ bool horizontal_mirror)
+ {
+- struct dcn10_hubp *hubp1 = TO_DCN10_HUBP(hubp);
+-
+ hubp1_dcc_control(hubp, dcc->enable, dcc->grph.independent_64b_blks);
+- hubp1_program_tiling(hubp1, tiling_info, format);
++ hubp1_program_tiling(hubp, tiling_info, format);
+ hubp1_program_size_and_rotation(
+- hubp1, rotation, format, plane_size, dcc, horizontal_mirror);
+- hubp1_program_pixel_format(hubp1, format);
++ hubp, rotation, format, plane_size, dcc, horizontal_mirror);
++ hubp1_program_pixel_format(hubp, format);
+ }
+
+ void hubp1_program_requestor(
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.h b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.h
+index 58a792f..26f638d 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.h
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.h
+@@ -127,112 +127,114 @@
+ SRI(CURSOR_HOT_SPOT, CURSOR, id), \
+ SRI(CURSOR_DST_OFFSET, CURSOR, id)
+
++#define HUBP_COMMON_REG_VARIABLE_LIST \
++ uint32_t DCHUBP_CNTL; \
++ uint32_t HUBPREQ_DEBUG_DB; \
++ uint32_t DCSURF_ADDR_CONFIG; \
++ uint32_t DCSURF_TILING_CONFIG; \
++ uint32_t DCSURF_SURFACE_PITCH; \
++ uint32_t DCSURF_SURFACE_PITCH_C; \
++ uint32_t DCSURF_SURFACE_CONFIG; \
++ uint32_t DCSURF_FLIP_CONTROL; \
++ uint32_t DCSURF_PRI_VIEWPORT_DIMENSION; \
++ uint32_t DCSURF_PRI_VIEWPORT_START; \
++ uint32_t DCSURF_SEC_VIEWPORT_DIMENSION; \
++ uint32_t DCSURF_SEC_VIEWPORT_START; \
++ uint32_t DCSURF_PRI_VIEWPORT_DIMENSION_C; \
++ uint32_t DCSURF_PRI_VIEWPORT_START_C; \
++ uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH; \
++ uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS; \
++ uint32_t DCSURF_SECONDARY_SURFACE_ADDRESS_HIGH; \
++ uint32_t DCSURF_SECONDARY_SURFACE_ADDRESS; \
++ uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH; \
++ uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS; \
++ uint32_t DCSURF_SECONDARY_META_SURFACE_ADDRESS_HIGH; \
++ uint32_t DCSURF_SECONDARY_META_SURFACE_ADDRESS; \
++ uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH_C; \
++ uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS_C; \
++ uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH_C; \
++ uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS_C; \
++ uint32_t DCSURF_SURFACE_INUSE; \
++ uint32_t DCSURF_SURFACE_INUSE_HIGH; \
++ uint32_t DCSURF_SURFACE_INUSE_C; \
++ uint32_t DCSURF_SURFACE_INUSE_HIGH_C; \
++ uint32_t DCSURF_SURFACE_EARLIEST_INUSE; \
++ uint32_t DCSURF_SURFACE_EARLIEST_INUSE_HIGH; \
++ uint32_t DCSURF_SURFACE_EARLIEST_INUSE_C; \
++ uint32_t DCSURF_SURFACE_EARLIEST_INUSE_HIGH_C; \
++ uint32_t DCSURF_SURFACE_CONTROL; \
++ uint32_t HUBPRET_CONTROL; \
++ uint32_t DCN_EXPANSION_MODE; \
++ uint32_t DCHUBP_REQ_SIZE_CONFIG; \
++ uint32_t DCHUBP_REQ_SIZE_CONFIG_C; \
++ uint32_t BLANK_OFFSET_0; \
++ uint32_t BLANK_OFFSET_1; \
++ uint32_t DST_DIMENSIONS; \
++ uint32_t DST_AFTER_SCALER; \
++ uint32_t PREFETCH_SETTINS; \
++ uint32_t PREFETCH_SETTINGS; \
++ uint32_t VBLANK_PARAMETERS_0; \
++ uint32_t REF_FREQ_TO_PIX_FREQ; \
++ uint32_t VBLANK_PARAMETERS_1; \
++ uint32_t VBLANK_PARAMETERS_3; \
++ uint32_t NOM_PARAMETERS_0; \
++ uint32_t NOM_PARAMETERS_1; \
++ uint32_t NOM_PARAMETERS_4; \
++ uint32_t NOM_PARAMETERS_5; \
++ uint32_t PER_LINE_DELIVERY_PRE; \
++ uint32_t PER_LINE_DELIVERY; \
++ uint32_t PREFETCH_SETTINS_C; \
++ uint32_t PREFETCH_SETTINGS_C; \
++ uint32_t VBLANK_PARAMETERS_2; \
++ uint32_t VBLANK_PARAMETERS_4; \
++ uint32_t NOM_PARAMETERS_2; \
++ uint32_t NOM_PARAMETERS_3; \
++ uint32_t NOM_PARAMETERS_6; \
++ uint32_t NOM_PARAMETERS_7; \
++ uint32_t DCN_TTU_QOS_WM; \
++ uint32_t DCN_GLOBAL_TTU_CNTL; \
++ uint32_t DCN_SURF0_TTU_CNTL0; \
++ uint32_t DCN_SURF0_TTU_CNTL1; \
++ uint32_t DCN_SURF1_TTU_CNTL0; \
++ uint32_t DCN_SURF1_TTU_CNTL1; \
++ uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_MSB; \
++ uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LSB; \
++ uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_START_ADDR_MSB; \
++ uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LSB; \
++ uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_END_ADDR_MSB; \
++ uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_END_ADDR_LSB; \
++ uint32_t DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_MSB; \
++ uint32_t DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_LSB; \
++ uint32_t DCN_VM_MX_L1_TLB_CNTL; \
++ uint32_t DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB; \
++ uint32_t DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB; \
++ uint32_t DCN_VM_SYSTEM_APERTURE_LOW_ADDR_MSB; \
++ uint32_t DCN_VM_SYSTEM_APERTURE_LOW_ADDR_LSB; \
++ uint32_t DCN_VM_SYSTEM_APERTURE_HIGH_ADDR_MSB; \
++ uint32_t DCN_VM_SYSTEM_APERTURE_HIGH_ADDR_LSB; \
++ uint32_t DCN_VM_SYSTEM_APERTURE_LOW_ADDR; \
++ uint32_t DCN_VM_SYSTEM_APERTURE_HIGH_ADDR; \
++ uint32_t DCHUBBUB_SDPIF_FB_BASE; \
++ uint32_t DCHUBBUB_SDPIF_FB_OFFSET; \
++ uint32_t DCN_VM_FB_LOCATION_TOP; \
++ uint32_t DCN_VM_FB_LOCATION_BASE; \
++ uint32_t DCN_VM_FB_OFFSET; \
++ uint32_t DCN_VM_AGP_BASE; \
++ uint32_t DCN_VM_AGP_BOT; \
++ uint32_t DCN_VM_AGP_TOP; \
++ uint32_t CURSOR_SETTINS; \
++ uint32_t CURSOR_SETTINGS; \
++ uint32_t CURSOR_SURFACE_ADDRESS_HIGH; \
++ uint32_t CURSOR_SURFACE_ADDRESS; \
++ uint32_t CURSOR_SIZE; \
++ uint32_t CURSOR_CONTROL; \
++ uint32_t CURSOR_POSITION; \
++ uint32_t CURSOR_HOT_SPOT; \
++ uint32_t CURSOR_DST_OFFSET;
+
+
+ struct dcn_mi_registers {
+- uint32_t DCHUBP_CNTL;
+- uint32_t HUBPREQ_DEBUG_DB;
+- uint32_t DCSURF_ADDR_CONFIG;
+- uint32_t DCSURF_TILING_CONFIG;
+- uint32_t DCSURF_SURFACE_PITCH;
+- uint32_t DCSURF_SURFACE_PITCH_C;
+- uint32_t DCSURF_SURFACE_CONFIG;
+- uint32_t DCSURF_FLIP_CONTROL;
+- uint32_t DCSURF_PRI_VIEWPORT_DIMENSION;
+- uint32_t DCSURF_PRI_VIEWPORT_START;
+- uint32_t DCSURF_SEC_VIEWPORT_DIMENSION;
+- uint32_t DCSURF_SEC_VIEWPORT_START;
+- uint32_t DCSURF_PRI_VIEWPORT_DIMENSION_C;
+- uint32_t DCSURF_PRI_VIEWPORT_START_C;
+- uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH;
+- uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS;
+- uint32_t DCSURF_SECONDARY_SURFACE_ADDRESS_HIGH;
+- uint32_t DCSURF_SECONDARY_SURFACE_ADDRESS;
+- uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH;
+- uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS;
+- uint32_t DCSURF_SECONDARY_META_SURFACE_ADDRESS_HIGH;
+- uint32_t DCSURF_SECONDARY_META_SURFACE_ADDRESS;
+- uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH_C;
+- uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS_C;
+- uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH_C;
+- uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS_C;
+- uint32_t DCSURF_SURFACE_INUSE;
+- uint32_t DCSURF_SURFACE_INUSE_HIGH;
+- uint32_t DCSURF_SURFACE_INUSE_C;
+- uint32_t DCSURF_SURFACE_INUSE_HIGH_C;
+- uint32_t DCSURF_SURFACE_EARLIEST_INUSE;
+- uint32_t DCSURF_SURFACE_EARLIEST_INUSE_HIGH;
+- uint32_t DCSURF_SURFACE_EARLIEST_INUSE_C;
+- uint32_t DCSURF_SURFACE_EARLIEST_INUSE_HIGH_C;
+- uint32_t DCSURF_SURFACE_CONTROL;
+- uint32_t HUBPRET_CONTROL;
+- uint32_t DCN_EXPANSION_MODE;
+- uint32_t DCHUBP_REQ_SIZE_CONFIG;
+- uint32_t DCHUBP_REQ_SIZE_CONFIG_C;
+- uint32_t BLANK_OFFSET_0;
+- uint32_t BLANK_OFFSET_1;
+- uint32_t DST_DIMENSIONS;
+- uint32_t DST_AFTER_SCALER;
+- uint32_t PREFETCH_SETTINS;
+- uint32_t PREFETCH_SETTINGS;
+- uint32_t VBLANK_PARAMETERS_0;
+- uint32_t REF_FREQ_TO_PIX_FREQ;
+- uint32_t VBLANK_PARAMETERS_1;
+- uint32_t VBLANK_PARAMETERS_3;
+- uint32_t NOM_PARAMETERS_0;
+- uint32_t NOM_PARAMETERS_1;
+- uint32_t NOM_PARAMETERS_4;
+- uint32_t NOM_PARAMETERS_5;
+- uint32_t PER_LINE_DELIVERY_PRE;
+- uint32_t PER_LINE_DELIVERY;
+- uint32_t PREFETCH_SETTINS_C;
+- uint32_t PREFETCH_SETTINGS_C;
+- uint32_t VBLANK_PARAMETERS_2;
+- uint32_t VBLANK_PARAMETERS_4;
+- uint32_t NOM_PARAMETERS_2;
+- uint32_t NOM_PARAMETERS_3;
+- uint32_t NOM_PARAMETERS_6;
+- uint32_t NOM_PARAMETERS_7;
+- uint32_t DCN_TTU_QOS_WM;
+- uint32_t DCN_GLOBAL_TTU_CNTL;
+- uint32_t DCN_SURF0_TTU_CNTL0;
+- uint32_t DCN_SURF0_TTU_CNTL1;
+- uint32_t DCN_SURF1_TTU_CNTL0;
+- uint32_t DCN_SURF1_TTU_CNTL1;
+- uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_MSB;
+- uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LSB;
+- uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_START_ADDR_MSB;
+- uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LSB;
+- uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_END_ADDR_MSB;
+- uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_END_ADDR_LSB;
+- uint32_t DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_MSB;
+- uint32_t DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_LSB;
+- uint32_t DCN_VM_MX_L1_TLB_CNTL;
+- uint32_t DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB;
+- uint32_t DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB;
+- uint32_t DCN_VM_SYSTEM_APERTURE_LOW_ADDR_MSB;
+- uint32_t DCN_VM_SYSTEM_APERTURE_LOW_ADDR_LSB;
+- uint32_t DCN_VM_SYSTEM_APERTURE_HIGH_ADDR_MSB;
+- uint32_t DCN_VM_SYSTEM_APERTURE_HIGH_ADDR_LSB;
+- uint32_t DCN_VM_SYSTEM_APERTURE_LOW_ADDR;
+- uint32_t DCN_VM_SYSTEM_APERTURE_HIGH_ADDR;
+- uint32_t DCHUBBUB_SDPIF_FB_BASE;
+- uint32_t DCHUBBUB_SDPIF_FB_OFFSET;
+- uint32_t DCN_VM_FB_LOCATION_TOP;
+- uint32_t DCN_VM_FB_LOCATION_BASE;
+- uint32_t DCN_VM_FB_OFFSET;
+- uint32_t DCN_VM_AGP_BASE;
+- uint32_t DCN_VM_AGP_BOT;
+- uint32_t DCN_VM_AGP_TOP;
+- uint32_t CURSOR_SETTINS;
+- uint32_t CURSOR_SETTINGS;
+- uint32_t CURSOR_SURFACE_ADDRESS_HIGH;
+- uint32_t CURSOR_SURFACE_ADDRESS;
+- uint32_t CURSOR_SIZE;
+- uint32_t CURSOR_CONTROL;
+- uint32_t CURSOR_POSITION;
+- uint32_t CURSOR_HOT_SPOT;
+- uint32_t CURSOR_DST_OFFSET;
++ HUBP_COMMON_REG_VARIABLE_LIST
+ };
+
+ #define HUBP_SF(reg_name, field_name, post_fix)\
+@@ -398,6 +400,8 @@ struct dcn_mi_registers {
+ HUBP_SF(CURSOR0_CURSOR_DST_OFFSET, CURSOR_DST_X_OFFSET, mask_sh)
+
+
++
++
+ #define DCN_HUBP_REG_FIELD_LIST(type) \
+ type HUBP_BLANK_EN;\
+ type HUBP_TTU_DISABLE;\
+@@ -611,11 +615,11 @@ void hubp1_program_requestor(
+ struct _vcs_dpi_display_rq_regs_st *rq_regs);
+
+ void hubp1_program_pixel_format(
+- struct dcn10_hubp *hubp,
++ struct hubp *hubp,
+ enum surface_pixel_format format);
+
+ void hubp1_program_size_and_rotation(
+- struct dcn10_hubp *hubp,
++ struct hubp *hubp,
+ enum dc_rotation_angle rotation,
+ enum surface_pixel_format format,
+ const union plane_size *plane_size,
+@@ -623,7 +627,7 @@ void hubp1_program_size_and_rotation(
+ bool horizontal_mirror);
+
+ void hubp1_program_tiling(
+- struct dcn10_hubp *hubp,
++ struct hubp *hubp,
+ const union dc_tiling_info *info,
+ const enum surface_pixel_format pixel_format);
+
+--
+2.7.4
+