drm/amd/display: Create DWB resource for DCN2
[Description] dcn20 has num_dwb =1 in the res cap, but not created. Signed-off-by: Charlene Liu <charlene.liu@amd.com> Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com> Reviewed-by: Duke Du <Duke.Du@amd.com> Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
		
							parent
							
								
									6bd8d7d3f7
								
							
						
					
					
						commit
						bb21290ff6
					
				| @ -10,7 +10,6 @@ ifdef CONFIG_DRM_AMD_DC_DSC_SUPPORT | ||||
| DCN20 += dcn20_dsc.o | ||||
| endif | ||||
| 
 | ||||
| 
 | ||||
| CFLAGS_dcn20_resource.o := -mhard-float -msse -mpreferred-stack-boundary=4 | ||||
| 
 | ||||
| AMD_DAL_DCN20 = $(addprefix $(AMDDALPATH)/dc/dcn20/,$(DCN20)) | ||||
|  | ||||
| @ -64,6 +64,9 @@ | ||||
| 
 | ||||
| #include "nbio/nbio_2_3_offset.h" | ||||
| 
 | ||||
| #include "dcn20/dcn20_dwb.h" | ||||
| #include "dcn20/dcn20_mmhubbub.h" | ||||
| 
 | ||||
| #include "mmhub/mmhub_2_0_0_offset.h" | ||||
| #include "mmhub/mmhub_2_0_0_sh_mask.h" | ||||
| 
 | ||||
| @ -470,6 +473,40 @@ static const struct dcn2_dpp_mask tf_mask = { | ||||
| 		TF_REG_LIST_SH_MASK_DCN20(_MASK) | ||||
| }; | ||||
| 
 | ||||
| #define dwbc_regs_dcn2(id)\ | ||||
| [id] = {\ | ||||
| 	DWBC_COMMON_REG_LIST_DCN2_0(id),\ | ||||
| 		} | ||||
| 
 | ||||
| static const struct dcn20_dwbc_registers dwbc20_regs[] = { | ||||
| 	dwbc_regs_dcn2(0), | ||||
| }; | ||||
| 
 | ||||
| static const struct dcn20_dwbc_shift dwbc20_shift = { | ||||
| 	DWBC_COMMON_MASK_SH_LIST_DCN2_0(__SHIFT) | ||||
| }; | ||||
| 
 | ||||
| static const struct dcn20_dwbc_mask dwbc20_mask = { | ||||
| 	DWBC_COMMON_MASK_SH_LIST_DCN2_0(_MASK) | ||||
| }; | ||||
| 
 | ||||
| #define mcif_wb_regs_dcn2(id)\ | ||||
| [id] = {\ | ||||
| 	MCIF_WB_COMMON_REG_LIST_DCN2_0(id),\ | ||||
| 		} | ||||
| 
 | ||||
| static const struct dcn20_mmhubbub_registers mcif_wb20_regs[] = { | ||||
| 	mcif_wb_regs_dcn2(0), | ||||
| }; | ||||
| 
 | ||||
| static const struct dcn20_mmhubbub_shift mcif_wb20_shift = { | ||||
| 	MCIF_WB_COMMON_MASK_SH_LIST_DCN2_0(__SHIFT) | ||||
| }; | ||||
| 
 | ||||
| static const struct dcn20_mmhubbub_mask mcif_wb20_mask = { | ||||
| 	MCIF_WB_COMMON_MASK_SH_LIST_DCN2_0(_MASK) | ||||
| }; | ||||
| 
 | ||||
| static const struct dcn20_mpc_registers mpc_regs = { | ||||
| 		MPC_REG_LIST_DCN2_0(0), | ||||
| 		MPC_REG_LIST_DCN2_0(1), | ||||
| @ -1088,6 +1125,17 @@ static void destruct(struct dcn20_resource_pool *pool) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	for (i = 0; i < pool->base.res_cap->num_dwb; i++) { | ||||
| 		if (pool->base.dwbc[i] != NULL) { | ||||
| 			kfree(TO_DCN20_DWBC(pool->base.dwbc[i])); | ||||
| 			pool->base.dwbc[i] = NULL; | ||||
| 		} | ||||
| 		if (pool->base.mcif_wb[i] != NULL) { | ||||
| 			kfree(TO_DCN20_MMHUBBUB(pool->base.mcif_wb[i])); | ||||
| 			pool->base.mcif_wb[i] = NULL; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	for (i = 0; i < pool->base.audio_count; i++) { | ||||
| 		if (pool->base.audios[i]) | ||||
| 			dce_aud_destroy(&pool->base.audios[i]); | ||||
| @ -2384,6 +2432,58 @@ static struct resource_funcs dcn20_res_pool_funcs = { | ||||
| #endif | ||||
| }; | ||||
| 
 | ||||
| bool dcn20_dwbc_create(struct dc_context *ctx, struct resource_pool *pool) | ||||
| { | ||||
| 	int i; | ||||
| 	uint32_t pipe_count = pool->res_cap->num_dwb; | ||||
| 
 | ||||
| 	ASSERT(pipe_count > 0); | ||||
| 
 | ||||
| 	for (i = 0; i < pipe_count; i++) { | ||||
| 		struct dcn20_dwbc *dwbc20 = kzalloc(sizeof(struct dcn20_dwbc), | ||||
| 						    GFP_KERNEL); | ||||
| 
 | ||||
| 		if (!dwbc20) { | ||||
| 			dm_error("DC: failed to create dwbc20!\n"); | ||||
| 			return false; | ||||
| 		} | ||||
| 		dcn20_dwbc_construct(dwbc20, ctx, | ||||
| 				&dwbc20_regs[i], | ||||
| 				&dwbc20_shift, | ||||
| 				&dwbc20_mask, | ||||
| 				i); | ||||
| 		pool->dwbc[i] = &dwbc20->base; | ||||
| 	} | ||||
| 	return true; | ||||
| } | ||||
| 
 | ||||
| bool dcn20_mmhubbub_create(struct dc_context *ctx, struct resource_pool *pool) | ||||
| { | ||||
| 	int i; | ||||
| 	uint32_t pipe_count = pool->res_cap->num_dwb; | ||||
| 
 | ||||
| 	ASSERT(pipe_count > 0); | ||||
| 
 | ||||
| 	for (i = 0; i < pipe_count; i++) { | ||||
| 		struct dcn20_mmhubbub *mcif_wb20 = kzalloc(sizeof(struct dcn20_mmhubbub), | ||||
| 						    GFP_KERNEL); | ||||
| 
 | ||||
| 		if (!mcif_wb20) { | ||||
| 			dm_error("DC: failed to create mcif_wb20!\n"); | ||||
| 			return false; | ||||
| 		} | ||||
| 
 | ||||
| 		dcn20_mmhubbub_construct(mcif_wb20, ctx, | ||||
| 				&mcif_wb20_regs[i], | ||||
| 				&mcif_wb20_shift, | ||||
| 				&mcif_wb20_mask, | ||||
| 				i); | ||||
| 
 | ||||
| 		pool->mcif_wb[i] = &mcif_wb20->base; | ||||
| 	} | ||||
| 	return true; | ||||
| } | ||||
| 
 | ||||
| struct pp_smu_funcs *dcn20_pp_smu_create(struct dc_context *ctx) | ||||
| { | ||||
| 	struct pp_smu_funcs *pp_smu = kzalloc(sizeof(*pp_smu), GFP_KERNEL); | ||||
| @ -2972,6 +3072,17 @@ static bool construct( | ||||
| 	} | ||||
| #endif | ||||
| 
 | ||||
| 	if (!dcn20_dwbc_create(ctx, &pool->base)) { | ||||
| 		BREAK_TO_DEBUGGER(); | ||||
| 		dm_error("DC: failed to create dwbc!\n"); | ||||
| 		goto create_fail; | ||||
| 	} | ||||
| 	if (!dcn20_mmhubbub_create(ctx, &pool->base)) { | ||||
| 		BREAK_TO_DEBUGGER(); | ||||
| 		dm_error("DC: failed to create mcif_wb!\n"); | ||||
| 		goto create_fail; | ||||
| 	} | ||||
| 
 | ||||
| 	if (!resource_construct(num_virtual_links, dc, &pool->base, | ||||
| 			(!IS_FPGA_MAXIMUS_DC(dc->ctx->dce_environment) ? | ||||
| 			&res_create_funcs : &res_create_maximus_funcs))) | ||||
|  | ||||
| @ -66,6 +66,9 @@ | ||||
| #ifdef CONFIG_DRM_AMD_DC_DSC_SUPPORT | ||||
| #define DC_LOG_DSC(...) DRM_DEBUG_KMS(__VA_ARGS__) | ||||
| #endif | ||||
| #if defined(CONFIG_DRM_AMD_DC_DCN3_0) || defined(CONFIG_DRM_AMD_DC_DCN2_0) | ||||
| #define DC_LOG_DWB(...) DRM_DEBUG_KMS(__VA_ARGS__) | ||||
| #endif | ||||
| 
 | ||||
| struct dal_logger; | ||||
| 
 | ||||
|  | ||||
| @ -889,6 +889,8 @@ | ||||
| #define mmCNV_TEST_CRC_BLUE_BASE_IDX                                                                   2 | ||||
| #define mmWB_DEBUG_CTRL                                                                                0x01f2 | ||||
| #define mmWB_DEBUG_CTRL_BASE_IDX                                                                       2 | ||||
| #define mmWB_DBG_MODE                                                                                  0x01f3 | ||||
| #define mmWB_DBG_MODE_BASE_IDX                                                                         2 | ||||
| #define mmWB_HW_DEBUG                                                                                  0x01f4 | ||||
| #define mmWB_HW_DEBUG_BASE_IDX                                                                         2 | ||||
| #define mmWB_SOFT_RESET                                                                                0x01f5 | ||||
| @ -1065,6 +1067,8 @@ | ||||
| #define mmMCIF_WB0_MCIF_WB_SELF_REFRESH_CONTROL_BASE_IDX                                               2 | ||||
| #define mmMCIF_WB0_MULTI_LEVEL_QOS_CTRL                                                                0x02d9 | ||||
| #define mmMCIF_WB0_MULTI_LEVEL_QOS_CTRL_BASE_IDX                                                       2 | ||||
| #define mmMCIF_WB0_MCIF_WB_SECURITY_LEVEL                                                              0x02da | ||||
| #define mmMCIF_WB0_MCIF_WB_SECURITY_LEVEL_BASE_IDX                                                     2 | ||||
| #define mmMCIF_WB0_MCIF_WB_BUF_LUMA_SIZE                                                               0x02db | ||||
| #define mmMCIF_WB0_MCIF_WB_BUF_LUMA_SIZE_BASE_IDX                                                      2 | ||||
| #define mmMCIF_WB0_MCIF_WB_BUF_CHROMA_SIZE                                                             0x02dc | ||||
|  | ||||
| @ -5999,6 +5999,19 @@ | ||||
| #define WB_DEBUG_CTRL__WB_DEBUG_SEL__SHIFT                                                                    0x6 | ||||
| #define WB_DEBUG_CTRL__WB_DEBUG_EN_MASK                                                                       0x00000001L | ||||
| #define WB_DEBUG_CTRL__WB_DEBUG_SEL_MASK                                                                      0x000000C0L | ||||
| //WB_DBG_MODE
 | ||||
| #define WB_DBG_MODE__WB_DBG_MODE_EN__SHIFT                                                                    0x0 | ||||
| #define WB_DBG_MODE__WB_DBG_DIN_FMT__SHIFT                                                                    0x1 | ||||
| #define WB_DBG_MODE__WB_DBG_36MODE__SHIFT                                                                     0x2 | ||||
| #define WB_DBG_MODE__WB_DBG_CMAP__SHIFT                                                                       0x3 | ||||
| #define WB_DBG_MODE__WB_DBG_PXLRATE_ERROR__SHIFT                                                              0x8 | ||||
| #define WB_DBG_MODE__WB_DBG_SOURCE_WIDTH__SHIFT                                                               0x10 | ||||
| #define WB_DBG_MODE__WB_DBG_MODE_EN_MASK                                                                      0x00000001L | ||||
| #define WB_DBG_MODE__WB_DBG_DIN_FMT_MASK                                                                      0x00000002L | ||||
| #define WB_DBG_MODE__WB_DBG_36MODE_MASK                                                                       0x00000004L | ||||
| #define WB_DBG_MODE__WB_DBG_CMAP_MASK                                                                         0x00000008L | ||||
| #define WB_DBG_MODE__WB_DBG_PXLRATE_ERROR_MASK                                                                0x00000100L | ||||
| #define WB_DBG_MODE__WB_DBG_SOURCE_WIDTH_MASK                                                                 0x7FFF0000L | ||||
| //WB_HW_DEBUG
 | ||||
| #define WB_HW_DEBUG__WB_HW_DEBUG__SHIFT                                                                       0x0 | ||||
| #define WB_HW_DEBUG__WB_HW_DEBUG_MASK                                                                         0xFFFFFFFFL | ||||
| @ -6646,6 +6659,9 @@ | ||||
| //MCIF_WB0_MULTI_LEVEL_QOS_CTRL
 | ||||
| #define MCIF_WB0_MULTI_LEVEL_QOS_CTRL__MAX_SCALED_TIME_TO_URGENT__SHIFT                                       0x0 | ||||
| #define MCIF_WB0_MULTI_LEVEL_QOS_CTRL__MAX_SCALED_TIME_TO_URGENT_MASK                                         0x003FFFFFL | ||||
| //MCIF_WB0_MCIF_WB_SECURITY_LEVEL
 | ||||
| #define MCIF_WB0_MCIF_WB_SECURITY_LEVEL__MCIF_WB_SECURITY_LEVEL__SHIFT                                        0x0 | ||||
| #define MCIF_WB0_MCIF_WB_SECURITY_LEVEL__MCIF_WB_SECURITY_LEVEL_MASK                                          0x00000007L | ||||
| //MCIF_WB0_MCIF_WB_BUF_LUMA_SIZE
 | ||||
| #define MCIF_WB0_MCIF_WB_BUF_LUMA_SIZE__MCIF_WB_BUF_LUMA_SIZE__SHIFT                                          0x0 | ||||
| #define MCIF_WB0_MCIF_WB_BUF_LUMA_SIZE__MCIF_WB_BUF_LUMA_SIZE_MASK                                            0x000FFFFFL | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user