On Tue, Jan 24, 2017 at 10:27:27AM +0800, Chris Zhong wrote: > Hi Sean > > On 01/24/2017 01:48 AM, Sean Paul wrote: > >On Fri, Jan 20, 2017 at 06:10:49PM +0800, Chris Zhong wrote: > >>The MIPI DSI do not need check the validity of resolution, the max > >>resolution should depend VOP. Hence, remove rk3288_mipi_dsi_mode_valid > >>here. > >Does vop actually enforce this, though? I see that mode_config.max_width is > >4096, but there is no bounds checking in mode_fixup(). > > > >The connector is currently rejecting everything greater than 2047. So I think > >you're going to regress behavior here. > > > >Sean > The mipi controller has not this width limit, it depend the VOP, > such as RK3399, VOP_LIT only support 2560, > but VOP_BIG support 4K. So this driver should check the width here. I don't see anything in the vop driver that rejects large modes for little vop. So, while I agree the check shouldn't be here, you should move it to where it should be instead of removing it entirely. Sean > > > > > > >>Signed-off-by: Chris Zhong <zyw@xxxxxxxxxxxxxx> > >>--- > >> > >>Changes in v3: None > >> > >> drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 39 ---------------------------------- > >> 1 file changed, 39 deletions(-) > >> > >>diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > >>index a93ce97..6f0e252 100644 > >>--- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > >>+++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c > >>@@ -278,8 +278,6 @@ struct dw_mipi_dsi_plat_data { > >> u32 grf_dsi0_mode; > >> u32 grf_dsi0_mode_reg; > >> unsigned int max_data_lanes; > >>- enum drm_mode_status (*mode_valid)(struct drm_connector *connector, > >>- struct drm_display_mode *mode); > >> }; > >> struct dw_mipi_dsi { > >>@@ -1081,23 +1079,8 @@ static int dw_mipi_dsi_connector_get_modes(struct drm_connector *connector) > >> return drm_panel_get_modes(dsi->panel); > >> } > >>-static enum drm_mode_status dw_mipi_dsi_mode_valid( > >>- struct drm_connector *connector, > >>- struct drm_display_mode *mode) > >>-{ > >>- struct dw_mipi_dsi *dsi = con_to_dsi(connector); > >>- > >>- enum drm_mode_status mode_status = MODE_OK; > >>- > >>- if (dsi->pdata->mode_valid) > >>- mode_status = dsi->pdata->mode_valid(connector, mode); > >>- > >>- return mode_status; > >>-} > >>- > >> static struct drm_connector_helper_funcs dw_mipi_dsi_connector_helper_funcs = { > >> .get_modes = dw_mipi_dsi_connector_get_modes, > >>- .mode_valid = dw_mipi_dsi_mode_valid, > >> }; > >> static void dw_mipi_dsi_drm_connector_destroy(struct drm_connector *connector) > >>@@ -1168,33 +1151,11 @@ static int rockchip_mipi_parse_dt(struct dw_mipi_dsi *dsi) > >> return 0; > >> } > >>-static enum drm_mode_status rk3288_mipi_dsi_mode_valid( > >>- struct drm_connector *connector, > >>- struct drm_display_mode *mode) > >>-{ > >>- /* > >>- * The VID_PKT_SIZE field in the DSI_VID_PKT_CFG > >>- * register is 11-bit. > >>- */ > >>- if (mode->hdisplay > 0x7ff) > >>- return MODE_BAD_HVALUE; > >>- > >>- /* > >>- * The V_ACTIVE_LINES field in the DSI_VTIMING_CFG > >>- * register is 11-bit. > >>- */ > >>- if (mode->vdisplay > 0x7ff) > >>- return MODE_BAD_VVALUE; > >>- > >>- return MODE_OK; > >>-} > >>- > >> static struct dw_mipi_dsi_plat_data rk3288_mipi_dsi_drv_data = { > >> .dsi0_en_bit = RK3288_DSI0_SEL_VOP_LIT, > >> .dsi1_en_bit = RK3288_DSI1_SEL_VOP_LIT, > >> .grf_switch_reg = RK3288_GRF_SOC_CON6, > >> .max_data_lanes = 4, > >>- .mode_valid = rk3288_mipi_dsi_mode_valid, > >> }; > >> static struct dw_mipi_dsi_plat_data rk3399_mipi_dsi_drv_data = { > >>-- > >>2.6.3 > >> > >>_______________________________________________ > >>dri-devel mailing list > >>dri-devel@xxxxxxxxxxxxxxxxxxxxx > >>https://lists.freedesktop.org/mailman/listinfo/dri-devel > > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Sean Paul, Software Engineer, Google / Chromium OS -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html