mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 07:04:28 +00:00
dm: spi: Read default speed and mode values from DT
This patch update the behavior introduced by
commit 96907c0fe5
("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_* but 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.
Remove also use in boards of the value speed=0 (no more supported)
for ENV in SPI by using CONFIG_ENV_SPI_MAX_HZ=0.
DT values will be always used when available (full DM support of
SPI slave with available DT node) even if speed and mode are requested;
for example in splash screen support (in splash_sf_read_raw)
or in SPL boot (in spl_spi_load_image).
The caller of spi_get_bus_and_cs() no more need to force speed=0.
But the current behavior don't change if the SPI slave is not
present (device with generic driver is created automatically)
or if platdata is used (CONFIG_OF_PLATDATA).
Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Acked-by: Jagan Teki <jagan@amarulasolutions.com>
This commit is contained in:
parent
f909ddb3e1
commit
b0cc1b846f
12 changed files with 17 additions and 35 deletions
3
cmd/sf.c
3
cmd/sf.c
|
@ -81,14 +81,13 @@ static int do_spi_flash_probe(int argc, char * const argv[])
|
|||
{
|
||||
unsigned int bus = CONFIG_SF_DEFAULT_BUS;
|
||||
unsigned int cs = CONFIG_SF_DEFAULT_CS;
|
||||
/* In DM mode, defaults speed and mode will be taken from DT */
|
||||
unsigned int speed = CONFIG_SF_DEFAULT_SPEED;
|
||||
unsigned int mode = CONFIG_SF_DEFAULT_MODE;
|
||||
char *endp;
|
||||
#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
|
||||
|
|
|
@ -77,6 +77,8 @@ static int spl_spi_load_image(struct spl_image_info *spl_image,
|
|||
|
||||
/*
|
||||
* Load U-Boot image from SPI flash into RAM
|
||||
* In DM mode: defaults speed and mode will be
|
||||
* taken from DT when available
|
||||
*/
|
||||
|
||||
flash = spi_flash_probe(CONFIG_SF_DEFAULT_BUS,
|
||||
|
|
|
@ -39,10 +39,6 @@ CONFIG_SPL_OF_CONTROL=y
|
|||
CONFIG_DEFAULT_DEVICE_TREE="da850-evm"
|
||||
CONFIG_SPL_OF_PLATDATA=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_USE_ENV_SPI_MAX_HZ=y
|
||||
CONFIG_ENV_SPI_MAX_HZ=0
|
||||
CONFIG_USE_ENV_SPI_MODE=y
|
||||
CONFIG_ENV_SPI_MODE=0
|
||||
CONFIG_DM=y
|
||||
CONFIG_SPL_DM=y
|
||||
CONFIG_DA8XX_GPIO=y
|
||||
|
|
|
@ -41,10 +41,6 @@ CONFIG_SPL_OF_CONTROL=y
|
|||
CONFIG_DEFAULT_DEVICE_TREE="da850-evm"
|
||||
CONFIG_SPL_OF_PLATDATA=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_USE_ENV_SPI_MAX_HZ=y
|
||||
CONFIG_ENV_SPI_MAX_HZ=0
|
||||
CONFIG_USE_ENV_SPI_MODE=y
|
||||
CONFIG_ENV_SPI_MODE=0
|
||||
CONFIG_DM=y
|
||||
CONFIG_SPL_DM=y
|
||||
CONFIG_DM_GPIO=y
|
||||
|
|
|
@ -38,10 +38,6 @@ CONFIG_OF_LIST="jr2_pcb110 jr2_pcb111 serval2_pcb112"
|
|||
CONFIG_DTB_RESELECT=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_USE_ENV_SPI_MAX_HZ=y
|
||||
CONFIG_ENV_SPI_MAX_HZ=0
|
||||
CONFIG_USE_ENV_SPI_MODE=y
|
||||
CONFIG_ENV_SPI_MODE=0
|
||||
CONFIG_NET_RANDOM_ETHADDR=y
|
||||
CONFIG_CLK=y
|
||||
CONFIG_DM_GPIO=y
|
||||
|
|
|
@ -44,10 +44,6 @@ CONFIG_OF_LIST="luton_pcb090 luton_pcb091"
|
|||
CONFIG_DTB_RESELECT=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_USE_ENV_SPI_MAX_HZ=y
|
||||
CONFIG_ENV_SPI_MAX_HZ=0
|
||||
CONFIG_USE_ENV_SPI_MODE=y
|
||||
CONFIG_ENV_SPI_MODE=0
|
||||
CONFIG_NET_RANDOM_ETHADDR=y
|
||||
CONFIG_CLK=y
|
||||
CONFIG_DM_GPIO=y
|
||||
|
|
|
@ -43,10 +43,6 @@ CONFIG_OF_LIST="ocelot_pcb120 ocelot_pcb123"
|
|||
CONFIG_DTB_RESELECT=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_USE_ENV_SPI_MAX_HZ=y
|
||||
CONFIG_ENV_SPI_MAX_HZ=0
|
||||
CONFIG_USE_ENV_SPI_MODE=y
|
||||
CONFIG_ENV_SPI_MODE=0
|
||||
CONFIG_NET_RANDOM_ETHADDR=y
|
||||
CONFIG_CLK=y
|
||||
CONFIG_DM_GPIO=y
|
||||
|
|
|
@ -35,10 +35,6 @@ CONFIG_OF_LIST="serval_pcb106 serval_pcb105"
|
|||
CONFIG_DTB_RESELECT=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_USE_ENV_SPI_MAX_HZ=y
|
||||
CONFIG_ENV_SPI_MAX_HZ=0
|
||||
CONFIG_USE_ENV_SPI_MODE=y
|
||||
CONFIG_ENV_SPI_MODE=0
|
||||
CONFIG_NET_RANDOM_ETHADDR=y
|
||||
CONFIG_CLK=y
|
||||
CONFIG_DM_GPIO=y
|
||||
|
|
|
@ -33,10 +33,6 @@ CONFIG_DEFAULT_DEVICE_TREE="servalt_pcb116"
|
|||
CONFIG_DTB_RESELECT=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_USE_ENV_SPI_MAX_HZ=y
|
||||
CONFIG_ENV_SPI_MAX_HZ=0
|
||||
CONFIG_USE_ENV_SPI_MODE=y
|
||||
CONFIG_ENV_SPI_MODE=0
|
||||
CONFIG_NET_RANDOM_ETHADDR=y
|
||||
CONFIG_CLK=y
|
||||
CONFIG_DM_GPIO=y
|
||||
|
|
|
@ -62,6 +62,9 @@ config SF_DEFAULT_MODE
|
|||
The default mode may be provided by the platform
|
||||
to handle the common case when only a single serial
|
||||
flash is present on the system.
|
||||
Not used for boot with device tree; the SPI driver reads
|
||||
speed and mode from platdata values computed from
|
||||
available node.
|
||||
|
||||
config SF_DEFAULT_SPEED
|
||||
int "SPI Flash default speed in Hz"
|
||||
|
@ -71,6 +74,9 @@ config SF_DEFAULT_SPEED
|
|||
The default speed may be provided by the platform
|
||||
to handle the common case when only a single serial
|
||||
flash is present on the system.
|
||||
Not used for boot with device tree; the SPI driver reads
|
||||
speed and mode from platdata values computed from
|
||||
available node.
|
||||
|
||||
if SPI_FLASH
|
||||
|
||||
|
|
|
@ -328,7 +328,9 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode,
|
|||
}
|
||||
|
||||
plat = dev_get_parent_platdata(dev);
|
||||
if (!speed) {
|
||||
|
||||
/* get speed and mode from platdata when available */
|
||||
if (plat->max_hz) {
|
||||
speed = plat->max_hz;
|
||||
mode = plat->mode;
|
||||
}
|
||||
|
|
|
@ -496,14 +496,15 @@ int spi_find_bus_and_cs(int busnum, int cs, struct udevice **busp,
|
|||
* device and slave device.
|
||||
*
|
||||
* If no such slave exists, and drv_name is not NULL, then a new slave device
|
||||
* is automatically bound on this chip select.
|
||||
* is automatically bound on this chip select with requested speed and mode.
|
||||
*
|
||||
* Ths new slave device is probed ready for use with the given speed and mode.
|
||||
* Ths new slave device is probed ready for use with the speed and mode
|
||||
* from platdata when available or the requested values.
|
||||
*
|
||||
* @busnum: SPI bus number
|
||||
* @cs: Chip select to look for
|
||||
* @speed: SPI speed to use for this slave
|
||||
* @mode: SPI mode to use for this slave
|
||||
* @speed: SPI speed to use for this slave when not available in platdata
|
||||
* @mode: SPI mode to use for this slave when not available in platdata
|
||||
* @drv_name: Name of driver to attach to this chip select
|
||||
* @dev_name: Name of the new device thus created
|
||||
* @busp: Returns bus device
|
||||
|
|
Loading…
Reference in a new issue