Skip to content
Snippets Groups Projects
Commit 28b62f0d authored by Tom Rini's avatar Tom Rini
Browse files

Merge branch 'master' of git://git.denx.de/u-boot-spi

parents 61e76f53 1f436a6d
No related branches found
No related tags found
No related merge requests found
...@@ -60,6 +60,7 @@ const struct spi_flash_params spi_flash_params_table[] = { ...@@ -60,6 +60,7 @@ const struct spi_flash_params spi_flash_params_table[] = {
{"S25FL256S_64K", 0x010219, 0x4d01, 64 * 1024, 512, RD_FULL, WR_QPP}, {"S25FL256S_64K", 0x010219, 0x4d01, 64 * 1024, 512, RD_FULL, WR_QPP},
{"S25FL512S_256K", 0x010220, 0x4d00, 256 * 1024, 256, RD_FULL, WR_QPP}, {"S25FL512S_256K", 0x010220, 0x4d00, 256 * 1024, 256, RD_FULL, WR_QPP},
{"S25FL512S_64K", 0x010220, 0x4d01, 64 * 1024, 1024, RD_FULL, WR_QPP}, {"S25FL512S_64K", 0x010220, 0x4d01, 64 * 1024, 1024, RD_FULL, WR_QPP},
{"S25FL512S_512K", 0x010220, 0x4f00, 256 * 1024, 256, RD_FULL, WR_QPP},
#endif #endif
#ifdef CONFIG_SPI_FLASH_STMICRO /* STMICRO */ #ifdef CONFIG_SPI_FLASH_STMICRO /* STMICRO */
{"M25P10", 0x202011, 0x0, 32 * 1024, 4, 0, 0}, {"M25P10", 0x202011, 0x0, 32 * 1024, 4, 0, 0},
......
...@@ -197,16 +197,6 @@ static struct spi_flash *spi_flash_validate_params(struct spi_slave *spi, ...@@ -197,16 +197,6 @@ static struct spi_flash *spi_flash_validate_params(struct spi_slave *spi,
/* Go for default supported write cmd */ /* Go for default supported write cmd */
flash->write_cmd = CMD_PAGE_PROGRAM; flash->write_cmd = CMD_PAGE_PROGRAM;
/* Set the quad enable bit - only for quad commands */
if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST) ||
(flash->read_cmd == CMD_READ_QUAD_IO_FAST) ||
(flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) {
if (spi_flash_set_qeb(flash, idcode[0])) {
debug("SF: Fail to set QEB for %02x\n", idcode[0]);
return NULL;
}
}
/* Read dummy_byte: dummy byte is determined based on the /* Read dummy_byte: dummy byte is determined based on the
* dummy cycles of a particular command. * dummy cycles of a particular command.
* Fast commands - dummy_byte = dummy_cycles/8 * Fast commands - dummy_byte = dummy_cycles/8
...@@ -327,6 +317,16 @@ static struct spi_flash *spi_flash_probe_slave(struct spi_slave *spi) ...@@ -327,6 +317,16 @@ static struct spi_flash *spi_flash_probe_slave(struct spi_slave *spi)
if (!flash) if (!flash)
goto err_read_id; goto err_read_id;
/* Set the quad enable bit - only for quad commands */
if ((flash->read_cmd == CMD_READ_QUAD_OUTPUT_FAST) ||
(flash->read_cmd == CMD_READ_QUAD_IO_FAST) ||
(flash->write_cmd == CMD_QUAD_PAGE_PROGRAM)) {
if (spi_flash_set_qeb(flash, idcode[0])) {
debug("SF: Fail to set QEB for %02x\n", idcode[0]);
return NULL;
}
}
#ifdef CONFIG_OF_CONTROL #ifdef CONFIG_OF_CONTROL
if (spi_flash_decode_fdt(gd->fdt_blob, flash)) { if (spi_flash_decode_fdt(gd->fdt_blob, flash)) {
debug("SF: FDT decode error\n"); debug("SF: FDT decode error\n");
......
...@@ -136,10 +136,14 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, ...@@ -136,10 +136,14 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
/* /*
* Check if it is time to work on a new byte. * Check if it is time to work on a new byte.
*/ */
if((j % 8) == 0) { if ((j % 8) == 0) {
tmpdout = *txd++; if (txd)
tmpdout = *txd++;
else
tmpdout = 0;
if(j != 0) { if(j != 0) {
*rxd++ = tmpdin; if (rxd)
*rxd++ = tmpdin;
} }
tmpdin = 0; tmpdin = 0;
} }
...@@ -164,9 +168,11 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, ...@@ -164,9 +168,11 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
* bits over to left-justify them. Then store the last byte * bits over to left-justify them. Then store the last byte
* read in. * read in.
*/ */
if((bitlen % 8) != 0) if (rxd) {
tmpdin <<= 8 - (bitlen % 8); if ((bitlen % 8) != 0)
*rxd++ = tmpdin; tmpdin <<= 8 - (bitlen % 8);
*rxd++ = tmpdin;
}
if (flags & SPI_XFER_END) if (flags & SPI_XFER_END)
spi_cs_deactivate(slave); spi_cs_deactivate(slave);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment