dm: spi: Read default speed and mode values from DT
PATCH v3 1/1 dm: spi: Read default speed and mode values from DT
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.
---
v3: Update commit message to mention SPI mode changes
v2: Initialize speed, mode to 0 instead of -1
cmd/sf.c | 2 ++ drivers/spi/spi-uclass.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-)
cmd/sf.c +2 -0
@@ -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
drivers/spi/spi-uclass.c +6 -2
@@ -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;
Signature · 1 line
2.8.1
PATCH v3 1/1 dm: spi: Read default speed and mode values from DT
Quoted 8 lines · Vignesh R
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 <[email protected]>---
Quoted 7 lines
v3: Update commit message to mention SPI mode changes
v2: Initialize speed, mode to 0 instead of -1
cmd/sf.c | 2 ++ drivers/spi/spi-uclass.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-)
PATCH v3 1/1 dm: spi: Read default speed and mode values from DT
In reply to Vignesh RQuoted 6 lines · Vignesh R
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 <[email protected]>
Regards
Mugunthan V N
PATCH v3 1/1 dm: spi: Read default speed and mode values from DT
In reply to Vignesh RQuoted 5 lines · Vignesh R
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.
Quoted 8 lines
Signed-off-by Vignesh R <[email protected]>---
v3: Update commit message to mention SPI mode changes
v2: Initialize speed, mode to 0 instead of -1
cmd/sf.c | 2 ++
I think env_sf.c also need to update, pls- do change that as well.
Signature · 1 line
Jagan.
PATCH v3 1/1 dm: spi: Read default speed and mode values from DT
Quoted 9 lines · Jagan Teki
Quoted 8 lines · Vignesh R
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 <[email protected]>---
Quoted 7 lines
Quoted 5 lines
v3: Update commit message to mention SPI mode changes
v2: Initialize speed, mode to 0 instead of -1
cmd/sf.c | 2 ++I think
env_sf.calso need to update, pls- do change that as well.
Ok, will post a v4
Signature · 2 lines
Regards Vignesh