All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Lechner <dlechner@baylibre.com>
To: linux-spi@vger.kernel.org
Cc: "David Lechner" <dlechner@baylibre.com>,
	"Mark Brown" <broonie@kernel.org>,
	"Michael Hennerich" <michael.hennerich@analog.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 7/9] spi: axi-spi-engine: restore clkdiv at end of message
Date: Mon,  4 Dec 2023 11:33:33 -0600	[thread overview]
Message-ID: <20231204-axi-spi-engine-series-2-v1-7-063672323fce@baylibre.com> (raw)
In-Reply-To: <20231204-axi-spi-engine-series-2-v1-0-063672323fce@baylibre.com>

This modifies the ADI AXI SPI Engine driver to restore the clkdiv
configuration register at the end of a SPI message. Having the clkdiv in
a known state is needed to be able to add a new command in the future
that only performs a delay without any SPI transfers. Furthermore having
that state be the smallest possible divider will allow these delays to
have the highest possible precision.

Changing the initial value of clk_div from -1 to 1 is now possible
because we know the function will always be called with a known clkdiv
config register state. Making this change will also have the effect of
not emitting a clkdiv configuration register instruction in cases where
the maximum sclk rate is used. Having one less instruction to process
reduces delays on the bus which will be beneficial when we implement
offload support to enable reading data from devices at very high rates.

Signed-off-by: David Lechner <dlechner@baylibre.com>
---
 drivers/spi/spi-axi-spi-engine.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/spi/spi-axi-spi-engine.c b/drivers/spi/spi-axi-spi-engine.c
index 3437829ef8b1..3798f96da586 100644
--- a/drivers/spi/spi-axi-spi-engine.c
+++ b/drivers/spi/spi-axi-spi-engine.c
@@ -228,7 +228,7 @@ static void spi_engine_compile_message(struct spi_message *msg, bool dry,
 	bool keep_cs = false;
 	u8 bits_per_word = 0;
 
-	clk_div = -1;
+	clk_div = 1;
 
 	spi_engine_program_add_cmd(p, dry,
 		SPI_ENGINE_CMD_WRITE(SPI_ENGINE_CMD_REG_CONFIG,
@@ -280,6 +280,14 @@ static void spi_engine_compile_message(struct spi_message *msg, bool dry,
 
 	if (!keep_cs)
 		spi_engine_gen_cs(p, dry, spi, false);
+
+	/*
+	 * Restore clockdiv to default so that future gen_sleep commands don't
+	 * have to be aware of the current register state.
+	 */
+	if (clk_div != 1)
+		spi_engine_program_add_cmd(p, dry,
+			SPI_ENGINE_CMD_WRITE(SPI_ENGINE_CMD_REG_CLK_DIV, 0));
 }
 
 static void spi_engine_xfer_next(struct spi_message *msg,

-- 
2.43.0


  parent reply	other threads:[~2023-12-04 17:35 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-04 17:33 [PATCH 0/9] spi: axi-spi-engine: improvements round 2 David Lechner
2023-12-04 17:33 ` [PATCH 1/9] spi: axi-spi-engine: return void from spi_engine_compile_message() David Lechner
2023-12-04 17:33 ` [PATCH 2/9] spi: axi-spi-engine: populate xfer->effective_speed_hz David Lechner
2023-12-04 17:33 ` [PATCH 3/9] spi: axi-spi-engine: remove spi_engine_get_clk_div() David Lechner
2023-12-04 17:33 ` [PATCH 4/9] spi: axi-spi-engine: fix sleep ticks calculation David Lechner
2023-12-04 17:33 ` [PATCH 5/9] spi: axi-spi-engine: remove xfer arg from spi_engine_gen_sleep() David Lechner
2023-12-04 17:33 ` [PATCH 6/9] spi: axi-spi-engine: implement xfer->cs_change_delay David Lechner
2023-12-04 17:33 ` David Lechner [this message]
2023-12-04 17:33 ` [PATCH 8/9] spi: axi-spi-engine: remove delay from CS assertion David Lechner
2023-12-04 17:33 ` [PATCH 9/9] spi: axi-spi-engine: add watchdog timer David Lechner
2023-12-05 15:12 ` [PATCH 0/9] spi: axi-spi-engine: improvements round 2 Nuno Sá
2023-12-05 15:52   ` Hennerich, Michael
2023-12-06 21:04 ` Mark Brown

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=20231204-axi-spi-engine-series-2-v1-7-063672323fce@baylibre.com \
    --to=dlechner@baylibre.com \
    --cc=broonie@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=michael.hennerich@analog.com \
    --cc=nuno.sa@analog.com \
    /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.