linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dmitry Osipenko <digetx@gmail.com>
To: "Thierry Reding" <thierry.reding@gmail.com>,
	"Jonathan Hunter" <jonathanh@nvidia.com>,
	"Laxman Dewangan" <ldewangan@nvidia.com>,
	"Wolfram Sang" <wsa@the-dreams.de>,
	"Michał Mirosław" <mirq-linux@rere.qmqm.pl>,
	"Andy Shevchenko" <andy.shevchenko@gmail.com>
Cc: linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v8 09/32] i2c: tegra: Use reset_control_reset()
Date: Wed, 23 Sep 2020 01:51:32 +0300	[thread overview]
Message-ID: <20200922225155.10798-10-digetx@gmail.com> (raw)
In-Reply-To: <20200922225155.10798-1-digetx@gmail.com>

Use a single reset_control_reset() instead of assert/deasset couple in
order to make code cleaner a tad. Note that the reset_control_reset()
uses 1 microsecond delay instead of 2 that was used previously, but this
shouldn't matter because one microsecond is a default reset time for most
of Tegra peripherals and TRM doesn't mention anything special in regards
to I2C controller's reset propagation time.

In addition don't ignore potential error of the reset control by emitting
a noisy warning if it fails, which will indicate an existence of a severe
problem, while still allow machine to boot up.

Reviewed-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Acked-by: Thierry Reding <treding@nvidia.com>
Tested-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
 drivers/i2c/busses/i2c-tegra.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index b813c0976c10..90ba2f5327c5 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -785,9 +785,16 @@ static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev)
 	u32 tsu_thd;
 	u8 tlow, thigh;
 
-	reset_control_assert(i2c_dev->rst);
-	udelay(2);
-	reset_control_deassert(i2c_dev->rst);
+	/*
+	 * The reset shouldn't ever fail in practice. The failure will be a
+	 * sign of a severe problem that needs to be resolved. Still we don't
+	 * want to fail the initialization completely because this may break
+	 * kernel boot up since voltage regulators use I2C. Hence, we will
+	 * emit a noisy warning on error, which won't stay unnoticed and
+	 * won't hose machine entirely.
+	 */
+	err = reset_control_reset(i2c_dev->rst);
+	WARN_ON_ONCE(err);
 
 	if (i2c_dev->is_dvc)
 		tegra_dvc_init(i2c_dev);
-- 
2.27.0


  parent reply	other threads:[~2020-09-22 22:54 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-22 22:51 [PATCH v8 00/32] Improvements for Tegra I2C driver Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 01/32] i2c: tegra: Make tegra_i2c_flush_fifos() usable in atomic transfer Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 02/32] i2c: tegra: Add missing pm_runtime_put() Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 03/32] i2c: tegra: Handle potential error of tegra_i2c_flush_fifos() Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 04/32] i2c: tegra: Mask interrupt in tegra_i2c_issue_bus_clear() Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 05/32] i2c: tegra: Initialize div-clk rate unconditionally Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 06/32] i2c: tegra: Remove i2c_dev.clk_divisor_non_hs_mode member Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 07/32] i2c: tegra: Runtime PM always available on Tegra Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 08/32] i2c: tegra: Remove error message used for devm_request_irq() failure Dmitry Osipenko
2020-09-22 22:51 ` Dmitry Osipenko [this message]
2020-09-22 22:51 ` [PATCH v8 10/32] i2c: tegra: Use devm_platform_get_and_ioremap_resource() Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 11/32] i2c: tegra: Use platform_get_irq() Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 12/32] i2c: tegra: Use clk-bulk helpers Dmitry Osipenko
2020-09-29 19:33   ` Wolfram Sang
2020-09-29 21:01     ` Dmitry Osipenko
2020-09-29 21:46       ` Wolfram Sang
2020-09-22 22:51 ` [PATCH v8 13/32] i2c: tegra: Move out all device-tree parsing into tegra_i2c_parse_dt() Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 14/32] i2c: tegra: Clean up probe function Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 15/32] i2c: tegra: Reorder location of functions in the code Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 16/32] i2c: tegra: Clean up variable types Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 17/32] i2c: tegra: Remove outdated barrier() Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 18/32] i2c: tegra: Remove likely/unlikely from the code Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 19/32] i2c: tegra: Remove redundant check in tegra_i2c_issue_bus_clear() Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 20/32] i2c: tegra: Remove "dma" variable from tegra_i2c_xfer_msg() Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 21/32] i2c: tegra: Rename wait/poll functions Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 22/32] i2c: tegra: Factor out error recovery from tegra_i2c_xfer_msg() Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 23/32] i2c: tegra: Factor out packet header setup " Dmitry Osipenko
2020-09-29 21:16   ` Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 24/32] i2c: tegra: Factor out register polling into separate function Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 25/32] i2c: tegra: Factor out hardware initialization " Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 26/32] i2c: tegra: Check errors for both positive and negative values Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 27/32] i2c: tegra: Improve formatting of variables Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 28/32] i2c: tegra: Clean up variable names Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 29/32] i2c: tegra: Clean up printk messages Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 30/32] i2c: tegra: Clean up and improve comments Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 31/32] i2c: tegra: Clean up whitespaces, newlines and indentation Dmitry Osipenko
2020-09-22 22:51 ` [PATCH v8 32/32] i2c: tegra: Improve driver module description Dmitry Osipenko
2020-09-23  1:19 ` [PATCH v8 00/32] Improvements for Tegra I2C driver Dmitry Osipenko
2020-09-23  7:01   ` Wolfram Sang
2020-09-23 16:10     ` Dmitry Osipenko

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=20200922225155.10798-10-digetx@gmail.com \
    --to=digetx@gmail.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=ldewangan@nvidia.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mirq-linux@rere.qmqm.pl \
    --cc=thierry.reding@gmail.com \
    --cc=wsa@the-dreams.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).