[U-Boot] [PATCH 3/4] spi: sf: Support byte program for sst spi flash
Jagan Teki
jagannadh.teki at gmail.com
Wed Dec 10 11:02:40 CET 2014
On 10 December 2014 at 13:40, Bin Meng <bmeng.cn at gmail.com> wrote:
> Hi Jagan,
>
> On Tue, Dec 9, 2014 at 11:29 PM, Jagannadha Sutradharudu Teki
> <jagannadh.teki at gmail.com> wrote:
>> From: Bin Meng <bmeng.cn at gmail.com>
>>
>> Currently if SST flash advertises SST_WP flag in the params table
>> the word program command (ADh) with auto address increment will be
>> used for the flash write op. However some SPI controllers do not
>> support the word program command (like the Intel ICH 7), the byte
>> programm command (02h) has to be used.
>>
>> A new TX operation mode SPI_OPM_TX_BP is introduced for such SPI
>> controller to use byte program op for SST flash.
>
> This paragraph should be removed from the commit message. The
> SPI_OPM_TX_BP was introduced in my original patch, but not in this new
> patch. You may need move this commit message to your patch#4 as
> SPI_OPM_TX_BP is moved to there.
Ok, Will update the same.
Please send the rest of the patches, will test my whole system again.
Do the same from your side too.
>
>> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
>> Acked-by: Simon Glass <sjg at chromium.org>
>> Tested-by: Simon Glass <sjg at chromium.org>
>> ---
>> drivers/mtd/spi/sf_internal.h | 2 ++
>> drivers/mtd/spi/sf_ops.c | 31 +++++++++++++++++++++++++++++++
>> 2 files changed, 33 insertions(+)
>>
>> diff --git a/drivers/mtd/spi/sf_internal.h b/drivers/mtd/spi/sf_internal.h
>> index 7218e69..fb53cb0 100644
>> --- a/drivers/mtd/spi/sf_internal.h
>> +++ b/drivers/mtd/spi/sf_internal.h
>> @@ -110,6 +110,8 @@ enum {
>>
>> int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
>> const void *buf);
>> +int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len,
>> + const void *buf);
>> #endif
>>
>> /**
>> diff --git a/drivers/mtd/spi/sf_ops.c b/drivers/mtd/spi/sf_ops.c
>> index 759231f..34bc54e 100644
>> --- a/drivers/mtd/spi/sf_ops.c
>> +++ b/drivers/mtd/spi/sf_ops.c
>> @@ -517,4 +517,35 @@ int sst_write_wp(struct spi_flash *flash, u32 offset, size_t len,
>> spi_release_bus(flash->spi);
>> return ret;
>> }
>> +
>> +int sst_write_bp(struct spi_flash *flash, u32 offset, size_t len,
>> + const void *buf)
>> +{
>> + size_t actual;
>> + int ret;
>> +
>> + ret = spi_claim_bus(flash->spi);
>> + if (ret) {
>> + debug("SF: Unable to claim SPI bus\n");
>> + return ret;
>> + }
>> +
>> + for (actual = 0; actual < len; actual++) {
>> + ret = sst_byte_write(flash, offset, buf + actual);
>> + if (ret) {
>> + debug("SF: sst byte program failed\n");
>> + break;
>> + }
>> + offset++;
>> + }
>> +
>> + if (!ret)
>> + ret = spi_flash_cmd_write_disable(flash);
>> +
>> + debug("SF: sst: program %s %zu bytes @ 0x%zx\n",
>> + ret ? "failure" : "success", len, offset - actual);
>> +
>> + spi_release_bus(flash->spi);
>> + return ret;
>> +}
>> #endif
>> --
>> 1.9.1
thanks!
--
Jagan.
More information about the U-Boot
mailing list