public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v4] dm: spi: Read default speed and mode values from DT
@ 2016-05-10  6:28 Vignesh R
  2016-06-08  4:47 ` Vignesh R
  0 siblings, 1 reply; 4+ messages in thread
From: Vignesh R @ 2016-05-10  6:28 UTC (permalink / raw)
  To: u-boot

In case of DT boot, don't read default speed and mode for SPI from
CONFIG_*, instead read from DT node. This will make sure that boards
with multiple SPI/QSPI controllers can be probed at different
bus frequencies and SPI modes.

Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Mugunthan V N <mugunthanvnm@ti.com>

---

v4: Update env_sf.c as well

v3: Update commit message to mention SPI mode changes

v2: Initialize speed, mode to 0 instead of -1

 cmd/sf.c                 | 2 ++
 common/env_sf.c          | 8 ++++----
 drivers/spi/spi-uclass.c | 8 ++++++--
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/cmd/sf.c b/cmd/sf.c
index 42862d9d921a..286906c3a151 100644
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -88,6 +88,8 @@ static int do_spi_flash_probe(int argc, char * const argv[])
 #ifdef CONFIG_DM_SPI_FLASH
 	struct udevice *new, *bus_dev;
 	int ret;
+	/* In DM mode defaults will be taken from DT */
+	speed = 0, mode = 0;
 #else
 	struct spi_flash *new;
 #endif
diff --git a/common/env_sf.c b/common/env_sf.c
index 273098ceb605..c53200f5c6fe 100644
--- a/common/env_sf.c
+++ b/common/env_sf.c
@@ -55,9 +55,9 @@ int saveenv(void)
 #ifdef CONFIG_DM_SPI_FLASH
 	struct udevice *new;
 
+	/* speed and mode will be read from DT */
 	ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
-				     CONFIG_ENV_SPI_MAX_HZ,
-				     CONFIG_ENV_SPI_MODE, &new);
+				     0, 0, &new);
 	if (ret) {
 		set_default_env("!spi_flash_probe_bus_cs() failed");
 		return 1;
@@ -245,9 +245,9 @@ int saveenv(void)
 #ifdef CONFIG_DM_SPI_FLASH
 	struct udevice *new;
 
+	/* speed and mode will be read from DT */
 	ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
-				     CONFIG_ENV_SPI_MAX_HZ,
-				     CONFIG_ENV_SPI_MODE, &new);
+				     0, 0, &new);
 	if (ret) {
 		set_default_env("!spi_flash_probe_bus_cs() failed");
 		return 1;
diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
index 5561f36762f9..5fb5630e2981 100644
--- a/drivers/spi/spi-uclass.c
+++ b/drivers/spi/spi-uclass.c
@@ -264,6 +264,7 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode,
 		       struct udevice **busp, struct spi_slave **devp)
 {
 	struct udevice *bus, *dev;
+	struct dm_spi_slave_platdata *plat;
 	bool created = false;
 	int ret;
 
@@ -280,8 +281,6 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode,
 	 * SPI flash chip - we will bind to the correct driver.
 	 */
 	if (ret == -ENODEV && drv_name) {
-		struct dm_spi_slave_platdata *plat;
-
 		debug("%s: Binding new device '%s', busnum=%d, cs=%d, driver=%s\n",
 		      __func__, dev_name, busnum, cs, drv_name);
 		ret = device_bind_driver(bus, drv_name, dev_name, &dev);
@@ -308,6 +307,11 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode,
 		slave->dev = dev;
 	}
 
+	plat = dev_get_parent_platdata(dev);
+	if (!speed) {
+		speed = plat->max_hz;
+		mode = plat->mode;
+	}
 	ret = spi_set_speed_mode(bus, speed, mode);
 	if (ret)
 		goto err;
-- 
2.8.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v4 0/1] Read default speed and mode values from DT
@ 2019-02-27 14:36 Patrick Delaunay
  2019-02-27 14:36 ` [U-Boot] [PATCH v4] dm: spi: " Patrick Delaunay
  0 siblings, 1 reply; 4+ messages in thread
From: Patrick Delaunay @ 2019-02-27 14:36 UTC (permalink / raw)
  To: u-boot


This patch-set finish the previous serie:
http://patchwork.ozlabs.org/project/uboot/list/?series=76834

and also replace the serie:
"Remove defines for SPI default speed and mode "
http://patchwork.ozlabs.org/project/uboot/list/?series=80769&state=*

This new version is a complete rework after several remarks
and regression for these 2 patchset, mainly when SPI node
configuration is not in DT, when platdata is used.

I take some time to check the code and this proposal is a rework
of commit 96907c0fe50a ("dm: spi: Read default speed and mode values from DT")

This patch avoid spi_get_bus_and_cs() callers to force value of
parameter speed to 0 for some board (without DT node)
and regression for other board (as i was the case in my previous
Series V2).

I see this kind of problem in file env/sf.c with first commit
96907c0fe50a ("dm: spi: Read default speed and mode values from DT")
and come-back to the previous behavior with CONFIG_ in the commit
25a17652c9c2 ("fix: env: Fix the SPI flash device setup for DM mode")

So I decide to don't remove the defines used for default value
of speed and mode but they are no more used when platdata
is available.

That avoid regression when spi_get_bus_and_cs is directly called.

NB: I don't sure that the behavior of 'compatibility' function
    spi_setup_slave() will be still is still the correct on
    (in some case speed and mode will parameter will be not used).

Tested on my board only for the boot from SPI NOR
so when spl_spi_load_image() is called in SPL.


Changes in v4:
    - rebase on v2019.04-rc2
    - after Jagan review depends on Migrate SPI defines to Kconfig
      http://patchwork.ozlabs.org/project/uboot/list/?series=94485
    - remove no more supported configuration:
      CONFIG_ENV_SPI_MAX_HZ=0 or CONFIG_ENV_SPI_MODE=0

Changes in v3:
    - complete rework of the patch-set to avoid regression

Changes in v2:
    - use variables to avoid duplicated code

Patrick Delaunay (1):
  dm: spi: Read default speed and mode values from DT

 cmd/sf.c                          | 3 +--
 common/spl/spl_spi.c              | 2 ++
 configs/da850_am18xxevm_defconfig | 4 ----
 configs/da850evm_defconfig        | 4 ----
 configs/mscc_jr2_defconfig        | 4 ----
 configs/mscc_luton_defconfig      | 4 ----
 configs/mscc_ocelot_defconfig     | 4 ----
 configs/mscc_serval_defconfig     | 4 ----
 configs/mscc_servalt_defconfig    | 4 ----
 drivers/mtd/spi/Kconfig           | 6 ++++++
 drivers/spi/spi-uclass.c          | 4 +++-
 include/spi.h                     | 9 +++++----
 12 files changed, 17 insertions(+), 35 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-04-12  6:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-10  6:28 [U-Boot] [PATCH v4] dm: spi: Read default speed and mode values from DT Vignesh R
2016-06-08  4:47 ` Vignesh R
  -- strict thread matches above, loose matches on Subject: below --
2019-02-27 14:36 [U-Boot] [PATCH v4 0/1] " Patrick Delaunay
2019-02-27 14:36 ` [U-Boot] [PATCH v4] dm: spi: " Patrick Delaunay
2019-04-12  6:26   ` Jagan Teki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox