From: Siva Durga Prasad Paladugu Date: Tue, 17 May 2016 10:07:23 +0000 (+0530) Subject: spi: xilinx_spi: Add support for Quad mode X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2f343e87c68bbbbdf5dba93bc7949665421dd6c6;p=thirdparty%2Fu-boot.git spi: xilinx_spi: Add support for Quad mode Add Quad mode support for xilinx spi driver Inform the spi framework about quad mode capability by reading it from devicetree. Signed-off-by: Siva Durga Prasad Paladugu Signed-off-by: Michal Simek --- diff --git a/drivers/spi/xilinx_spi.c b/drivers/spi/xilinx_spi.c index a951a7753d8..3e01c667264 100644 --- a/drivers/spi/xilinx_spi.c +++ b/drivers/spi/xilinx_spi.c @@ -21,6 +21,8 @@ #include #include +DECLARE_GLOBAL_DATA_PTR; + /* * [0]: http://www.xilinx.com/support/documentation * @@ -82,6 +84,8 @@ #define CONFIG_SYS_XILINX_SPI_LIST { CONFIG_SYS_SPI_BASE } #endif +#define XILINX_SPI_QUAD_MODE 2 + /* xilinx spi register set */ struct xilinx_spi_regs { u32 __space0__[7]; @@ -109,6 +113,22 @@ struct xilinx_spi_priv { }; static unsigned long xilinx_spi_base_list[] = CONFIG_SYS_XILINX_SPI_LIST; + +static int xilinx_spi_child_pre_probe(struct udevice *bus) +{ + struct spi_slave *slave = dev_get_parent_priv(bus); + struct udevice *dev = dev_get_parent(bus); + int spimode; + + spimode = fdtdec_get_int(gd->fdt_blob, dev->of_offset, "xlnx,spi-mode", + -1); + + if (spimode == XILINX_SPI_QUAD_MODE) + slave->op_mode_rx = SPI_OPM_RX_QOF; + + return 0; +} + static int xilinx_spi_probe(struct udevice *bus) { struct xilinx_spi_priv *priv = dev_get_priv(bus); @@ -299,4 +319,5 @@ U_BOOT_DRIVER(xilinx_spi) = { .ops = &xilinx_spi_ops, .priv_auto_alloc_size = sizeof(struct xilinx_spi_priv), .probe = xilinx_spi_probe, + .child_pre_probe = xilinx_spi_child_pre_probe, };