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

Commit bc2caf56 authored by Rohith Palakurthi's avatar Rohith Palakurthi
Browse files

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



* quic/dev/msm-4.14-display:
  ARM: msm: dts: modify rotator line width for sm8150
  drm/msm/shd: update base display mode at enable stage
  drm/msm/sde: simplify line padding parameter calculation
  drm/dp: Correctly mask DP_TRAINING_AUX_RD_INTERVAL values for DP 1.4
  drm/dp: cache edid for mst physical output ports
  drm/msm/dsi-staging: optimise TE status check sequence
  drm/msm/dsi-staging: improve ESD error logging
  drm/msm/sde: Remove unused api from SDE resource manager
  ARM: dts: msm: add entry for mnoc ports and axi bus width for Trinket
  drm/msm/sde: add properties for number of mnoc ports and axi bus width
  drm/msm/dsi-staging: Add pre/post clk off/on callback path
  drm/msm/dp: use scaled up mvid/nvid values
  drm/msm/sde: change line padding ratio limitation
  drm/msm/dp: update HDCP stream de-registration logic
  drm/msm/dp: update HDCP worker to wait for sink synchronization
  drm/bridge: add pm suspend/resume function for anx7625
  drm/dp: export remote dpcd read/write from drm_dp_mst_topology

Change-Id: I7637c5a8d593256ec495b9c1f3349983597ffa10
Signed-off-by: default avatarRohith Palakurthi <prohit@codeaurora.org>
parents cf276499 3eee7efa
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -443,6 +443,8 @@ Optional properties:
				ordering block
				ordering block
				0: lower priority pipe has to be on the left for a given pair of pipes.
				0: lower priority pipe has to be on the left for a given pair of pipes.
				1: priority have to be explicitly configured for a given pair of pipes.
				1: priority have to be explicitly configured for a given pair of pipes.
- qcom,sde-num-mnoc-ports:	A u32 property to indicate the number of mnoc ports
- qcom,sde-axi-bus-width:	A u32 property to indicate the axi bus width value in bytes


Bus Scaling Subnodes:
Bus Scaling Subnodes:
- qcom,sde-reg-bus:		Property to provide Bus scaling for register access for
- qcom,sde-reg-bus:		Property to provide Bus scaling for register access for
+1 −2
Original line number Original line 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
 * 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
 * it under the terms of the GNU General Public License version 2 and
@@ -394,7 +394,6 @@
		qcom,mdss-default-ot-wr-limit = <32>;
		qcom,mdss-default-ot-wr-limit = <32>;


		qcom,mdss-sbuf-headroom = <20>;
		qcom,mdss-sbuf-headroom = <20>;
		qcom,mdss-rot-linewidth = <8192>;


		cache-slice-names = "rotator";
		cache-slice-names = "rotator";
		cache-slices = <&llcc 4>;
		cache-slices = <&llcc 4>;
+2 −0
Original line number Original line Diff line number Diff line
@@ -185,6 +185,8 @@
		qcom,sde-reg-dma-trigger-off = <0x119c>;
		qcom,sde-reg-dma-trigger-off = <0x119c>;


		qcom,sde-secure-sid-mask = <0x0000401>;
		qcom,sde-secure-sid-mask = <0x0000401>;
		qcom,sde-num-mnoc-ports = <1>;
		qcom,sde-axi-bus-width = <16>;


		qcom,sde-sspp-vig-blocks {
		qcom,sde-sspp-vig-blocks {
			qcom,sde-vig-csc-off = <0x1a00>;
			qcom,sde-vig-csc-off = <0x1a00>;
+49 −3
Original line number Original line Diff line number Diff line
/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
 *
 *
 * Copyright(c) 2016, Analogix Semiconductor. All rights reserved.
 * Copyright(c) 2016, Analogix Semiconductor. All rights reserved.
 *
 *
@@ -1253,10 +1253,14 @@ static void anx7625_bridge_disable(struct drm_bridge *bridge)


	mutex_lock(&anx7625->lock);
	mutex_lock(&anx7625->lock);


	anx7625_stop(anx7625);

	anx7625->enabled = false;
	anx7625->enabled = false;


	if (!anx7625->powered)
		goto out;

	anx7625_stop(anx7625);

out:
	mutex_unlock(&anx7625->lock);
	mutex_unlock(&anx7625->lock);


	TRACE("anx7625 disabled\n");
	TRACE("anx7625 disabled\n");
@@ -1291,6 +1295,9 @@ static void anx7625_bridge_enable(struct drm_bridge *bridge)


	anx7625->enabled = true;
	anx7625->enabled = true;


	if (!anx7625->powered)
		goto out;

	if (!anx7625->connected)
	if (!anx7625->connected)
		DRM_ERROR("cable is not connected\n");
		DRM_ERROR("cable is not connected\n");


@@ -1301,6 +1308,7 @@ static void anx7625_bridge_enable(struct drm_bridge *bridge)
	if (err)
	if (err)
		DRM_ERROR("Failed to start: %d\n", err);
		DRM_ERROR("Failed to start: %d\n", err);


out:
	mutex_unlock(&anx7625->lock);
	mutex_unlock(&anx7625->lock);


	TRACE("anx7625 enabled\n");
	TRACE("anx7625 enabled\n");
@@ -1512,10 +1520,48 @@ static const struct of_device_id anx7625_id_match_table[] = {
MODULE_DEVICE_TABLE(of, anx7625_id_match_table);
MODULE_DEVICE_TABLE(of, anx7625_id_match_table);
#endif
#endif


#ifdef CONFIG_PM_SLEEP
static int anx7625_suspend(struct device *dev)
{
	struct i2c_client *client = to_i2c_client(dev);
	struct anx7625 *anx7625 = i2c_get_clientdata(client);

	mutex_lock(&anx7625->lock);

	anx7625_poweroff(anx7625);

	mutex_unlock(&anx7625->lock);

	return 0;
}

static int anx7625_resume(struct device *dev)
{
	struct i2c_client *client = to_i2c_client(dev);
	struct anx7625 *anx7625 = i2c_get_clientdata(client);

	mutex_lock(&anx7625->lock);

	anx7625->last_read_DevAddr = 0;

	anx7625_poweron(anx7625);

	if (anx7625->enabled)
		anx7625_start(anx7625);

	mutex_unlock(&anx7625->lock);

	return 0;
}
#endif

static SIMPLE_DEV_PM_OPS(anx7625_pm, anx7625_suspend, anx7625_resume);

static struct i2c_driver anx7625_driver = {
static struct i2c_driver anx7625_driver = {
	.driver = {
	.driver = {
		.name = "anx7625",
		.name = "anx7625",
		.owner = THIS_MODULE,
		.owner = THIS_MODULE,
		.pm = &anx7625_pm,
#ifdef CONFIG_OF
#ifdef CONFIG_OF
		.of_match_table = anx7625_id_match_table,
		.of_match_table = anx7625_id_match_table,
#endif
#endif
+18 −4
Original line number Original line Diff line number Diff line
@@ -119,18 +119,32 @@ u8 drm_dp_get_adjust_request_pre_emphasis(const u8 link_status[DP_LINK_STATUS_SI
EXPORT_SYMBOL(drm_dp_get_adjust_request_pre_emphasis);
EXPORT_SYMBOL(drm_dp_get_adjust_request_pre_emphasis);


void drm_dp_link_train_clock_recovery_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) {
void drm_dp_link_train_clock_recovery_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) {
	if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] == 0)
	int rd_interval = dpcd[DP_TRAINING_AUX_RD_INTERVAL] &
			  DP_TRAINING_AUX_RD_MASK;

	if (rd_interval > 4)
		DRM_DEBUG_KMS("AUX interval %d, out of range (max 4)\n",
			      rd_interval);

	if (rd_interval == 0 || dpcd[DP_DPCD_REV] >= DP_DPCD_REV_14)
		udelay(100);
		udelay(100);
	else
	else
		mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4);
		mdelay(rd_interval * 4);
}
}
EXPORT_SYMBOL(drm_dp_link_train_clock_recovery_delay);
EXPORT_SYMBOL(drm_dp_link_train_clock_recovery_delay);


void drm_dp_link_train_channel_eq_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) {
void drm_dp_link_train_channel_eq_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) {
	if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] == 0)
	int rd_interval = dpcd[DP_TRAINING_AUX_RD_INTERVAL] &
			  DP_TRAINING_AUX_RD_MASK;

	if (rd_interval > 4)
		DRM_DEBUG_KMS("AUX interval %d, out of range (max 4)\n",
			      rd_interval);

	if (rd_interval == 0)
		udelay(400);
		udelay(400);
	else
	else
		mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4);
		mdelay(rd_interval * 4);
}
}
EXPORT_SYMBOL(drm_dp_link_train_channel_eq_delay);
EXPORT_SYMBOL(drm_dp_link_train_channel_eq_delay);


Loading