Hi Jagan

Could you have a look at this series ?
It would be great if this series can be merged in the v2022.07

Thanks

Patrice


On 3/30/22 09:33, Patrice Chotard wrote:
Since commit e2e95e5e2542 ("spi: Update speed/mode on change")
when calling "sf probe" or "env save" on SPI flash,
spi_set_speed_mode() is called twice.

spi_get_bus_and_cs()
       |--> spi_claim_bus()
       |       |--> spi_set_speed_mode(speed and mode from DT)
       ...
       |--> spi_set_speed_mode(default speed and mode value)

The first spi_set_speed_mode() call is done with speed and mode
values from DT, whereas the second call is done with speed
and mode set to default value (speed is set to CONFIG_SF_DEFAULT_SPEED)

This is an issue because SPI flash performance are impacted by
using default speed which can be lower than the one defined in DT.

One solution is to set CONFIG_SF_DEFAULT_SPEED to the speed defined
in DT, but we loose flexibility offered by DT.

Another issue can be encountered with 2 SPI flashes using 2 different
speeds. In this specific case usage of CONFIG_SF_DEFAULT_SPEED is not
flexible compared to get the 2 different speeds from DT.


Changes in v4:
   - Split previous series in 3 patches
   - Update commit message with additionnal information

Changes in v3:
   - Update commit header to reflect what the patch really do.
   - Rename legacy spi_get_bus_and_cs() to _spi_get_bus_and_cs().
   - New spi_get_bus_and_cs() rely on DT for spi speed and mode values.
   - spi_flash_probe_bus_cs() rely also on DT for spi and mode values.

Changes in v2:
   - add spi_flash_probe_bus_cs_default() which calls spi_get_bus_and_cs()
     with "use_dt" param set to true, whereas spi_flash_probe_bus_cs() calls
     spi_get_bus_and_cs() with "use_dt" param set to true.

Patrice Chotard (3):
   spi: spi-uclass: Add new spi_get_bus_and_cs() implementation
   spi: spi_flash_probe_bus_cs() rely on DT for spi speed and mode
   test: dm: spi: Replace _spi_get_bus_and_cs() by spi_get_bus_and_cs()
     in some case

  board/CZ.NIC/turris_mox/turris_mox.c |  6 +--
  cmd/sf.c                             | 15 +++++--
  cmd/spi.c                            |  4 +-
  drivers/mtd/spi/sf-uclass.c          | 33 +++++++-------
  drivers/net/fm/fm.c                  |  4 +-
  drivers/net/pfe_eth/pfe_firmware.c   | 19 ++------
  drivers/net/sni_netsec.c             |  6 +--
  drivers/spi/spi-uclass.c             | 66 +++++++++++++++++++++++++---
  drivers/usb/gadget/max3420_udc.c     |  4 +-
  env/sf.c                             |  1 -
  include/spi.h                        | 19 +++++++-
  include/spi_flash.h                  |  1 -
  test/dm/spi.c                        | 33 +++++++-------
  13 files changed, 137 insertions(+), 74 deletions(-)

Reply via email to