
16 Mar
2011
16 Mar
'11
5:05 a.m.
On Tuesday, March 15, 2011 22:53:20 Shaohui Xie wrote:
--- a/drivers/mtd/spi/spi_flash.c +++ b/drivers/mtd/spi/spi_flash.c @@ -1,6 +1,8 @@ /*
- SPI flash interface
- Add support for Freescale eSPI controller
this is not the place for changelogs
@@ -30,6 +32,7 @@ static int spi_flash_read_write(struct spi_slave *spi, unsigned long flags = SPI_XFER_BEGIN; int ret;
+#ifndef CONFIG_FSL_ESPI if (data_len == 0) flags |= SPI_XFER_END;
@@ -43,6 +46,48 @@ static int spi_flash_read_write(struct spi_slave *spi, debug("SF: Failed to transfer %zu bytes of data: %d\n", data_len, ret); } +#else
- struct espi_transfer transfer[1];
- unsigned char *buffer;
- size_t buf_len;
- if (data_in == NULL)
buf_len = cmd_len;
- else
buf_len = 2 * cmd_len;
- buffer = (unsigned char *)malloc(data_len + buf_len);
- if (!buffer) {
debug("SF: Failed to malloc memory.\n");
return 1;
- }
- memcpy(buffer, cmd, cmd_len);
- if (data_in == NULL)
memcpy(buffer + cmd_len, data_out, data_len);
- transfer[0].cmd_len = cmd_len;
- transfer[0].data_len = data_len;
- transfer[0].tx_buf = buffer;
- if (data_in == NULL)
transfer[0].rx_buf = NULL;
- else
transfer[0].rx_buf = buffer + cmd_len;
- transfer[0].flags = flags | SPI_XFER_END;
- spi->transfer = &transfer[0];
- ret = spi_xfer(spi, 0, NULL, NULL, 0);
- if (ret) {
debug("SF: Failed to send command %02x: %d\n", cmd, ret);
return ret;
- }
- if (data_in)
memcpy(data_in, transfer[0].rx_buf + cmd_len, data_len);
- free(buffer);
+#endif
return ret; }
yikes, this cant be right -mike