[U-Boot] [PATCH 3/7] eSPI: add eSPI controller support

Mike Frysinger vapier at gentoo.org
Mon Mar 16 11:05:46 CET 2009


On Monday 16 March 2009 04:56:22 Hu Mingkai-B21284 wrote:
> From: Mike Frysinger [mailto:vapier at gentoo.org]
> > On Monday 16 March 2009 02:15:27 Jean-Christophe wrote:
> > > On 10:52 Mon 16 Mar     , Mingkai Hu wrote:
> > > > Add eSPI controller support under the SPI framework.
> > > >
> > > > Signed-off-by: Mingkai Hu <Mingkai.hu at freescale.com>
> > > > ---
> > > >  drivers/mtd/spi/spi_flash.c |   94 +++++++++++++++++-
> > > >  drivers/spi/Makefile        |    1 +
> > > >  drivers/spi/fsl_espi.c      |  232
> > > > +++++++++++++++++++++++++++++++++++++++++++ include/spi.h
> > > >
> > > >   30 ++++++
> > > >  4 files changed, 354 insertions(+), 3 deletions(-)  create mode
> > > > 100644 drivers/spi/fsl_espi.c
> > >
> > > please use the spi framework, their is no need to touch the spi_flash
> > > support ti add and use the fsl_espi
> >
> > indeed ... i was so happy to see the spansion driver i
> > glossed over this ...
> > those spi_flash.c changes are almost assuredly wrong and
> > indicate you arent fitting into the framework correctly.
>
> There is difference between the SPI and eSPI chip select signal.
> Generally, the SPI chip select is controlled by GPIO, so SW can control
> when to assert the chip select signal and when to stop the chip select
> signal.

that is incorrect.  the SPI framework does not care how the controller manages 
the CS.  the Blackfin SPI controller for example has dedicated CS's which the 
controller manages automatically.

> But the eSPI controller integrate the chip select into the controller
> itself, it use the transfer length to control the duration of the chip
> select signal.

so you must tell the controller ahead of time how many bytes are going to be 
transferred ?  this sounds like a retarded hardware implementation to me.  how 
exactly do you support arbitrary transfer lengths ?

> The spi_flash_cmd_* function split the transfer into two steps: first
> the command transfer and then the data transfer. At the first step, the
> transfer length is set to the command length, and when transferred the
> command, the chip select will be negated, so the eSPI controller thinks the
> transfer is cancelled and doesn't transfer the data again.

the transfer state is passed in via the flags parameter.  this way the SPI 
controller knows when a transfer starts (SPI_XFER_BEGIN) and when it ends 
(SPI_XFER_END).
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090316/bf0c2261/attachment-0001.pgp 


More information about the U-Boot mailing list