On Tue, Feb 27, 2018 at 06:55:11PM -0800, Jeykumar Sankaran wrote: > Implementation of partial update in DPU DRM is heavily > dependent on custom properties and dsi hooks. Removing the > support for now. We may need to revisit the support in the > future. > > Change-Id: Idd87272fe4d4c0a26fcb405154c0605af1edf1ba Same comments regarding the commit message. > Signed-off-by: Jeykumar Sankaran <jsanka@xxxxxxxxxxxxxx> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_connector.c | 139 +------ > drivers/gpu/drm/msm/disp/dpu1/dpu_connector.h | 7 +- > drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 544 +------------------------ > drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h | 18 - > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 277 ++++--------- > drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 2 + > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 8 - > drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c | 42 -- > drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 13 - > drivers/gpu/drm/msm/msm_drv.h | 56 --- > 10 files changed, 89 insertions(+), 1017 deletions(-) > <snip> > 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 289b9ff..bade72e 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c > @@ -2013,6 +2013,7 @@ static int dpu_dspp_parse_dt(struct device_node *np, > if (rc) > goto end; > > +#ifdef CONFIG_DPU_AD4 This seems unrelated to the change? Let's try to avoid introducing new "CONFIG_" values, unless we actually intend on adding them to the Kconfig. If you want to remove something, just submit a new patch to delete it (along with the bindings and everything else relating to it). We can always reintroduce it as a new patch later. Thanks! Sean > /* Parse AD dtsi entries */ > ad_prop_value = kcalloc(AD_PROP_MAX, > sizeof(struct dpu_prop_value), GFP_KERNEL); > @@ -2028,6 +2029,7 @@ static int dpu_dspp_parse_dt(struct device_node *np, > ad_prop_exists, ad_prop_value); > if (rc) > goto end; > +#endif > > /* get DSPP feature dt properties if they exist */ > snp = of_get_child_by_name(np, dspp_prop[DSPP_BLOCKS].prop_name); > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h > index 62e7c5c..d11fb1d 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h > @@ -454,14 +454,6 @@ void dpu_kms_rect_intersect(const struct dpu_rect *r1, > struct dpu_rect *result); > > /** > - * dpu_kms_rect_merge_rectangles - merge a rectangle list into one rect > - * @rois: pointer to the list of rois > - * @result: output rectangle, all 0 on error > - */ > -void dpu_kms_rect_merge_rectangles(const struct msm_roi_list *rois, > - struct dpu_rect *result); > - > -/** > * dpu_kms_rect_is_equal - compares two rects > * @r1: rect value to compare > * @r2: rect value to compare > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c > index 006d7ad..40e0162 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms_utils.c > @@ -176,45 +176,3 @@ void dpu_kms_rect_intersect(const struct dpu_rect *r1, > } > } > > -void dpu_kms_rect_merge_rectangles(const struct msm_roi_list *rois, > - struct dpu_rect *result) > -{ > - struct drm_clip_rect clip; > - const struct drm_clip_rect *roi_rect; > - int i; > - > - if (!rois || !result) > - return; > - > - memset(result, 0, sizeof(*result)); > - > - /* init to invalid range maxes */ > - clip.x1 = ~0; > - clip.y1 = ~0; > - clip.x2 = 0; > - clip.y2 = 0; > - > - /* aggregate all clipping rectangles together for overall roi */ > - for (i = 0; i < rois->num_rects; i++) { > - roi_rect = &rois->roi[i]; > - > - clip.x1 = min(clip.x1, roi_rect->x1); > - clip.y1 = min(clip.y1, roi_rect->y1); > - clip.x2 = max(clip.x2, roi_rect->x2); > - clip.y2 = max(clip.y2, roi_rect->y2); > - > - DPU_DEBUG("roi%d (%d,%d),(%d,%d) -> crtc (%d,%d),(%d,%d)\n", i, > - roi_rect->x1, roi_rect->y1, > - roi_rect->x2, roi_rect->y2, > - clip.x1, clip.y1, > - clip.x2, clip.y2); > - } > - > - if (clip.x2 && clip.y2) { > - result->x = clip.x1; > - result->y = clip.y1; > - result->w = clip.x2 - clip.x1; > - result->h = clip.y2 - clip.y1; > - } > -} > - > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c > index 834dcc0..9e9c9d2 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c > @@ -3243,7 +3243,6 @@ static int dpu_plane_sspp_atomic_update(struct drm_plane *plane, > struct drm_crtc *crtc; > struct drm_framebuffer *fb; > struct dpu_rect src, dst; > - const struct dpu_rect *crtc_roi; > bool q16_data = true; > int idx; > > @@ -3357,11 +3356,6 @@ static int dpu_plane_sspp_atomic_update(struct drm_plane *plane, > _dpu_plane_sspp_atomic_check_mode_changed(pdpu, state, > old_state); > > - /* re-program the output rects always in the case of partial update */ > - dpu_crtc_get_crtc_roi(crtc->state, &crtc_roi); > - if (!dpu_kms_rect_is_null(crtc_roi)) > - pstate->dirty |= DPU_PLANE_DIRTY_RECTS; > - > if (pstate->dirty & DPU_PLANE_DIRTY_RECTS) > memset(&(pdpu->pipe_cfg), 0, sizeof(struct dpu_hw_pipe_cfg)); > > @@ -3399,13 +3393,6 @@ static int dpu_plane_sspp_atomic_update(struct drm_plane *plane, > src.y &= ~0x1; > } > > - /* > - * adjust layer mixer position of the sspp in the presence > - * of a partial update to the active lm origin > - */ > - dst.x -= crtc_roi->x; > - dst.y -= crtc_roi->y; > - > pdpu->pipe_cfg.src_rect = src; > pdpu->pipe_cfg.dst_rect = dst; > > diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h > index d8e090f..8574f30 100644 > --- a/drivers/gpu/drm/msm/msm_drv.h > +++ b/drivers/gpu/drm/msm/msm_drv.h > @@ -144,7 +144,6 @@ enum msm_mdp_crtc_property { > CRTC_PROP_DRAM_IB, > CRTC_PROP_ROT_PREFILL_BW, > CRTC_PROP_ROT_CLK, > - CRTC_PROP_ROI_V1, > CRTC_PROP_IDLE_TIMEOUT, > CRTC_PROP_DEST_SCALER, > > @@ -168,7 +167,6 @@ enum msm_mdp_conn_property { > CONNECTOR_PROP_DST_Y, > CONNECTOR_PROP_DST_W, > CONNECTOR_PROP_DST_H, > - CONNECTOR_PROP_ROI_V1, > CONNECTOR_PROP_BL_SCALE, > CONNECTOR_PROP_AD_BL_SCALE, > > @@ -228,38 +226,6 @@ enum msm_event_wait { > }; > > /** > - * struct msm_roi_alignment - region of interest alignment restrictions > - * @xstart_pix_align: left x offset alignment restriction > - * @width_pix_align: width alignment restriction > - * @ystart_pix_align: top y offset alignment restriction > - * @height_pix_align: height alignment restriction > - * @min_width: minimum width restriction > - * @min_height: minimum height restriction > - */ > -struct msm_roi_alignment { > - uint32_t xstart_pix_align; > - uint32_t width_pix_align; > - uint32_t ystart_pix_align; > - uint32_t height_pix_align; > - uint32_t min_width; > - uint32_t min_height; > -}; > - > -/** > - * struct msm_roi_caps - display's region of interest capabilities > - * @enabled: true if some region of interest is supported > - * @merge_rois: merge rois before sending to display > - * @num_roi: maximum number of rois supported > - * @align: roi alignment restrictions > - */ > -struct msm_roi_caps { > - bool enabled; > - bool merge_rois; > - uint32_t num_roi; > - struct msm_roi_alignment align; > -}; > - > -/** > * struct msm_display_dsc_info - defines dsc configuration > * @version: DSC version. > * @scr_rev: DSC revision. > @@ -427,7 +393,6 @@ struct msm_mode_info { > * @is_primary: Set to true if display is primary display > * @is_te_using_watchdog_timer: Boolean to indicate watchdog TE is > * used instead of panel TE in cmd mode panels > - * @roi_caps: Region of interest capability info > */ > struct msm_display_info { > int intf_type; > @@ -446,27 +411,6 @@ struct msm_display_info { > > bool is_primary; > bool is_te_using_watchdog_timer; > - struct msm_roi_caps roi_caps; > -}; > - > -#define MSM_MAX_ROI 4 > - > -/** > - * struct msm_roi_list - list of regions of interest for a drm object > - * @num_rects: number of valid rectangles in the roi array > - * @roi: list of roi rectangles > - */ > -struct msm_roi_list { > - uint32_t num_rects; > - struct drm_clip_rect roi[MSM_MAX_ROI]; > -}; > - > -/** > - * struct - msm_display_kickoff_params - info for display features at kickoff > - * @rois: Regions of interest structure for mapping CRTC to Connector output > - */ > -struct msm_display_kickoff_params { > - struct msm_roi_list *rois; > }; > > /** > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project > -- Sean Paul, Software Engineer, Google / Chromium OS -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html