From: Sourav Poddar <sourav.poddar@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCHv2 5/8] drivers: mtd: spi: Modify read/write command for sfl256s flash.
Date: Mon, 7 Oct 2013 17:58:05 +0530 [thread overview]
Message-ID: <5252A8D5.90905@ti.com> (raw)
In-Reply-To: <CAD6G_RQLk5mynuQ4Mm7eekQvDe6w8uMy20Bk64LwKHhx=nBTfg@mail.gmail.com>
On Monday 07 October 2013 05:51 PM, Jagan Teki wrote:
> On Wed, Aug 7, 2013 at 8:46 PM, Sourav Poddar<sourav.poddar@ti.com> wrote:
>> On Wednesday 07 August 2013 08:35 PM, Jagan Teki wrote:
>>> On Wed, Aug 7, 2013 at 5:34 PM, Sourav Poddar<sourav.poddar@ti.com>
>>> wrote:
>>>> Hi Jagan,
>>>>
>>>> On Wednesday 07 August 2013 05:21 PM, Jagan Teki wrote:
>>>>> Hi,
>>>>>
>>>>> On Wed, Aug 7, 2013 at 11:27 AM, Sourav Poddar<sourav.poddar@ti.com>
>>>>> wrote:
>>>>>> Hi Jagan,
>>>>>>
>>>>>> On Wednesday 31 July 2013 12:23 PM, Sourav Poddar wrote:
>>>>>>> Hi Jagan,
>>>>>>> On Tuesday 23 July 2013 07:53 PM, Sourav Poddar wrote:
>>>>>>>> + jagan,
>>>>>>>>
>>>>>>>> On Tuesday 23 July 2013 02:29 PM, Sourav Poddar wrote:
>>>>>>>>> Reading using the already supported read command is causing
>>>>>>>>> regression
>>>>>>>>> after 4k bytes, as a result doing a page by page read. Its
>>>>>>>>> happening,
>>>>>>>>> because
>>>>>>>>> ti qpsi controller CS will get de asserted after 4096 bytes.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Sourav Poddar<sourav.poddar@ti.com>
>>>>>>>>> ---
>>>>>>>>> drivers/mtd/spi/spi_flash.c | 32
>>>>>>>>> +++++++++++++++++++++++++++++++-
>>>>>>>>> 1 files changed, 31 insertions(+), 1 deletions(-)
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/mtd/spi/spi_flash.c
>>>>>>>>> b/drivers/mtd/spi/spi_flash.c
>>>>>>>>> index 6a6fe37..5f8db7b 100644
>>>>>>>>> --- a/drivers/mtd/spi/spi_flash.c
>>>>>>>>> +++ b/drivers/mtd/spi/spi_flash.c
>>>>>>>>> @@ -303,6 +303,36 @@ int spi_flash_cmd_read_fast(struct spi_flash
>>>>>>>>> *flash, u32 offset,
>>>>>>>>> else
>>>>>>>>> read_len = remain_len;
>>>>>>>>>
>>>>>>>>> +#ifdef CONFIG_TI_QSPI
>>>>>>>>> + unsigned long page_addr, byte_addr, page_size;
>>>>>>>>> + size_t chunk_len, actual;
>>>>>>>>> + int ret = 0;
>>>>>>>>> +
>>>>>>>>> + page_size = flash->page_size;
>>>>>>>>> + page_addr = offset / page_size;
>>>>>>>>> + byte_addr = offset % page_size;
>>>>>>>>> +
>>>>>>>>> + for (actual = 0; actual< read_len; actual += chunk_len)
>>>>>>>>> {
>>>>>>>>> + chunk_len = min(read_len - actual, page_size -
>>>>>>>>> byte_addr);
>>>>>>>>> +
>>>>>>>>> + cmd[1] = page_addr>> 8;
>>>>>>>>> + cmd[2] = page_addr;
>>>>>>>>> + cmd[3] = byte_addr;
>>>>>>>>> +
>>>>>>>>> + ret = spi_flash_read_common(flash, cmd, sizeof(cmd),
>>>>>>>>> + data + actual, chunk_len);
>>>>>>>>> + if (ret< 0) {
>>>>>>>>> + debug("SF: read failed");
>>>>>>>>> + break;
>>>>>>>>> + }
>>>>>>>>> +
>>>>>>>>> + byte_addr += chunk_len;
>>>>>>>>> + if (byte_addr == page_size) {
>>>>>>>>> + page_addr++;
>>>>>>>>> + byte_addr = 0;
>>>>>>>>> + }
>>>>>>>>> + }
>>>>>>>>> +#else
>>>>>>>>> spi_flash_addr(offset, cmd);
>>>>>>>>>
>>>>>>>>> ret = spi_flash_read_common(flash, cmd, sizeof(cmd),
>>>>>>>>> @@ -311,7 +341,7 @@ int spi_flash_cmd_read_fast(struct spi_flash
>>>>>>>>> *flash,
>>>>>>>>> u32 offset,
>>>>>>>>> debug("SF: read failed\n");
>>>>>>>>> break;
>>>>>>>>> }
>>>>>>>>> -
>>>>>>>>> +#endif
>>>>>>>>> offset += read_len;
>>>>>>>>> len -= read_len;
>>>>>>>>> data += read_len;
>>>>>>>> Elaborating a bit more on this,
>>>>>>>> There is a constrain on our hardware, which goes like this..
>>>>>>>>
>>>>>>>> As soon as the words transfered is 4096 bytes, the CS gets deasserted
>>>>>>>> automatically.
>>>>>>>> As a result of this bottleneck, I am not able to use the current use
>>>>>>>> read
>>>>>>>> api in mtd framework.
>>>>>>>> This requires me to send the read command every time in range upto
>>>>>>>> 4096
>>>>>>>> bytes only.
>>>>>>>>
>>>>>>>> To overcome this, I have updated the mtd read based on TI_QSPI config
>>>>>>>> as
>>>>>>>> done above.
>>>>>>>>
>>>>>>>> [Jagan]:
>>>>>>>> Do you have any suggestion of dealing this in a better way?
>>>>>>>> I don't see a way to get around this apart from updating mtd read
>>>>>>>> depending on TI_QSPI config.
>>>>>>>>
>>>>>>> Any inputs on this?
>>>>>>>
>>>>>> Any suggestions on the patch?
>>>>>>
>>>>>> _______________________________________________
>>>>>> U-Boot mailing list
>>>>>> U-Boot at lists.denx.de
>>>>>> http://lists.denx.de/mailman/listinfo/u-boot
>>>>> Yes, this part is pretty much working as with other s25fl.
>>>>> Can you point me the respective controller driver for this.
>>>>>
>>>> Thanks for the response.
>>>>
>>>> This is the link to uboot patches which I submitted to uboot mailing
>>>> list.
>>>>
>>>> http://patchwork.ozlabs.org/patch/260989/
>>>> http://patchwork.ozlabs.org/patch/260990/
>>>> http://patchwork.ozlabs.org/patch/260991/
>>>> http://patchwork.ozlabs.org/patch/260992/
>>>> http://patchwork.ozlabs.org/patch/260994/
>>>> http://patchwork.ozlabs.org/patch/260993/
>>>> http://patchwork.ozlabs.org/patch/260996/
>>>> http://patchwork.ozlabs.org/patch/260995/
>>>>
>>>> Above are the links to uboot patches containing all def configs and uboot
>>>> ti
>>>> qspi driver.
>>>>
>>>> As communicated earlier, there is a limitation in our qspi controller
>>>> driver, wherein after every
>>>> 4096 bytes CS gets de asserted. So, I had to modify the above read
>>>> framework
>>>> to do a page read.
>>>> Need better way to handle this limitation, so that the above patch series
>>>> can get upstreamed.
>>>>
>>>>> Does linux support this ti_qspi, please point the defconfig if you have.
>>>>>
>>>> Patches for linux is under review and still not mainlined.
>>>> https://patchwork.kernel.org/patch/2838342/
>>> Thanks, please give me some time I will look at these and let u know
>>> early next week.
>>>
>> Thanks!!
> You still see this issue.
>
Please ignore this mail thread. This was due to some ip limitation.
next prev parent reply other threads:[~2013-10-07 12:28 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-23 8:59 [U-Boot] [PATCHv2 0/8] qspi controller: Normal, quad and memory mapped read support Sourav Poddar
2013-07-23 8:59 ` [U-Boot] [PATCHv2 1/8] omap5: add qspi support Sourav Poddar
2013-07-23 8:59 ` [U-Boot] [PATCHv2 2/8] armv7: hw_data: change clock divider setting Sourav Poddar
2013-07-23 8:59 ` [U-Boot] [PATCHv2 3/8] spi: add TI QSPI driver Sourav Poddar
2013-07-23 9:23 ` Wolfgang Denk
2013-07-23 9:33 ` Sourav Poddar
2013-07-23 8:59 ` [U-Boot] [PATCHv2 4/8] dra7xx_evm: add SPL API, QSPI, and serial flash support Sourav Poddar
2013-07-23 8:59 ` [U-Boot] [PATCHv2 5/8] drivers: mtd: spi: Modify read/write command for sfl256s flash Sourav Poddar
2013-07-23 14:23 ` Sourav Poddar
2013-07-23 14:30 ` Felipe Balbi
2013-07-23 14:53 ` Sourav Poddar
2013-07-31 6:53 ` Sourav Poddar
2013-08-07 5:57 ` Sourav Poddar
2013-08-07 11:51 ` Jagan Teki
2013-08-07 12:04 ` Sourav Poddar
2013-08-07 15:05 ` Jagan Teki
2013-08-07 15:16 ` Sourav Poddar
2013-10-07 12:21 ` Jagan Teki
2013-10-07 12:28 ` Sourav Poddar [this message]
2013-10-07 12:29 ` Jagan Teki
2013-10-07 12:30 ` Sourav Poddar
2013-07-23 8:59 ` [U-Boot] [PATCHv2 6/8] drivers: mtd: qspi: Add quad read support Sourav Poddar
2013-07-23 9:28 ` Wolfgang Denk
2013-07-23 8:59 ` [U-Boot] [PATCHv2 7/8] driver: spi: Add memory mapped " Sourav Poddar
2013-07-23 9:29 ` Wolfgang Denk
2013-07-23 9:34 ` Sourav Poddar
2013-07-23 8:59 ` [U-Boot] [PATCHv2 8/8] README: qspi usecase and testing documentation Sourav Poddar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5252A8D5.90905@ti.com \
--to=sourav.poddar@ti.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox