Author: mkarcher
Date: Tue Mar  6 23:17:06 2012
New Revision: 1513
URL: http://flashrom.org/trac/flashrom/changeset/1513

Log:
Prevent submission of empty read requests in linux_spi.

The submission of zero-sized read requests in a write-only transaction
fails at least for omap2_mcspi drivers and is pointless in general.

This patch does not address the implementation of zero-sized writes (which
would need to skip the write command), as there are no flash transactions
not starting with a command.

Signed-off-by: Michael Karcher <[email protected]>
Acked-by: Stefan Tauner <[email protected]>

Modified:
   trunk/linux_spi.c

Modified: trunk/linux_spi.c
==============================================================================
--- trunk/linux_spi.c   Sat Mar  3 19:09:33 2012        (r1512)
+++ trunk/linux_spi.c   Tue Mar  6 23:17:06 2012        (r1513)
@@ -130,6 +130,7 @@
                                  const unsigned char *txbuf,
                                  unsigned char *rxbuf)
 {
+       int iocontrol_code;
        struct spi_ioc_transfer msg[2] = {
                {
                        .tx_buf = (uint64_t)(ptrdiff_t)txbuf,
@@ -143,8 +144,19 @@
 
        if (fd == -1)
                return -1;
+       /* The implementation currently does not support requests that
+          don't start with sending a command. */
+       if (writecnt == 0)
+               return SPI_INVALID_LENGTH;
 
-       if (ioctl(fd, SPI_IOC_MESSAGE(2), msg) == -1) {
+       /* Just submit the first (write) request in case there is nothing
+          to read. Otherwise submit both requests. */
+       if (readcnt == 0)
+               iocontrol_code = SPI_IOC_MESSAGE(1);
+       else
+               iocontrol_code = SPI_IOC_MESSAGE(2);
+
+       if (ioctl(fd, iocontrol_code, msg) == -1) {
                msg_cerr("%s: ioctl: %s\n", __func__, strerror(errno));
                return -1;
        }

_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to