All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
To: Jacopo Mondi <jacopo+renesas@jmondi.org>,
	laurent.pinchart+renesas@ideasonboard.com,
	niklas.soderlund+renesas@ragnatech.se
Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
	linux-kernel@vger.kernel.org, Hyun Kwon <hyunk@xilinx.com>,
	Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Subject: Re: [PATCH v3 5/7] media: i2c: max9286: Configure reverse channel amplitude
Date: Fri, 16 Oct 2020 12:04:29 +0100	[thread overview]
Message-ID: <b27d0984-a1c5-d8a5-6e5a-1fefc3b87fd5@ideasonboard.com> (raw)
In-Reply-To: <20201016120625.64337-6-jacopo+renesas@jmondi.org>

Hi Jacopo,

On 16/10/2020 13:06, Jacopo Mondi wrote:
> Adjust reverse channel amplitude according to the presence of
> the 'high-threshold" DTS property.
> 
> If no high threshold compensation is required, start with a low
> amplitude (100mV) and increase it after the remote serializers
> have probed and have enabled noise immunity on their reverse
> channels.
> 
> If high threshold compensation is required, configure the reverse
> channel with a 170mV amplitude before the remote serializers have
> probed.
> 
> This change is required for both rdacm20 and rdacm21 camera modules
> to be correctly probed when used in combination with the max9286
> deserializer.

My only fear here would be that perhaps on other cameras we need a more
fine-grained control of the amplitudes?

But I'll leave that discussion to the binding itself,

For this patch ...

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>


> 
> Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
> ---
>  drivers/media/i2c/max9286.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
> index 31e27d0f34f1..4c72e1e6b27b 100644
> --- a/drivers/media/i2c/max9286.c
> +++ b/drivers/media/i2c/max9286.c
> @@ -163,6 +163,8 @@ struct max9286_priv {
>  	unsigned int mux_channel;
>  	bool mux_open;
>  
> +	bool high_threshold;
> +
>  	struct v4l2_ctrl_handler ctrls;
>  	struct v4l2_ctrl *pixelrate;
>  
> @@ -557,10 +559,14 @@ static int max9286_notify_bound(struct v4l2_async_notifier *notifier,
>  	 * All enabled sources have probed and enabled their reverse control
>  	 * channels:
>  	 *
> +	 * - Increase the reverse channel amplitude to compensate for the
> +	 *   remote ends high threshold, if not done already
>  	 * - Verify all configuration links are properly detected
>  	 * - Disable auto-ack as communication on the control channel are now
>  	 *   stable.
>  	 */
> +	if (!priv->high_threshold)
> +		max9286_reverse_channel_setup(priv, 170);
>  	max9286_check_config_link(priv, priv->source_mask);
>  
>  	/*
> @@ -967,7 +973,12 @@ static int max9286_setup(struct max9286_priv *priv)
>  	 * only. This should be disabled after the mux is initialised.
>  	 */
>  	max9286_configure_i2c(priv, true);
> -	max9286_reverse_channel_setup(priv, 170);
> +
> +	/*
> +	 * Compensate the remote end high threshold with a larger channel
> +	 * amplitude if necessary.
> +	 */
> +	max9286_reverse_channel_setup(priv, priv->high_threshold ? 170 : 100);
>  
>  	/*
>  	 * Enable GMSL links, mask unused ones and autodetect link
> @@ -1235,6 +1246,12 @@ static int max9286_parse_dt(struct max9286_priv *priv)
>  	}
>  	of_node_put(node);
>  
> +	/*
> +	 * Parse 'high_threshold' property to configure the reverse channel
> +	 * amplitude.
> +	 */
> +	priv->high_threshold = device_property_present(dev, "high_threshold");
> +
>  	priv->route_mask = priv->source_mask;
>  
>  	return 0;
> 


  reply	other threads:[~2020-10-16 11:04 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-16 12:06 [PATCH v3 0/7] media: i2c: Add support for RDACM21 camera module Jacopo Mondi
2020-10-16 12:06 ` [PATCH v3 1/7] media: i2c: Add driver " Jacopo Mondi
2020-10-16 12:06 ` [PATCH v3 2/7] dt-bindings: media: max9286: Document 'maxim,high-threshold' Jacopo Mondi
2020-10-16 11:50   ` Geert Uytterhoeven
2020-10-16 14:56     ` Jacopo Mondi
2020-10-16 13:04       ` Geert Uytterhoeven
2020-10-16 13:27         ` Kieran Bingham
2020-10-16 12:06 ` [PATCH v3 3/7] media: i2c: max9286: Break-out reverse channel setup Jacopo Mondi
2020-10-16 12:06 ` [PATCH v3 4/7] media: i2c: max9286: Make channel amplitude programmable Jacopo Mondi
2020-10-16 12:06 ` [PATCH v3 5/7] media: i2c: max9286: Configure reverse channel amplitude Jacopo Mondi
2020-10-16 11:04   ` Kieran Bingham [this message]
2020-10-16 12:06 ` [PATCH v3 6/7] arm64: dts: renesas: salvator-x: Add MAX9286 expansion board Jacopo Mondi
2020-10-16 12:06 ` [PATCH v3 7/7] [DNI] arm64: dts: renesas: salvator-x-max9286: Use high-threshold Jacopo Mondi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b27d0984-a1c5-d8a5-6e5a-1fefc3b87fd5@ideasonboard.com \
    --to=kieran.bingham+renesas@ideasonboard.com \
    --cc=hyunk@xilinx.com \
    --cc=jacopo+renesas@jmondi.org \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=manivannan.sadhasivam@linaro.org \
    --cc=niklas.soderlund+renesas@ragnatech.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.