Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05d75511 authored by Lloyd Atkinson's avatar Lloyd Atkinson
Browse files

drm/msm/sde: add sde_connector kickoff trigger callbacks



Add a callback into the connector framework to allow sending
per-frame parameters at kickoff time. Specifically, this is
needed to support the partial update feature where only a subset
region of interest is updated on the display.

Change-Id: I4a6982a33110e5b114a60b92926d43c8aced950d
Signed-off-by: default avatarLloyd Atkinson <latkinso@codeaurora.org>
parent fb8f000f
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -3027,6 +3027,12 @@ int dsi_display_prepare(struct dsi_display *display)
	return rc;
}

int dsi_display_pre_kickoff(struct dsi_display *display,
		struct msm_display_kickoff_params *params)
{
	return 0;
}

int dsi_display_enable(struct dsi_display *display)
{
	int rc = 0;
+10 −0
Original line number Diff line number Diff line
@@ -417,4 +417,14 @@ int dsi_display_set_backlight(void *display, u32 bl_lvl);
 * Return: error code
 */
int dsi_display_soft_reset(void *display);

/*
 * 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);

#endif /* _DSI_DISPLAY_H_ */
+12 −0
Original line number Diff line number Diff line
@@ -475,6 +475,18 @@ enum drm_mode_status dsi_conn_mode_valid(struct drm_connector *connector,
	return MODE_OK;
}

int dsi_conn_pre_kickoff(struct drm_connector *connector,
		void *display,
		struct msm_display_kickoff_params *params)
{
	if (!connector || !display || !params) {
		pr_err("Invalid params\n");
		return -EINVAL;
	}

	return dsi_display_pre_kickoff(display, params);
}

struct dsi_bridge *dsi_drm_bridge_init(struct dsi_display *display,
				       struct drm_device *dev,
				       struct drm_encoder *encoder)
+12 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2016, The Linux Foundation. All rights reserved.
 * Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -80,4 +80,15 @@ struct dsi_bridge *dsi_drm_bridge_init(struct dsi_display *display,

void dsi_drm_bridge_cleanup(struct dsi_bridge *bridge);

/**
 * 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);

#endif /* _DSI_DRM_H_ */
+23 −0
Original line number Diff line number Diff line
@@ -363,6 +363,29 @@ struct msm_display_info {
	struct msm_compression_info comp_info;
};

#define MSM_MAX_ROI	4

/**
 * struct msm_roi_mapping - Regions of interest structure for mapping CRTC to
 *	Connector output
 * @num_rects: number of valid rectangles in src and dst arrays
 * @src: source roi rectangle
 * @dst: destination roi rectangle
 */
struct msm_roi_mapping {
	uint32_t num_rects;
	struct drm_clip_rect src[MSM_MAX_ROI];
	struct drm_clip_rect dst[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_mapping *rois;
};

/**
 * struct msm_drm_event - defines custom event notification struct
 * @base: base object required for event notification by DRM framework.
Loading