[PATCH 3/3] drm/dp: Add dp_aux_i2c_speed_khz module param to set the assume i2c bus speed

Simon Farnsworth simon at farnz.org.uk
Wed Aug 26 14:23:02 PDT 2015


All three patches are:

Reviewed-by: Simon Farnsworth <simon.farnsworth at onelan.com>

I'd consider making the upper limit of AUX_RETRY_INTERVAL a define as well, but 
that's just nit-picking and not worth respinning the patches.

Simon

On Wednesday 26 Aug 2015 22:55:07 ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> To help with debugging i2c-over-aux issues, add a module parameter than
> can be used to tweak the assumed i2c bus speed, and thus the maximum
> number of retries we will do for each aux message.
> 
> Cc: Simon Farnsworth <simon.farnsworth at onelan.com>
> Cc: moosotc at gmail.com
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>  drivers/gpu/drm/drm_dp_helper.c | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_dp_helper.c
> b/drivers/gpu/drm/drm_dp_helper.c index 23b9fcc..ee5cd86 100644
> --- a/drivers/gpu/drm/drm_dp_helper.c
> +++ b/drivers/gpu/drm/drm_dp_helper.c
> @@ -497,6 +497,15 @@ static int drm_dp_i2c_retry_count(const struct
> drm_dp_aux_msg *msg, }
> 
>  /*
> + * FIXME currently assumes 10 kHz as some real world devices seem
> + * to require it. We should query/set the speed via DPCD if supported.
> + */
> +static int dp_aux_i2c_speed_khz __read_mostly = 10;
> +module_param_unsafe(dp_aux_i2c_speed_khz, int, 0644);
> +MODULE_PARM_DESC(dp_aux_i2c_speed_khz,
> +		 "Assumed speed of the i2c bus in kHz, (1-400, default 10)");
> +
> +/*
>   * Transfer a single I2C-over-AUX message and handle various error
> conditions, * retrying the transaction as appropriate.  It is assumed that
> the * aux->transfer function does not modify anything in the msg other than
> the @@ -514,10 +523,8 @@ static int drm_dp_i2c_do_msg(struct drm_dp_aux
> *aux, struct drm_dp_aux_msg *msg) * before giving up the AUX transaction.
>  	 *
>  	 * We also try to account for the i2c bus speed.
> -	 * FIXME currently assumes 10 kHz as some real world devices seem
> -	 * to require it. We should query/set the speed via DPCD if supported.
>  	 */
> -	int max_retries = max(7, drm_dp_i2c_retry_count(msg, 10));
> +	int max_retries = max(7, drm_dp_i2c_retry_count(msg,
> dp_aux_i2c_speed_khz));
> 
>  	for (retry = 0, defer_i2c = 0; retry < (max_retries + defer_i2c); 
retry++)
> { mutex_lock(&aux->hw_mutex);


More information about the dri-devel mailing list