[Freedreno] [DPU PATCH v2 1/2] drm/msm/dsi-staging: remove support for partial update
Jeykumar Sankaran
jsanka at codeaurora.org
Wed Feb 28 02:55:10 UTC 2018
Remove support partial update and related changes from dsi-staging
since the DPU dependencies are getting cleaned up.
Change-Id: I02462f520cdf99c8445b18e60212ca46155f9710
Signed-off-by: Jeykumar Sankaran <jsanka at codeaurora.org>
---
drivers/gpu/drm/msm/dsi-staging/dsi_display.c | 104 +-------------------------
drivers/gpu/drm/msm/dsi-staging/dsi_display.h | 5 +-
drivers/gpu/drm/msm/dsi-staging/dsi_drm.c | 26 +------
drivers/gpu/drm/msm/dsi-staging/dsi_drm.h | 4 +-
drivers/gpu/drm/msm/dsi-staging/dsi_panel.c | 85 ---------------------
drivers/gpu/drm/msm/dsi-staging/dsi_panel.h | 2 -
6 files changed, 7 insertions(+), 219 deletions(-)
diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_display.c b/drivers/gpu/drm/msm/dsi-staging/dsi_display.c
index 72055dc..31b7d7e 100644
--- a/drivers/gpu/drm/msm/dsi-staging/dsi_display.c
+++ b/drivers/gpu/drm/msm/dsi-staging/dsi_display.c
@@ -3414,9 +3414,6 @@ int dsi_display_get_info(struct msm_display_info *info, void *disp)
break;
}
- memcpy(&info->roi_caps, &display->panel->roi_caps,
- sizeof(info->roi_caps));
-
error:
mutex_unlock(&display->display_lock);
return rc;
@@ -3941,104 +3938,7 @@ int dsi_display_prepare(struct dsi_display *display)
return rc;
}
-static int dsi_display_calc_ctrl_roi(const struct dsi_display *display,
- const struct dsi_display_ctrl *ctrl,
- const struct msm_roi_list *req_rois,
- struct dsi_rect *out_roi)
-{
- const struct dsi_rect *bounds = &ctrl->ctrl->mode_bounds;
- struct dsi_rect req_roi = { 0 };
- int rc = 0;
-
- if (req_rois->num_rects > display->panel->roi_caps.num_roi) {
- pr_err("request for %d rois greater than max %d\n",
- req_rois->num_rects,
- display->panel->roi_caps.num_roi);
- rc = -EINVAL;
- goto exit;
- }
-
- /**
- * if no rois, user wants to reset back to full resolution
- * note: h_active is already divided by ctrl_count
- */
- if (!req_rois->num_rects) {
- *out_roi = *bounds;
- goto exit;
- }
-
- /* intersect with the bounds */
- req_roi.x = req_rois->roi[0].x1;
- req_roi.y = req_rois->roi[0].y1;
- req_roi.w = req_rois->roi[0].x2 - req_rois->roi[0].x1;
- req_roi.h = req_rois->roi[0].y2 - req_rois->roi[0].y1;
- dsi_rect_intersect(&req_roi, bounds, out_roi);
-
-exit:
- /* adjust the ctrl origin to be top left within the ctrl */
- out_roi->x = out_roi->x - bounds->x;
-
- pr_debug("ctrl%d:%d: req (%d,%d,%d,%d) bnd (%d,%d,%d,%d) out (%d,%d,%d,%d)\n",
- ctrl->dsi_ctrl_idx, ctrl->ctrl->cell_index,
- req_roi.x, req_roi.y, req_roi.w, req_roi.h,
- bounds->x, bounds->y, bounds->w, bounds->h,
- out_roi->x, out_roi->y, out_roi->w, out_roi->h);
-
- return rc;
-}
-
-static int dsi_display_set_roi(struct dsi_display *display,
- struct msm_roi_list *rois)
-{
- int rc = 0;
- int i;
-
- if (!display || !rois || !display->panel)
- return -EINVAL;
-
- if (!display->panel->roi_caps.enabled)
- return 0;
-
- for (i = 0; i < display->ctrl_count; i++) {
- struct dsi_display_ctrl *ctrl = &display->ctrl[i];
- struct dsi_rect ctrl_roi;
- bool changed = false;
-
- rc = dsi_display_calc_ctrl_roi(display, ctrl, rois, &ctrl_roi);
- if (rc) {
- pr_err("dsi_display_calc_ctrl_roi failed rc %d\n", rc);
- return rc;
- }
-
- rc = dsi_ctrl_set_roi(ctrl->ctrl, &ctrl_roi, &changed);
- if (rc) {
- pr_err("dsi_ctrl_set_roi failed rc %d\n", rc);
- return rc;
- }
-
- if (!changed)
- continue;
-
- /* send the new roi to the panel via dcs commands */
- rc = dsi_panel_send_roi_dcs(display->panel, i, &ctrl_roi);
- if (rc) {
- pr_err("dsi_panel_set_roi failed rc %d\n", rc);
- return rc;
- }
-
- /* re-program the ctrl with the timing based on the new roi */
- rc = dsi_ctrl_setup(ctrl->ctrl);
- if (rc) {
- pr_err("dsi_ctrl_setup failed rc %d\n", rc);
- return rc;
- }
- }
-
- return rc;
-}
-
-int dsi_display_pre_kickoff(struct dsi_display *display,
- struct msm_display_kickoff_params *params)
+int dsi_display_pre_kickoff(struct dsi_display *display)
{
int rc = 0;
@@ -4046,8 +3946,6 @@ int dsi_display_pre_kickoff(struct dsi_display *display,
if (display->misr_enable)
_dsi_display_setup_misr(display);
- rc = dsi_display_set_roi(display, params->rois);
-
return rc;
}
diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_display.h b/drivers/gpu/drm/msm/dsi-staging/dsi_display.h
index b23a84d..a0f9ccf 100644
--- a/drivers/gpu/drm/msm/dsi-staging/dsi_display.h
+++ b/drivers/gpu/drm/msm/dsi-staging/dsi_display.h
@@ -524,11 +524,10 @@ int dsi_display_set_power(struct drm_connector *connector,
/*
* dsi_display_pre_kickoff - program kickoff-time features
* @display: Pointer to private display structure
- * @params: Parameters for kickoff-time programming
* Returns: Zero on success
*/
-int dsi_display_pre_kickoff(struct dsi_display *display,
- struct msm_display_kickoff_params *params);
+int dsi_display_pre_kickoff(struct dsi_display *display);
+
/**
* dsi_display_get_dst_format() - get dst_format from DSI display
* @display: Handle to display
diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_drm.c b/drivers/gpu/drm/msm/dsi-staging/dsi_drm.c
index 6847c53..017f881 100644
--- a/drivers/gpu/drm/msm/dsi-staging/dsi_drm.c
+++ b/drivers/gpu/drm/msm/dsi-staging/dsi_drm.c
@@ -443,25 +443,6 @@ int dsi_conn_post_init(struct drm_connector *connector,
break;
}
- if (panel->roi_caps.enabled) {
- dpu_kms_info_add_keyint(info, "partial_update_num_roi",
- panel->roi_caps.num_roi);
- dpu_kms_info_add_keyint(info, "partial_update_xstart",
- panel->roi_caps.align.xstart_pix_align);
- dpu_kms_info_add_keyint(info, "partial_update_walign",
- panel->roi_caps.align.width_pix_align);
- dpu_kms_info_add_keyint(info, "partial_update_wmin",
- panel->roi_caps.align.min_width);
- dpu_kms_info_add_keyint(info, "partial_update_ystart",
- panel->roi_caps.align.ystart_pix_align);
- dpu_kms_info_add_keyint(info, "partial_update_halign",
- panel->roi_caps.align.height_pix_align);
- dpu_kms_info_add_keyint(info, "partial_update_hmin",
- panel->roi_caps.align.min_height);
- dpu_kms_info_add_keyint(info, "partial_update_roimerge",
- panel->roi_caps.merge_rois);
- }
-
end:
return 0;
}
@@ -598,15 +579,14 @@ enum drm_mode_status dsi_conn_mode_valid(struct drm_connector *connector,
}
int dsi_conn_pre_kickoff(struct drm_connector *connector,
- void *display,
- struct msm_display_kickoff_params *params)
+ void *display)
{
- if (!connector || !display || !params) {
+ if (!connector || !display) {
pr_err("Invalid params\n");
return -EINVAL;
}
- return dsi_display_pre_kickoff(display, params);
+ return dsi_display_pre_kickoff(display);
}
void dsi_conn_enable_event(struct drm_connector *connector,
diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_drm.h b/drivers/gpu/drm/msm/dsi-staging/dsi_drm.h
index f427340..38de33c 100644
--- a/drivers/gpu/drm/msm/dsi-staging/dsi_drm.h
+++ b/drivers/gpu/drm/msm/dsi-staging/dsi_drm.h
@@ -112,12 +112,10 @@ struct dsi_bridge *dsi_drm_bridge_init(struct dsi_display *display,
* dsi_display_pre_kickoff - program kickoff-time features
* @connector: Pointer to drm connector structure
* @display: Pointer to private display structure
- * @params: Parameters for kickoff-time programming
* Returns: Zero on success
*/
int dsi_conn_pre_kickoff(struct drm_connector *connector,
- void *display,
- struct msm_display_kickoff_params *params);
+ void *display);
/**
* dsi_display_post_kickoff - program post kickoff-time features
diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_panel.c b/drivers/gpu/drm/msm/dsi-staging/dsi_panel.c
index 2d94e5f..fd20eba 100644
--- a/drivers/gpu/drm/msm/dsi-staging/dsi_panel.c
+++ b/drivers/gpu/drm/msm/dsi-staging/dsi_panel.c
@@ -2331,87 +2331,6 @@ static int dsi_panel_parse_topology(
return rc;
}
-static int dsi_panel_parse_roi_alignment(struct device_node *of_node,
- struct msm_roi_alignment *align)
-{
- int len = 0, rc = 0;
- u32 value[6];
- struct property *data;
-
- if (!align || !of_node)
- return -EINVAL;
-
- memset(align, 0, sizeof(*align));
-
- data = of_find_property(of_node, "qcom,panel-roi-alignment", &len);
- len /= sizeof(u32);
- if (!data) {
- pr_err("panel roi alignment not found\n");
- rc = -EINVAL;
- } else if (len != 6) {
- pr_err("incorrect roi alignment len %d\n", len);
- rc = -EINVAL;
- } else {
- rc = of_property_read_u32_array(of_node,
- "qcom,panel-roi-alignment", value, len);
- if (rc)
- pr_debug("error reading panel roi alignment values\n");
- else {
- align->xstart_pix_align = value[0];
- align->ystart_pix_align = value[1];
- align->width_pix_align = value[2];
- align->height_pix_align = value[3];
- align->min_width = value[4];
- align->min_height = value[5];
- }
-
- pr_info("roi alignment: [%d, %d, %d, %d, %d, %d]\n",
- align->xstart_pix_align,
- align->width_pix_align,
- align->ystart_pix_align,
- align->height_pix_align,
- align->min_width,
- align->min_height);
- }
-
- return rc;
-}
-
-static int dsi_panel_parse_partial_update_caps(struct dsi_panel *panel,
- struct device_node *of_node)
-{
- struct msm_roi_caps *roi_caps = &panel->roi_caps;
- const char *data;
- int rc = 0;
-
- memset(roi_caps, 0, sizeof(*roi_caps));
-
- data = of_get_property(of_node, "qcom,partial-update-enabled", NULL);
- if (data) {
- if (!strcmp(data, "dual_roi"))
- roi_caps->num_roi = 2;
- else
- roi_caps->num_roi = 1;
- }
-
- roi_caps->merge_rois = of_property_read_bool(of_node,
- "qcom,partial-update-roi-merge");
-
- roi_caps->enabled = roi_caps->num_roi > 0;
-
- pr_info("partial update num_rois=%d enabled=%d\n", roi_caps->num_roi,
- roi_caps->enabled);
-
- if (roi_caps->enabled)
- rc = dsi_panel_parse_roi_alignment(of_node,
- &panel->roi_caps.align);
-
- if (rc)
- memset(roi_caps, 0, sizeof(*roi_caps));
-
- return rc;
-}
-
static int dsi_panel_parse_dms_info(struct dsi_panel *panel,
struct device_node *of_node)
{
@@ -2703,10 +2622,6 @@ struct dsi_panel *dsi_panel_get(struct device *parent,
if (rc)
pr_err("failed to parse hdr config, rc=%d\n", rc);
- rc = dsi_panel_parse_partial_update_caps(panel, of_node);
- if (rc)
- pr_debug("failed to partial update caps, rc=%d\n", rc);
-
rc = dsi_panel_get_mode_count(panel, of_node);
if (rc) {
pr_err("failed to get mode count, rc=%d\n", rc);
diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_panel.h b/drivers/gpu/drm/msm/dsi-staging/dsi_panel.h
index c26a5db..3b1b47c 100644
--- a/drivers/gpu/drm/msm/dsi-staging/dsi_panel.h
+++ b/drivers/gpu/drm/msm/dsi-staging/dsi_panel.h
@@ -155,8 +155,6 @@ struct dsi_panel {
enum dsi_op_mode panel_mode;
struct dsi_dfps_capabilities dfps_caps;
- struct msm_roi_caps roi_caps;
-
struct dsi_panel_phy_props phy_props;
struct dsi_display_mode *cur_mode;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
More information about the Freedreno
mailing list