Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp1071455pxu; Fri, 16 Oct 2020 03:08:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwHHfxDTf1vynkfU1/v8ISv0gfs3GzwA7yHa2qO7hFM1h3zsGbTg6JPXGEUL2oiQBCeYchp X-Received: by 2002:aa7:cd90:: with SMTP id x16mr2869062edv.302.1602842919477; Fri, 16 Oct 2020 03:08:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602842919; cv=none; d=google.com; s=arc-20160816; b=YBMbZP3d5Cds5/vpN7jTNRUB29VOe0rXM+6gFBpADJ1AfmRw5mzwsrTsO8GQLEM/dD ilWh/5gJTZJ/diVdiVD8XIps5AOS5JdcGLEd/GjZmxLXkrYhkBt0Wx3TOB9YM9IlWVZG PhbxFGeWevCJLdQ/Lapyv9XUMHe2cl0oF94wDNpoXQniQ5brM2vAd4MTH4mIOBjnXPpT IG6v0OWL8fKmBNRiw1tmIRKk14+DkiPAxeB2TiVR1BUO5MUf/n4d/TqiO9Gp7/cbcC9g s5PrFa3jLICI1Hr8lzfaisaNP6WH7m/7qwthTIzIxka6kR+cRGzgCn+N/LZL4WfyPFUe zc7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=0XTfL4pSe62ycr/g8wS7F/4fMoN50VicV4B4wyZJKic=; b=TYv6gba9WawWnHWpHx6CXNImq1f7GQFy7I9DCRnGtYKA+B6AmZXP7jN9KoW5K/nfcV BgYaHNP3XaZG8L8Z0wlKxh8fBROno9ohagNOJQksQkUXNrBAmyIgMFVMVSztBCqWX36m 3kyRKBl/C5GYg9ALXO37fbbjjML7QHaryWlVhH6H6ShMEJsHHMbB/TH+L/acSXy9xAWt 3Lci15hUIqyvFrcMXPL76vFTIe5avSSCal5JcrPE9VoYRo0odjN2ehu07XFUJl4QeAxN 90s2Rs5nfDPykOYJ0mKVOCdAKZ4Vo9OBUWFHrIQxwz84rD3fKmfofl6/CxUTiQgH1EcQ kvoA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w23si1324672ejn.69.2020.10.16.03.08.17; Fri, 16 Oct 2020 03:08:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406596AbgJPKHM (ORCPT + 99 others); Fri, 16 Oct 2020 06:07:12 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:36061 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2406570AbgJPKHI (ORCPT ); Fri, 16 Oct 2020 06:07:08 -0400 X-Originating-IP: 93.34.118.233 Received: from uno.lan (93-34-118-233.ip49.fastwebnet.it [93.34.118.233]) (Authenticated sender: jacopo@jmondi.org) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 2BC2AE0010; Fri, 16 Oct 2020 10:07:03 +0000 (UTC) From: Jacopo Mondi To: kieran.bingham+renesas@ideasonboard.com, laurent.pinchart+renesas@ideasonboard.com, niklas.soderlund+renesas@ragnatech.se Cc: Jacopo Mondi , linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Hyun Kwon , Manivannan Sadhasivam Subject: [PATCH v3 5/7] media: i2c: max9286: Configure reverse channel amplitude Date: Fri, 16 Oct 2020 14:06:23 +0200 Message-Id: <20201016120625.64337-6-jacopo+renesas@jmondi.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201016120625.64337-1-jacopo+renesas@jmondi.org> References: <20201016120625.64337-1-jacopo+renesas@jmondi.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. Signed-off-by: Jacopo Mondi --- 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; -- 2.28.0