From: Fabio Estevam <festevam@gmail.com>
To: broonie@kernel.org
Cc: mkl@pengutronix.de, david@protonic.nl, linux-spi@vger.kernel.org,
frieder.schrempf@kontron.de, Fabio Estevam <festevam@gmail.com>,
stable@kernel.org
Subject: [PATCH] spi: spi-imx: Revert "spi: spi-imx: add PIO polling support"
Date: Thu, 10 Nov 2022 21:30:32 -0300 [thread overview]
Message-ID: <20221111003032.82371-1-festevam@gmail.com> (raw)
This reverts commit 07e7593877882fbd07c55b26b7dcf88760449323.
Since commit 07e759387788 ("spi: spi-imx: add PIO polling support") it is
no longer possible to do successful SPI NOR programming on
imx8mm-kontron-n801x-som, even though the copy operation returns no errors
to the user.
After programming the SPI NOR flash from Linux, the board fails to
boot from SPI NOR, leading to an unbootable system.
Revert it to fix the regression.
Cc: stable@kernel.org
Fixes: 07e759387788 ("spi: spi-imx: add PIO polling support")
Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
drivers/spi/spi-imx.c | 66 -------------------------------------------
1 file changed, 66 deletions(-)
diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c
index a4bda03d3a8e..b946d98a8d66 100644
--- a/drivers/spi/spi-imx.c
+++ b/drivers/spi/spi-imx.c
@@ -31,12 +31,6 @@ static bool use_dma = true;
module_param(use_dma, bool, 0644);
MODULE_PARM_DESC(use_dma, "Enable usage of DMA when available (default)");
-/* define polling limits */
-static unsigned int polling_limit_us = 30;
-module_param(polling_limit_us, uint, 0664);
-MODULE_PARM_DESC(polling_limit_us,
- "time in us to run a transfer in polling mode\n");
-
#define MXC_RPM_TIMEOUT 2000 /* 2000ms */
#define MXC_CSPIRXDATA 0x00
@@ -1490,54 +1484,6 @@ static int spi_imx_pio_transfer(struct spi_device *spi,
return 0;
}
-static int spi_imx_poll_transfer(struct spi_device *spi,
- struct spi_transfer *transfer)
-{
- struct spi_imx_data *spi_imx = spi_controller_get_devdata(spi->controller);
- unsigned long timeout;
-
- spi_imx->tx_buf = transfer->tx_buf;
- spi_imx->rx_buf = transfer->rx_buf;
- spi_imx->count = transfer->len;
- spi_imx->txfifo = 0;
- spi_imx->remainder = 0;
-
- /* fill in the fifo before timeout calculations if we are
- * interrupted here, then the data is getting transferred by
- * the HW while we are interrupted
- */
- spi_imx_push(spi_imx);
-
- timeout = spi_imx_calculate_timeout(spi_imx, transfer->len) + jiffies;
- while (spi_imx->txfifo) {
- /* RX */
- while (spi_imx->txfifo &&
- spi_imx->devtype_data->rx_available(spi_imx)) {
- spi_imx->rx(spi_imx);
- spi_imx->txfifo--;
- }
-
- /* TX */
- if (spi_imx->count) {
- spi_imx_push(spi_imx);
- continue;
- }
-
- if (spi_imx->txfifo &&
- time_after(jiffies, timeout)) {
-
- dev_err_ratelimited(&spi->dev,
- "timeout period reached: jiffies: %lu- falling back to interrupt mode\n",
- jiffies - timeout);
-
- /* fall back to interrupt mode */
- return spi_imx_pio_transfer(spi, transfer);
- }
- }
-
- return 0;
-}
-
static int spi_imx_pio_transfer_slave(struct spi_device *spi,
struct spi_transfer *transfer)
{
@@ -1587,7 +1533,6 @@ static int spi_imx_transfer_one(struct spi_controller *controller,
struct spi_transfer *transfer)
{
struct spi_imx_data *spi_imx = spi_controller_get_devdata(spi->controller);
- unsigned long hz_per_byte, byte_limit;
spi_imx_setupxfer(spi, transfer);
transfer->effective_speed_hz = spi_imx->spi_bus_clk;
@@ -1599,17 +1544,6 @@ static int spi_imx_transfer_one(struct spi_controller *controller,
if (spi_imx->slave_mode)
return spi_imx_pio_transfer_slave(spi, transfer);
- /*
- * Calculate the estimated time in us the transfer runs. Find
- * the number of Hz per byte per polling limit.
- */
- hz_per_byte = polling_limit_us ? ((8 + 4) * USEC_PER_SEC) / polling_limit_us : 0;
- byte_limit = hz_per_byte ? transfer->effective_speed_hz / hz_per_byte : 1;
-
- /* run in polling mode for short transfers */
- if (transfer->len < byte_limit)
- return spi_imx_poll_transfer(spi, transfer);
-
if (spi_imx->usedma)
return spi_imx_dma_transfer(spi_imx, transfer);
--
2.25.1
next reply other threads:[~2022-11-11 0:30 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-11 0:30 Fabio Estevam [this message]
2022-11-11 9:50 ` [PATCH] spi: spi-imx: Revert "spi: spi-imx: add PIO polling support" David Jander
2022-11-11 11:33 ` Fabio Estevam
2022-11-11 12:59 ` David Jander
2022-11-14 8:30 ` Frieder Schrempf
2022-11-14 11:29 ` Mark Brown
2022-11-15 10:51 ` Frieder Schrempf
2022-11-15 12:09 ` Frieder Schrempf
2022-11-15 12:55 ` Marc Kleine-Budde
2022-11-15 14:46 ` Frieder Schrempf
2022-11-15 15:45 ` Fabio Estevam
2022-11-15 15:46 ` Marc Kleine-Budde
2022-11-15 16:05 ` Frieder Schrempf
2022-11-15 16:52 ` Marc Kleine-Budde
2022-11-15 17:11 ` Frieder Schrempf
2022-11-15 18:01 ` Marc Kleine-Budde
2022-11-15 17:17 ` Fabio Estevam
2022-11-14 13:01 ` Fabio Estevam
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=20221111003032.82371-1-festevam@gmail.com \
--to=festevam@gmail.com \
--cc=broonie@kernel.org \
--cc=david@protonic.nl \
--cc=frieder.schrempf@kontron.de \
--cc=linux-spi@vger.kernel.org \
--cc=mkl@pengutronix.de \
--cc=stable@kernel.org \
/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