Hello Jagan,

Jagan Teki wrote onĀ 2013-09-25:

> Thanks for your comments, see below
> 
> On Wed, Sep 25, 2013 at 1:02 AM,  <thomas.lan...@lantiq.com> wrote:
>> Hello Jagan,
>> 
>> Am 24.09.2013 20:38, schrieb Jagannadha Sutradharudu Teki:
>>> This patch series is a combination of "sf: Add common probe support"
>>> "sf: Add support for extended/quad read and write commands"
>>> http://www.mail-archive.com/u-boot@lists.denx.de/msg121668.html
>>> http://u-boot.10912.n7.nabble.com/PATCH-v2-00-10-sf-Add-support-for-
>>> extended-quad-read-and-write-commands-td160964.html
>>> 
>>> This patch series adds common probe support for all flash vendors
>>> except ramtron.
>>> 
>>> spi_flash_probe is a new addition where all flash driver
>>> probing is combined into a common file, this means spi_flash_probe.c
>>> adds a new probing style common to all flashes.
>>> 
>>> 
>>> Apart from common probing, this series also adds support for
>>> extended read commands and quad read/write commands.
>>> 
>>> http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/150148
>>> http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/167026
>>> 
>>> There is a bit discussion going on for supporting this:
>>> http://u-boot.10912.n7.nabble.com/PATCH-00-12-cmd-sf-Add-support-
>>> for-read-and-write-instructions-td143749.html
>>> 
>>> Concept: Initially I tried to add individual sf write/read commands to
>>> respective flash read/write commands, but later some discussion to
>>> mainline about this and changed the implementation.
>>> 
>>> As Michal and me were trying to change this as like the
>>> "implementation will discover the fastest command by taking the
>>> supported commands from flash and a controller. Controller supported
>>> commands will always been a priority."
>>> 
>>> Means I have added rd_cmd and wr_cmd params on spi_flash_id_params
>>> table. So the flash user may fill these with flash supported commands,
>>> and also spi controller use is also have rd_cmd and wr_cmd from spi.h,
>>> so the spi user will fill these with controller supported commands.
>>> and the resultent command is calculated based fastest commands by
>>> taking inputs from spi and flash, but spi(controller) has always a
>>> priority.
>>> 
>>> Supported commands:
>>> - CMD_READ_ARRAY_SLOW
>>> - CMD_READ_ARRAY_FAST
>>> - CMD_READ_DUAL_OUTPUT_FAST
>>> - CMD_READ_DUAL_IO_FAST
>>> - CMD_READ_QUAD_OUTPUT_FAST
>>> - CMD_PAGE_PROGRAM
>>> - CMD_QUAD_PAGE_PROGRAM
>> I miss an important detail in this series, regarding dual/quad-io support:
>> How is the spi controller is informed about the transfer details?
>> I see only setting the cmds according the features of flash and controller,
>> but no additional indication to the spi controller, that this is then a
>> dual-
>> or quad-io transfer.How the spi controller should know about this???
> 
> This implementation will discover the fastest command by taking the
> supported commands from flash and a controller. Controller supported
> commands will always been a priority.
> 
> Means controller driver should have a code to support whether I am
> supporting this
> new extended read/write or quad command.
> 
> And this support will discover the fastest command by comparing the
> commands from flash and spi.
> flash anyway we added in params list and controller the respective
> controller will initialize spi slave in the driver itself .
> 
> qspi->slave.rd_cmd = READ_CMD_FULL;
> qspi->slave.wr_cmd = PAGE_PROGRAM | QUAD_PAGE_PROGRAM;
> 
> Please refer https://github.com/Xilinx/u-boot-xlnx/blob/master-
> next/drivers/spi/zynq_qspi.c

I had a look at this code.  And found exactly, what I expected:
A huge table with flash opcodes!
Why does a spi controller need to know these details?
Because of information about, which part of a message needs single/dual or quad
transfers?
If we would do it this way, each spi controller needs to implement similar 
things!

>From my point of view, this information should come from the serial flash 
>driver!
There you know details of manufacturer, supported opcodes and so on.
And there you can decide, if you switch a flash to a "full quad" mode,
that the same opcode now needs to be send on 4 lines!
In the controller driver you don't know these details!

> 
> spi_flash layer should send any commands based on the respective
> supported, but it is supported by respective spi controller that should
> controller driver must aware.
> 
> This is more generic solution as we discussed so-many months ago.
> http://u-boot.10912.n7.nabble.com/PATCH-00-12-cmd-sf-Add-support-for-
> read-and-write-instructions-td143749.html

Yes, I agree that this a huge step forward!
But I think, we still have not reached a state which everyone can accept.

> 
> We tried to discover the supported commands runtime from respective
> flashes, but ie. going to be a huge
> code to decode all these. Instead filling params, like sectors and
> idcodes should be an code driven task as per as
> u-boot code is concern.

As I already said, this is very specific to your controller!

> 
>> By decoding the cmd itself again? But the data should be a transparent byte
>> stream to the controller!
>> Otherwise you need a table of commands for decoding also inside the
>> controller
>> driver, which I consider a bad idea, as you need to update them (in each
>> driver)
>> for new cmds added to the serial-flash driver!
>> 
>> In the linux kernel, the solution in the spi layer was to add new
>> elements to
>> the transfer structure (struct spi_transfer -> bitwidth), which can be set
>> for each part of a message.
>> In u-boot we have the spi_xfer function, which has a "flags" parameter
>> we could
>> use for this.
>> 
>> As long as the details for this (including a spi controller driver,
>> which can handle dual/quad-io transfers) are not fixed, I would suggest
>> to leave the patches regarding the extended cmds out of the series of
>> sf-cleanup (which really looks good!) and fix the issues until the next
>> merge window!
> 
> I am planning to push this series, as we started this since long months back.
> We discussed many threads, and tested this approach on read hw as well.
> 
> Please let me know for any thoughts.

I already said: Please leave some room for more discussions on the extended / 
quad read topic!
And don't let the rest of the improvements be delayed by this!

> 
>> 
>>> Testing repo branch:
>>> -------------------
>>> $ git clone git://git.denx.de/u-boot-spi.git
>>> $ cd u-boot-spi
>>> $ git checkout -b master-next-test origin/master-next-test
>>> 
>>> REQUEST FOR ALL SPI CODE CONTRIBUTORS/USERS, PLEASE TEST THESE CHANGES
>>> W.R.T YOUR HW IF POSSIBLE.
>>> 
>>> Please let me know for any issues/concerns/questions.
>>> 
>>> --
>>> Thanks,
>>> Jagan.
>> Best Regards,
>> Thomas
>> 
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot@lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
>

Best Regards,
Thomas


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to