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

Commit 65d56514 authored by Kalyan Thota's avatar Kalyan Thota
Browse files

drm:msm:sde add one-shot qsync mode support



Add support to enable one-shot mode in qsync.

Change-Id: Icb158853f52284bcf8fa641e5f62200c5460b660
Signed-off-by: default avatarKalyan Thota <kalyant@codeaurora.org>
parent 6d4a281c
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -895,7 +895,8 @@ void dsi_conn_enable_event(struct drm_connector *connector,
			event_idx, &event_info, enable);
}

int dsi_conn_post_kickoff(struct drm_connector *connector)
int dsi_conn_post_kickoff(struct drm_connector *connector,
	struct msm_display_kickoff_params *params)
{
	struct drm_encoder *encoder;
	struct dsi_bridge *c_bridge;
@@ -903,6 +904,7 @@ int dsi_conn_post_kickoff(struct drm_connector *connector)
	struct dsi_display *display;
	struct dsi_display_ctrl *m_ctrl, *ctrl;
	int i, rc = 0;
	bool enable;

	if (!connector || !connector->state) {
		pr_err("invalid connector or connector state");
@@ -948,6 +950,13 @@ int dsi_conn_post_kickoff(struct drm_connector *connector)
	/* ensure dynamic clk switch flag is reset */
	c_bridge->dsi_mode.dsi_mode_flags &= ~DSI_MODE_FLAG_DYN_CLK;

	if (params->qsync_update) {
		enable = (params->qsync_mode > 0) ? true : false;
		display_for_each_ctrl(i, display) {
			dsi_ctrl_setup_avr(display->ctrl[i].ctrl, enable);
		}
	}

	return 0;
}

+3 −1
Original line number Diff line number Diff line
@@ -127,9 +127,11 @@ int dsi_conn_pre_kickoff(struct drm_connector *connector,
/**
 * dsi_display_post_kickoff - program post kickoff-time features
 * @connector: Pointer to drm connector structure
 * @params: Parameters for post kickoff programming
 * Returns: Zero on success
 */
int dsi_conn_post_kickoff(struct drm_connector *connector);
int dsi_conn_post_kickoff(struct drm_connector *connector,
		struct msm_display_kickoff_params *params);

/**
 * dsi_convert_to_drm_mode - Update drm mode with dsi mode information
+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ static const struct drm_prop_enum_list e_power_mode[] = {
static const struct drm_prop_enum_list e_qsync_mode[] = {
	{SDE_RM_QSYNC_DISABLED,	"none"},
	{SDE_RM_QSYNC_CONTINUOUS_MODE,	"continuous"},
	{SDE_RM_QSYNC_ONE_SHOT_MODE,	"one_shot"},
};

static int sde_backlight_device_update_status(struct backlight_device *bd)
+5 −2
Original line number Diff line number Diff line
/* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2016-2019, 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
@@ -222,9 +222,12 @@ struct sde_connector_ops {
	/**
	 * post_kickoff - display to program post kickoff-time features
	 * @connector: Pointer to drm connector structure
	 * @params: Parameter bundle of connector-stored information for
	 *	post kickoff programming into the display
	 * Returns: Zero on success
	 */
	int (*post_kickoff)(struct drm_connector *connector);
	int (*post_kickoff)(struct drm_connector *connector,
		struct msm_display_kickoff_params *params);

	/**
	 * post_open - calls connector to process post open functionalities
+2 −4
Original line number Diff line number Diff line
@@ -90,9 +90,6 @@
#define INTF_TEAR_AUTOREFRESH_CONFIG    0x2B4
#define INTF_TEAR_TEAR_DETECT_CTRL      0x2B8

#define AVR_CONTINUOUS_MODE   1
#define AVR_ONE_SHOT_MODE     2

static struct sde_intf_cfg *_intf_offset(enum sde_intf intf,
		struct sde_mdss_cfg *m,
		void __iomem *addr,
@@ -178,7 +175,8 @@ static void sde_hw_intf_avr_ctrl(struct sde_hw_intf *ctx,
	c = &ctx->hw;
	if (avr_params->avr_mode) {
		avr_ctrl = BIT(0);
		avr_mode = (avr_params->avr_mode == AVR_ONE_SHOT_MODE) ?
		avr_mode =
			(avr_params->avr_mode == SDE_RM_QSYNC_ONE_SHOT_MODE) ?
			(BIT(0) | BIT(8)) : 0x0;
	}

Loading