public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
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.

  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