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

Commit 6093a133 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

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

parents ce28c9b7 bc2caf56
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -443,6 +443,8 @@ Optional properties:
				ordering block
				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.
- 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:
- qcom,sde-reg-bus:		Property to provide Bus scaling for register access for
+1 −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
@@ -394,7 +394,6 @@
		qcom,mdss-default-ot-wr-limit = <32>;

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

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

		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-vig-csc-off = <0x1a00>;
+49 −3
Original line number 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.
 *
@@ -1253,10 +1253,14 @@ static void anx7625_bridge_disable(struct drm_bridge *bridge)

	mutex_lock(&anx7625->lock);

	anx7625_stop(anx7625);

	anx7625->enabled = false;

	if (!anx7625->powered)
		goto out;

	anx7625_stop(anx7625);

out:
	mutex_unlock(&anx7625->lock);

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

	anx7625->enabled = true;

	if (!anx7625->powered)
		goto out;

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

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

out:
	mutex_unlock(&anx7625->lock);

	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);
#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 = {
	.driver = {
		.name = "anx7625",
		.owner = THIS_MODULE,
		.pm = &anx7625_pm,
#ifdef CONFIG_OF
		.of_match_table = anx7625_id_match_table,
#endif
+18 −4
Original line number 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);

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);
	else
		mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4);
		mdelay(rd_interval * 4);
}
EXPORT_SYMBOL(drm_dp_link_train_clock_recovery_delay);

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);
	else
		mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4);
		mdelay(rd_interval * 4);
}
EXPORT_SYMBOL(drm_dp_link_train_channel_eq_delay);

Loading