From: Alexander Keller <alexander.keller.85@gmx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] mx28: fix i.MX28 spi driver
Date: Tue, 17 Jan 2012 00:33:08 +0100 [thread overview]
Message-ID: <20120116233308.209350@gmx.net> (raw)
In-Reply-To: <4F11CB5D.3050702@esd.eu>
> On 01/14/2012 03:10 PM, Marek Vasut wrote:
> >> The generic spi flash driver (drivers/mtd/spi/spi_flash.c) uses the
> >> spi low level driver's spi_xfer() function with len=0 to deassert the
> >> SPI flash' chip select. But the i.MX28 spi driver rejects this call
> >> due to len=0.
> >>
> >> This patch implements an exception for len=0 with the SPI_XFER_END
> >> flag set. This results in an extra read with the chip select being
> >> deasserted afterwards. There seems to be no way to deassert the signal
> >> by hand.
> >
> > This seems good, but it doesn't look too correct either (is there really
> no
> > other way to deassert CS than doing dummy read?).
> Not that I am aware of. Did you wrote that mxs_spi driver? How did you
> interpret the
> chips reference manual. I understood it this way: you need to tell the
> controller
> to deassert chip select before the final transfer.
>
> I could be possible to change the driver implementation and use GPIOs for
> chip select. But I think that's not the philisophy of this controller.
>
> > Do you see an issue with
> > current implementation on some board please?
> Yes, I installed an SST25VF032B SPI on the MX28EVK in preparation of our
> own board. The chip was detected correctly after power on, but erasing
> (that's one place where the status register polling is used) more than one
> page
> does not work and then after reset the device is not correctly detected.
>
> I would expect problems on the M28EVK (Denx) also. You might want to turn
> SPI + spi_flash debugging to see it. Also I found a posting from
> Alexander Keller on the u-boot list from 12/13/2011. Perhaps the can check
I just want to confirm and thanks to Matthias for this patch. I already stated my problems by writing the SPI flash ...
So, I use the IMX28EVK with a Winbond W25Q64CV SPI flash chip and it's working great now.
Thanks for the great work.
Alexander
> if
> this patch fixes his problems also.
>
> Matthias
> >
> >>
> >> Signed-off-by: Matthias Fuchs <matthias.fuchs@esd.eu>
> >> ---
> >> drivers/spi/mxs_spi.c | 12 +++++++++---
> >> 1 files changed, 9 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/drivers/spi/mxs_spi.c b/drivers/spi/mxs_spi.c
> >> index 4c27fef..adb9ca8 100644
> >> --- a/drivers/spi/mxs_spi.c
> >> +++ b/drivers/spi/mxs_spi.c
> >> @@ -129,9 +129,15 @@ int spi_xfer(struct spi_slave *slave, unsigned int
> >> bitlen, int len = bitlen / 8;
> >> const char *tx = dout;
> >> char *rx = din;
> >> -
> >> - if (bitlen == 0)
> >> - return 0;
> >> + char dummy;
> >> +
> >> + if (bitlen == 0) {
> >> + if (flags & SPI_XFER_END) {
> >> + rx = &dummy;
> >> + len = 1;
> >> + } else
> >> + return 0;
> >> + }
> >>
> >> if (!rx && !tx)
> >> return 0;
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > http://lists.denx.de/mailman/listinfo/u-boot
>
>
> --
> -------------------------------------------------------------------------
> Dipl.-Ing. Matthias Fuchs
> Head of System Design
>
> esd electronic system design gmbh
> Vahrenwalder Str. 207 - 30165 Hannover - GERMANY
> Phone: +49-511-37298-0 - Fax: +49-511-37298-68
> Please visit our homepage http://www.esd.eu
> Quality Products - Made in Germany
> -------------------------------------------------------------------------
> Gesch?ftsf?hrer: Klaus Detering
> Amtsgericht Hannover HRB 51373 - VAT-ID DE 115672832
> -------------------------------------------------------------------------
next prev parent reply other threads:[~2012-01-16 23:33 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-14 12:25 [U-Boot] [PATCH] mx28: fix i.MX28 spi driver Matthias Fuchs
2012-01-14 14:10 ` Marek Vasut
2012-01-14 18:37 ` Matthias Fuchs
2012-01-16 23:33 ` Alexander Keller [this message]
2012-01-17 19:34 ` Fabio Estevam
2012-01-14 18:46 ` Fabio Estevam
2012-01-14 18:53 ` Fabio Estevam
2012-01-14 18:54 ` Fabio Estevam
2012-01-14 20:09 ` Matthias Fuchs
2012-01-14 20:14 ` Fabio Estevam
2012-01-15 12:10 ` Matthias Fuchs
2012-01-15 15:28 ` Fabio Estevam
2012-01-15 18:36 ` Matthias Fuchs
2012-01-23 19:52 ` Fabio Estevam
2012-01-23 19:53 ` Marek Vasut
2012-01-24 8:40 ` Stefano Babic
2012-01-28 22:08 ` Fabio Estevam
2012-01-29 9:12 ` Stefano Babic
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=20120116233308.209350@gmx.net \
--to=alexander.keller.85@gmx.de \
--cc=u-boot@lists.denx.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 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.