diff mbox

[4/5] drm/i915; Add a function to return index of link rate

Message ID 1477093543-11622-5-git-send-email-manasi.d.navare@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Navare, Manasi Oct. 21, 2016, 11:45 p.m. UTC
This is required to return the index of link rate into
common_rates array. This gets used to retry the link
training at lower link rate.

Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

Comments

Dhinakaran Pandiyan Oct. 25, 2016, 6:33 a.m. UTC | #1
On Fri, 2016-10-21 at 16:45 -0700, Manasi Navare wrote:
> This is required to return the index of link rate into

> common_rates array. This gets used to retry the link

> training at lower link rate.

> 

> Cc: Jani Nikula <jani.nikula@linux.intel.com>

> Cc: Daniel Vetter <daniel.vetter@intel.com>

> Cc: Ville Syrjala <ville.syrjala@linux.intel.com>

> Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>

> ---

>  drivers/gpu/drm/i915/intel_dp.c | 15 +++++++++++++++

>  1 file changed, 15 insertions(+)

> 

> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c

> index c499ec1..c192e18 100644

> --- a/drivers/gpu/drm/i915/intel_dp.c

> +++ b/drivers/gpu/drm/i915/intel_dp.c

> @@ -288,6 +288,21 @@ static int intel_dp_common_rates(struct intel_dp *intel_dp,

>  			       common_rates);

>  }

>  

> +static int intel_dp_link_rate_index(struct intel_dp *intel_dp,

> +				    int *common_rates, int link_rate)

> +{

> +	int common_len;

> +	int index;

> +

> +	common_len = intel_dp_common_rates(intel_dp, common_rates);

> +	for (index = 0; index < common_len; index++) {



Running the loop in the opposite direction will eliminate the
unnecessary array index computations.


> +		if (link_rate == common_rates[common_len - index - 1])

> +			return common_len - index - 1;

> +	}

> +

> +	return -1;

> +}

> +

>  static enum drm_mode_status

>  intel_dp_mode_valid(struct drm_connector *connector,

>  		    struct drm_display_mode *mode)
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index c499ec1..c192e18 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -288,6 +288,21 @@  static int intel_dp_common_rates(struct intel_dp *intel_dp,
 			       common_rates);
 }
 
+static int intel_dp_link_rate_index(struct intel_dp *intel_dp,
+				    int *common_rates, int link_rate)
+{
+	int common_len;
+	int index;
+
+	common_len = intel_dp_common_rates(intel_dp, common_rates);
+	for (index = 0; index < common_len; index++) {
+		if (link_rate == common_rates[common_len - index - 1])
+			return common_len - index - 1;
+	}
+
+	return -1;
+}
+
 static enum drm_mode_status
 intel_dp_mode_valid(struct drm_connector *connector,
 		    struct drm_display_mode *mode)