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

Commit 07e4f979 authored by Namratha Siddappa's avatar Namratha Siddappa
Browse files

Merge remote-tracking branch 'quic/dev/msm-4.14-display' into msm-4.14



* quic/dev/msm-4.14-display:
  drm/msm/sde: Add support for mdp LUT memory retention for display
  ARM: dts: msm: add display mdp LUT clk for SM8150
  drm/msm: add sde recovery dump data support
  drm/msm/sde: add support for hw recovery event notification
  drm/msm/sde: avoid enabling qseed3 with multirect
  drm/msm/dp: handle DisplayPort ON/OFF during PM suspend/resume
  drm/msm/dp: limit the maximum lane count for multi-functional dongles
  drm/msm/dp: cancel attention work on disconnect
  drm/msm/dp: enable aux retry logic
  drm/msm/dp: check for sink count before enabling post_open callback
  drm/msm/sde: ignore last close during cont splash
  drm/msm/sde: avoid misr_setup through debugfs during sui
  drm/msm/sde: add sde wrapper for clock set flags
  ARM: dts: msm: add qsync nodes to simulator panels

Change-Id: I1a578ff0f0220ab164e3bcaae4547b70aa39f80d
Signed-off-by: default avatarNamratha Siddappa <namratha@codeaurora.org>
parents 8dfc046a 7c90861d
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@
		qcom,mdss-dsi-te-using-wd;
		qcom,mdss-dsi-te-using-te-pin;
		qcom,panel-ack-disabled;
		qcom,mdss-dsi-qsync-min-refresh-rate = <45>;

		qcom,mdss-dsi-display-timings {
			timing@0{
@@ -69,6 +70,14 @@
					[05 01 00 00 00 00 02 28 00
					05 01 00 00 00 00 02 10 00];
				qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
				qcom,mdss-dsi-qsync-on-commands =
					[15 01 00 00 00 00 02 51 00];
				qcom,mdss-dsi-qsync-on-commands-state =
					"dsi_hs_mode";
				qcom,mdss-dsi-qsync-off-commands =
					[15 01 00 00 00 00 02 51 00];
				qcom,mdss-dsi-qsync-off-commands-state =
					"dsi_hs_mode";
			};
			timing@1{
				qcom,mdss-dsi-panel-width = <1280>;
@@ -94,6 +103,14 @@
					[05 01 00 00 00 00 02 28 00
					05 01 00 00 00 00 02 10 00];
				qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
				qcom,mdss-dsi-qsync-on-commands =
					[15 01 00 00 00 00 02 51 00];
				qcom,mdss-dsi-qsync-on-commands-state =
					"dsi_hs_mode";
				qcom,mdss-dsi-qsync-off-commands =
					[15 01 00 00 00 00 02 51 00];
				qcom,mdss-dsi-qsync-off-commands-state =
					"dsi_hs_mode";
			};
			timing@2{
				qcom,mdss-dsi-panel-width = <1080>;
@@ -115,6 +132,14 @@
					[05 01 00 00 00 00 02 28 00
					05 01 00 00 00 00 02 10 00];
				qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
				qcom,mdss-dsi-qsync-on-commands =
					[15 01 00 00 00 00 02 51 00];
				qcom,mdss-dsi-qsync-on-commands-state =
					"dsi_hs_mode";
				qcom,mdss-dsi-qsync-off-commands =
					[15 01 00 00 00 00 02 51 00];
				qcom,mdss-dsi-qsync-off-commands-state =
					"dsi_hs_mode";
			};
		};
	};
+10 −1
Original line number Diff line number Diff line
/* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2014-2018, 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
@@ -32,6 +32,7 @@
		qcom,mdss-dsi-mdp-trigger = "none";
		qcom,mdss-dsi-reset-sequence = <1 20>, <0 200>, <1 20>;
		qcom,panel-ack-disabled;
		qcom,mdss-dsi-qsync-min-refresh-rate = <45>;

		qcom,mdss-dsi-display-timings {
			timing@0{
@@ -55,6 +56,14 @@
					[05 01 00 00 32 00 02 28 00
					05 01 00 00 78 00 02 10 00];
				qcom,mdss-dsi-off-command-state = "dsi_hs_mode";
				qcom,mdss-dsi-qsync-on-commands =
					[15 01 00 00 00 00 02 51 00];
				qcom,mdss-dsi-qsync-on-commands-state =
					"dsi_hs_mode";
				qcom,mdss-dsi-qsync-off-commands =
					[15 01 00 00 00 00 02 51 00];
				qcom,mdss-dsi-qsync-off-commands-state =
					"dsi_hs_mode";
			};
		};
	};
+6 −4
Original line number Diff line number Diff line
@@ -26,11 +26,13 @@
			<&clock_gcc GCC_DISP_HF_AXI_CLK>,
			<&clock_dispcc DISP_CC_MDSS_AHB_CLK>,
			<&clock_dispcc DISP_CC_MDSS_MDP_CLK>,
			<&clock_dispcc DISP_CC_MDSS_VSYNC_CLK>;
			<&clock_dispcc DISP_CC_MDSS_VSYNC_CLK>,
			<&clock_dispcc DISP_CC_MDSS_MDP_LUT_CLK>;
		clock-names = "gcc_iface", "gcc_bus",
				"iface_clk", "core_clk", "vsync_clk";
		clock-rate = <0 0 0 300000000 19200000>;
		clock-max-rate = <0 0 0 460000000 19200000>;
				"iface_clk", "core_clk", "vsync_clk",
				"lut_clk";
		clock-rate = <0 0 0 300000000 19200000 300000000>;
		clock-max-rate = <0 0 0 460000000 19200000 460000000>;

		sde-vdd-supply = <&mdss_core_gdsc>;

+1 −1
Original line number Diff line number Diff line
@@ -578,7 +578,7 @@ static ssize_t dp_aux_transfer(struct drm_dp_aux *drm_aux,
	}

	ret = dp_aux_cmd_fifo_tx(aux, msg);
	if ((ret < 0) && aux->native && !atomic_read(&aux->aborted)) {
	if ((ret < 0) && !atomic_read(&aux->aborted)) {
		aux->retry_cnt++;
		if (!(aux->retry_cnt % retry_count))
			aux->catalog->update_aux_cfg(aux->catalog,
+15 −8
Original line number Diff line number Diff line
@@ -549,8 +549,7 @@ static int dp_display_process_hpd_high(struct dp_display_private *dp)
		return 0;

	rc = dp->panel->read_sink_caps(dp->panel,
			dp->dp_display.base_connector);

			dp->dp_display.base_connector, dp->usbpd->multi_func);
	if (rc) {
		/*
		 * ETIMEDOUT --> cable may have been removed
@@ -684,6 +683,8 @@ static int dp_display_usbpd_configure_cb(struct device *dev)
			goto end;
	}

	atomic_set(&dp->aborted, 0);

	dp_display_host_init(dp);

	/* check for hpd high and framework ready */
@@ -768,6 +769,7 @@ static int dp_display_usbpd_disconnect_cb(struct device *dev)

	/* wait for idle state */
	cancel_delayed_work(&dp->connect_work);
	cancel_work(&dp->attention_work);
	flush_workqueue(dp->wq);

	dp_display_handle_disconnect(dp);
@@ -775,7 +777,6 @@ static int dp_display_usbpd_disconnect_cb(struct device *dev)
	if (!dp->debug->sim_mode)
		dp->aux->aux_switch(dp->aux, false, ORIENTATION_NONE);

	atomic_set(&dp->aborted, 0);
end:
	return rc;
}
@@ -918,6 +919,7 @@ static int dp_display_usbpd_attention_cb(struct device *dev)

		/* wait for idle state */
		cancel_delayed_work(&dp->connect_work);
		cancel_work(&dp->attention_work);
		flush_workqueue(dp->wq);

		dp_display_handle_disconnect(dp);
@@ -933,7 +935,7 @@ static void dp_display_connect_work(struct work_struct *work)
	struct dp_display_private *dp = container_of(dw,
			struct dp_display_private, connect_work);

	if (dp->dp_display.is_connected) {
	if (dp->dp_display.is_connected && dp_display_framework_ready(dp)) {
		pr_debug("HPD already on\n");
		return;
	}
@@ -1258,6 +1260,11 @@ static int dp_display_enable(struct dp_display *dp_display, void *panel)

	dp->aux->init(dp->aux, dp->parser->aux_cfg);

	if (dp->debug->psm_enabled) {
		dp->link->psm_config(dp->link, &dp->panel->link_info, false);
		dp->debug->psm_enabled = false;
	}

	rc = dp->ctrl->on(dp->ctrl, dp->mst.mst_active);
	if (!rc)
		dp->power_on = true;
@@ -1374,7 +1381,8 @@ static int dp_display_pre_disable(struct dp_display *dp_display, void *panel)
			dp->hdcp.ops->off(dp->hdcp.data);
	}

	if (dp->usbpd->hpd_high && dp->usbpd->alt_mode_cfg_done) {
	if (dp->usbpd->hpd_high && !dp_display_is_sink_count_zero(dp) &&
			dp->usbpd->alt_mode_cfg_done) {
		if (dp_panel->audio_supported)
			dp_panel->audio->off(dp_panel->audio);

@@ -1432,10 +1440,9 @@ static int dp_display_disable(struct dp_display *dp_display, void *panel)
	 * any notification from driver. Initialize post_open callback to notify
	 * DP connection once framework restarts.
	 */
	if (dp->usbpd->hpd_high && dp->usbpd->alt_mode_cfg_done &&
			!dp->mst.mst_active) {
	if (dp->usbpd->hpd_high && !dp_display_is_sink_count_zero(dp) &&
			dp->usbpd->alt_mode_cfg_done && !dp->mst.mst_active) {
		dp_display->post_open = dp_display_post_open;
		dp->dp_display.is_connected = false;
		dp->dp_display.is_sst_connected = false;
	}

Loading