In spi_get_bus_and_cs() only bus number is checked before accessing
slaves. We should check cs number as well.

Signed-off-by: Bin Meng <bmeng...@gmail.com>
---

 drivers/spi/spi-uclass.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
index 24de0b5..f633eb5 100644
--- a/drivers/spi/spi-uclass.c
+++ b/drivers/spi/spi-uclass.c
@@ -271,6 +271,7 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int 
mode,
 {
        struct udevice *bus, *dev;
        struct dm_spi_slave_platdata *plat;
+       struct spi_cs_info info;
        bool created = false;
        int ret;
 
@@ -283,6 +284,11 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int 
mode,
                printf("Invalid bus %d (err=%d)\n", busnum, ret);
                return ret;
        }
+       ret = spi_cs_info(bus, cs, &info);
+       if (ret) {
+               printf("Invalid cs %d (err=%d)\n", cs, ret);
+               return ret;
+       }
        ret = spi_find_chip_select(bus, cs, &dev);
 
        /*
-- 
2.7.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to