From: j.braam@homeautomationeurope.com (Jurgen Braam)
To: linux-arm-kernel@lists.infradead.org
Subject: i.MX27 SPI tx fifo underrun
Date: Thu, 14 Apr 2011 17:29:57 +0200 [thread overview]
Message-ID: <io73tm$1e5$1@dough.gmane.org> (raw)
Hey Folks,
while trying to write to an at25 eeprom connected via SPI on an i.MX27,
I ran into a TX FIFO underrun. In spi_imx_isr() the variable
spi_imx->txfifo gets rather large as a result of an unsigned integer
underflow, resulting in a feels-like-endless loop.
The following patch fixes the problem in our case:
--- a/drivers/spi/spi_imx.c
+++ b/drivers/spi/spi_imx.c
@@ -407,7 +407,7 @@ static void __maybe_unused spi_imx0_4_reset(struct
spi_imx_data *spi_imx)
}
#define MX27_INTREG_RR (1 << 4)
-#define MX27_INTREG_TEEN (1 << 9)
+#define MX27_INTREG_TSHFEEN (1 << 12)
#define MX27_INTREG_RREN (1 << 13)
#define MX27_CSPICTRL_POL (1 << 5)
@@ -424,7 +424,7 @@ static void __maybe_unused mx27_intctrl(struct
spi_imx_data *spi_imx, int enable
unsigned int val = 0;
if (enable & MXC_INT_TE)
- val |= MX27_INTREG_TEEN;
+ val |= MX27_INTREG_TSHFEEN;
if (enable & MXC_INT_RR)
val |= MX27_INTREG_RREN;
The i.MX27 manual states you have to wait for a TSHFE interrupt or poll
the XCH bit. The i.MX31 manual for instance says to wait for a TC
interrupt or poll XCH. The app flow of both docs never mention waiting
for the TE interrupt.
Maybe the MX1_INTREG_TEEN and/or MX31_INTREG_TEEN refs need to be
changed as well? Anybody know if this is true? Comments?
grtz,
Jurgen
next reply other threads:[~2011-04-14 15:29 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-14 15:29 Jurgen Braam [this message]
2011-04-14 18:36 ` i.MX27 SPI tx fifo underrun Robert Schwebel
2011-04-14 18:43 ` Wolfram Sang
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='io73tm$1e5$1@dough.gmane.org' \
--to=j.braam@homeautomationeurope.com \
--cc=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).