spi_flash: Add spi_flash_probe_fdt() to locate SPI by FDT node
This allows us to put the SPI flash chip inside the SPI interface node, with U-Boot finding the correct bus and chip select automatically. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -276,6 +276,7 @@
|
||||
#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0
|
||||
#define CONFIG_SF_DEFAULT_SPEED 50000000
|
||||
#define EXYNOS5_SPI_NUM_CONTROLLERS 5
|
||||
#define CONFIG_OF_SPI
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ENV_IS_IN_SPI_FLASH
|
||||
|
||||
@@ -259,13 +259,24 @@ static inline int spi_w8r8(struct spi_slave *slave, unsigned char byte)
|
||||
* spi_free_slave() to free it later.
|
||||
*
|
||||
* @param blob: Device tree blob
|
||||
* @param node: SPI peripheral node to use
|
||||
* @param cs: Chip select to use
|
||||
* @param max_hz: Maximum SCK rate in Hz (0 for default)
|
||||
* @param mode: Clock polarity, clock phase and other parameters
|
||||
* @param slave_node: Slave node to use
|
||||
* @param spi_node: SPI peripheral node to use
|
||||
* @return pointer to new spi_slave structure
|
||||
*/
|
||||
struct spi_slave *spi_setup_slave_fdt(const void *blob, int node,
|
||||
unsigned int cs, unsigned int max_hz, unsigned int mode);
|
||||
struct spi_slave *spi_setup_slave_fdt(const void *blob, int slave_node,
|
||||
int spi_node);
|
||||
|
||||
/**
|
||||
* spi_base_setup_slave_fdt() - helper function to set up a SPI slace
|
||||
*
|
||||
* This decodes SPI properties from the slave node to determine the
|
||||
* chip select and SPI parameters.
|
||||
*
|
||||
* @blob: Device tree blob
|
||||
* @busnum: Bus number to use
|
||||
* @node: Device tree node for the SPI bus
|
||||
*/
|
||||
struct spi_slave *spi_base_setup_slave_fdt(const void *blob, int busnum,
|
||||
int node);
|
||||
|
||||
#endif /* _SPI_H_ */
|
||||
|
||||
@@ -67,6 +67,19 @@ struct spi_flash {
|
||||
|
||||
struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs,
|
||||
unsigned int max_hz, unsigned int spi_mode);
|
||||
|
||||
/**
|
||||
* Set up a new SPI flash from an fdt node
|
||||
*
|
||||
* @param blob Device tree blob
|
||||
* @param slave_node Pointer to this SPI slave node in the device tree
|
||||
* @param spi_node Cached pointer to the SPI interface this node belongs
|
||||
* to
|
||||
* @return 0 if ok, -1 on error
|
||||
*/
|
||||
struct spi_flash *spi_flash_probe_fdt(const void *blob, int slave_node,
|
||||
int spi_node);
|
||||
|
||||
void spi_flash_free(struct spi_flash *flash);
|
||||
|
||||
static inline int spi_flash_read(struct spi_flash *flash, u32 offset,
|
||||
|
||||
Reference in New Issue
Block a user