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

Commit bb2bf9aa authored by Veera Sundaram Sankaran's avatar Veera Sundaram Sankaran
Browse files

drm/msm/sde: add clock control to dsi connector ops



Add clk ctrl interface in the dsi connector ops to
control dsi clks. This provides an interface to
SDE, to vote for DSI clks.

Change-Id: I6c57bbad8afd0a7f0d381346d55aa18352c1fd81
Signed-off-by: default avatarVeera Sundaram Sankaran <veeras@codeaurora.org>
parent 38318f1b
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -247,6 +247,25 @@ int sde_connector_pre_kickoff(struct drm_connector *connector)
	return rc;
}

void sde_connector_clk_ctrl(struct drm_connector *connector, bool enable)
{
	struct sde_connector *c_conn;
	struct dsi_display *display;
	u32 state = enable ? DSI_CLK_ON : DSI_CLK_OFF;

	if (!connector) {
		SDE_ERROR("invalid connector\n");
		return;
	}

	c_conn = to_sde_connector(connector);
	display = (struct dsi_display *) c_conn->display;

	if (display && c_conn->ops.clk_ctrl)
		c_conn->ops.clk_ctrl(display->mdp_clk_handle,
				DSI_ALL_CLKS, state);
}

static void sde_connector_destroy(struct drm_connector *connector)
{
	struct sde_connector *c_conn;
+15 −0
Original line number Diff line number Diff line
@@ -150,6 +150,14 @@ struct sde_connector_ops {
	int (*pre_kickoff)(struct drm_connector *connector,
			void *display,
			struct msm_display_kickoff_params *params);

	/**
	 * clk_ctrl - perform clk enable/disable on the connector
	 * @handle: Pointer to clk handle
	 * @type: Type of clks
	 * @enable: State of clks
	 */
	int (*clk_ctrl)(void *handle, u32 type, u32 state);
};

/**
@@ -365,6 +373,13 @@ void sde_connector_complete_commit(struct drm_connector *connector);
int sde_connector_get_info(struct drm_connector *connector,
		struct msm_display_info *info);

/**
 * sde_connector_clk_ctrl - enables/disables the connector clks
 * @connector: Pointer to drm connector object
 * @enable: true/false to enable/disable
 */
void sde_connector_clk_ctrl(struct drm_connector *connector, bool enable);

/**
 * sde_connector_trigger_event - indicate that an event has occurred
 *	Any callbacks that have been registered against this event will
+2 −1
Original line number Diff line number Diff line
@@ -552,7 +552,8 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
		.get_info =   dsi_display_get_info,
		.set_backlight = dsi_display_set_backlight,
		.soft_reset   = dsi_display_soft_reset,
		.pre_kickoff  = dsi_conn_pre_kickoff
		.pre_kickoff  = dsi_conn_pre_kickoff,
		.clk_ctrl = dsi_display_clk_ctrl
	};
	static const struct sde_connector_ops wb_ops = {
		.post_init =    sde_wb_connector_post_init,