diff options
| -rw-r--r-- | drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 14 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 20 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/dp/dp_ctrl.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/dp/dp_panel.c | 19 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/msm_mdss.c | 2 | 
8 files changed, 37 insertions, 30 deletions
| diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c index 1c6626747b98..ecc3fc5cec22 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -99,7 +99,7 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname,  		 * was a bad idea, and is only provided for backwards  		 * compatibility for older targets.  		 */ -		return -ENODEV; +		return -ENOENT;  	}  	if (IS_ERR(fw)) { diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c index 34c56e855af7..3b171bf227d1 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -1171,8 +1171,6 @@ static void dpu_encoder_virt_atomic_mode_set(struct drm_encoder *drm_enc,  	cstate->num_mixers = num_lm; -	dpu_enc->connector = conn_state->connector; -  	for (i = 0; i < dpu_enc->num_phys_encs; i++) {  		struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i]; @@ -1270,6 +1268,8 @@ static void dpu_encoder_virt_atomic_enable(struct drm_encoder *drm_enc,  	dpu_enc->commit_done_timedout = false; +	dpu_enc->connector = drm_atomic_get_new_connector_for_encoder(state, drm_enc); +  	cur_mode = &dpu_enc->base.crtc->state->adjusted_mode;  	dpu_enc->wide_bus_en = dpu_encoder_is_widebus_enabled(drm_enc); diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c index fc178ec73907..648c8d0a4c36 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -308,8 +308,8 @@ static const u32 wb2_formats_rgb_yuv[] = {  	{ \  	.maxdwnscale = SSPP_UNITY_SCALE, \  	.maxupscale = SSPP_UNITY_SCALE, \ -	.format_list = plane_formats_yuv, \ -	.num_formats = ARRAY_SIZE(plane_formats_yuv), \ +	.format_list = plane_formats, \ +	.num_formats = ARRAY_SIZE(plane_formats), \  	.virt_format_list = plane_formats, \  	.virt_num_formats = ARRAY_SIZE(plane_formats), \  	} diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h index e2adc937ea63..935ff6fd172c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h @@ -31,24 +31,14 @@   * @fmt: Pointer to format string   */  #define DPU_DEBUG(fmt, ...)                                                \ -	do {                                                               \ -		if (drm_debug_enabled(DRM_UT_KMS))                         \ -			DRM_DEBUG(fmt, ##__VA_ARGS__); \ -		else                                                       \ -			pr_debug(fmt, ##__VA_ARGS__);                      \ -	} while (0) +	DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)  /**   * DPU_DEBUG_DRIVER - macro for hardware driver logging   * @fmt: Pointer to format string   */  #define DPU_DEBUG_DRIVER(fmt, ...)                                         \ -	do {                                                               \ -		if (drm_debug_enabled(DRM_UT_DRIVER))                      \ -			DRM_ERROR(fmt, ##__VA_ARGS__); \ -		else                                                       \ -			pr_debug(fmt, ##__VA_ARGS__);                      \ -	} while (0) +	DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)  #define DPU_ERROR(fmt, ...) pr_err("[dpu error]" fmt, ##__VA_ARGS__)  #define DPU_ERROR_RATELIMITED(fmt, ...) pr_err_ratelimited("[dpu error]" fmt, ##__VA_ARGS__) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c index 40c4dd2c3139..29298e066163 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c @@ -681,6 +681,9 @@ static int dpu_plane_prepare_fb(struct drm_plane *plane,  			new_state->fb, &layout);  	if (ret) {  		DPU_ERROR_PLANE(pdpu, "failed to get format layout, %d\n", ret); +		if (pstate->aspace) +			msm_framebuffer_cleanup(new_state->fb, pstate->aspace, +						pstate->needs_dirtyfb);  		return ret;  	} @@ -744,10 +747,9 @@ static int dpu_plane_atomic_check_pipe(struct dpu_plane *pdpu,  	min_src_size = MSM_FORMAT_IS_YUV(fmt) ? 2 : 1;  	if (MSM_FORMAT_IS_YUV(fmt) && -	    (!pipe->sspp->cap->sblk->scaler_blk.len || -	     !pipe->sspp->cap->sblk->csc_blk.len)) { +	    !pipe->sspp->cap->sblk->csc_blk.len) {  		DPU_DEBUG_PLANE(pdpu, -				"plane doesn't have scaler/csc for yuv\n"); +				"plane doesn't have csc for yuv\n");  		return -EINVAL;  	} @@ -864,6 +866,10 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,  	max_linewidth = pdpu->catalog->caps->max_linewidth; +	drm_rect_rotate(&pipe_cfg->src_rect, +			new_plane_state->fb->width, new_plane_state->fb->height, +			new_plane_state->rotation); +  	if ((drm_rect_width(&pipe_cfg->src_rect) > max_linewidth) ||  	     _dpu_plane_calc_clk(&crtc_state->adjusted_mode, pipe_cfg) > max_mdp_clk_rate) {  		/* @@ -913,6 +919,14 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,  		r_pipe_cfg->dst_rect.x1 = pipe_cfg->dst_rect.x2;  	} +	drm_rect_rotate_inv(&pipe_cfg->src_rect, +			    new_plane_state->fb->width, new_plane_state->fb->height, +			    new_plane_state->rotation); +	if (r_pipe->sspp) +		drm_rect_rotate_inv(&r_pipe_cfg->src_rect, +				    new_plane_state->fb->width, new_plane_state->fb->height, +				    new_plane_state->rotation); +  	ret = dpu_plane_atomic_check_pipe(pdpu, pipe, pipe_cfg, fmt, &crtc_state->adjusted_mode);  	if (ret)  		return ret; diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_ctrl.c index 7bc8a9f0657a..f342fc5ae41e 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -1286,6 +1286,8 @@ static int dp_ctrl_link_train(struct dp_ctrl_private *ctrl,  	link_info.rate = ctrl->link->link_params.rate;  	link_info.capabilities = DP_LINK_CAP_ENHANCED_FRAMING; +	dp_link_reset_phy_params_vx_px(ctrl->link); +  	dp_aux_link_configure(ctrl->aux, &link_info);  	if (drm_dp_max_downspread(dpcd)) diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c b/drivers/gpu/drm/msm/dp/dp_panel.c index a916b5f3b317..6ff6c9ef351f 100644 --- a/drivers/gpu/drm/msm/dp/dp_panel.c +++ b/drivers/gpu/drm/msm/dp/dp_panel.c @@ -90,22 +90,22 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel)  static u32 dp_panel_get_supported_bpp(struct dp_panel *dp_panel,  		u32 mode_edid_bpp, u32 mode_pclk_khz)  { -	struct dp_link_info *link_info; +	const struct dp_link_info *link_info;  	const u32 max_supported_bpp = 30, min_supported_bpp = 18; -	u32 bpp = 0, data_rate_khz = 0; +	u32 bpp, data_rate_khz; -	bpp = min_t(u32, mode_edid_bpp, max_supported_bpp); +	bpp = min(mode_edid_bpp, max_supported_bpp);  	link_info = &dp_panel->link_info;  	data_rate_khz = link_info->num_lanes * link_info->rate * 8; -	while (bpp > min_supported_bpp) { +	do {  		if (mode_pclk_khz * bpp <= data_rate_khz) -			break; +			return bpp;  		bpp -= 6; -	} +	} while (bpp > min_supported_bpp); -	return bpp; +	return min_supported_bpp;  }  int dp_panel_read_sink_caps(struct dp_panel *dp_panel, @@ -423,8 +423,9 @@ int dp_panel_init_panel_info(struct dp_panel *dp_panel)  				drm_mode->clock);  	drm_dbg_dp(panel->drm_dev, "bpp = %d\n", dp_panel->dp_mode.bpp); -	dp_panel->dp_mode.bpp = max_t(u32, 18, -				min_t(u32, dp_panel->dp_mode.bpp, 30)); +	dp_panel->dp_mode.bpp = dp_panel_get_mode_bpp(dp_panel, dp_panel->dp_mode.bpp, +						      dp_panel->dp_mode.drm_mode.clock); +  	drm_dbg_dp(panel->drm_dev, "updated bpp = %d\n",  				dp_panel->dp_mode.bpp); diff --git a/drivers/gpu/drm/msm/msm_mdss.c b/drivers/gpu/drm/msm/msm_mdss.c index d90b9471ba6f..faa88fd6eb4d 100644 --- a/drivers/gpu/drm/msm/msm_mdss.c +++ b/drivers/gpu/drm/msm/msm_mdss.c @@ -577,7 +577,7 @@ static const struct msm_mdss_data sc7180_data = {  	.ubwc_enc_version = UBWC_2_0,  	.ubwc_dec_version = UBWC_2_0,  	.ubwc_static = 0x1e, -	.highest_bank_bit = 0x3, +	.highest_bank_bit = 0x1,  	.reg_bus_bw = 76800,  }; | 
