dm: spi: Change cs_info op to return -EINVAL for invalid cs num
authorBin Meng <bmeng.cn@gmail.com>
Mon, 9 Sep 2019 13:00:01 +0000 (06:00 -0700)
committerJagan Teki <jagan@amarulasolutions.com>
Thu, 24 Oct 2019 19:18:31 +0000 (00:48 +0530)
We need distinguish the following two situations in various SPI APIs:

- given chip select num is invalid
- given chip select num is valid, but no device is attached

Currently -ENODEV is returned for both cases.

For the first case, it's more reasonable to return -EINVAL instead of
-ENODEV for invalid chip select numbers.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Jagan Teki <jagan@amarulasolutions.com> # SoPine
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
doc/driver-model/spi-howto.rst
drivers/spi/ath79_spi.c
drivers/spi/bcm63xx_hsspi.c
drivers/spi/bcm63xx_spi.c
drivers/spi/sandbox_spi.c
drivers/spi/tegra20_sflash.c
include/spi.h

index 44eab3947e7df6eabdc95269a1487ada41183455..9631a5059d3f9bc3fccb0a77ee96082c4bd1722c 100644 (file)
@@ -116,7 +116,7 @@ Put this code at the bottom of your existing driver file:
        static int exynos_cs_info(struct udevice *bus, uint cs,
                                  struct spi_cs_info *info)
        {
-               return -ENODEV;
+               return -EINVAL;
        }
 
        static const struct dm_spi_ops exynos_spi_ops = {
@@ -633,7 +633,7 @@ is not obvious from outside the driver. In this case you can provide a
 method for cs_info() to deal with this. If you don't provide it, then the
 device tree will be used to determine what chip selects are valid.
 
-Return -ENODEV if the supplied chip select is invalid, or 0 if it is valid.
+Return -EINVAL if the supplied chip select is invalid, or 0 if it is valid.
 If you don't provide the cs_info() method, 0 is assumed for all chip selects
 that do not appear in the device tree.
 
index 4fd3c050e8e9079c6427d30db43ff22083798c2c..207069218f6ce445728f10570f23df33a29da0cd 100644 (file)
@@ -198,7 +198,7 @@ static int ath79_cs_info(struct udevice *bus, uint cs,
 {
        /* Always allow activity on CS 0/1/2 */
        if (cs >= 3)
-               return -ENODEV;
+               return -EINVAL;
 
        return 0;
 }
index e82b80c107c1aec7cb98bb265c5fb693503675d1..529adfbc4e6e7ee4cb07c70b933187ffd4c68534 100644 (file)
@@ -108,7 +108,7 @@ static int bcm63xx_hsspi_cs_info(struct udevice *bus, uint cs,
 
        if (cs >= priv->num_cs) {
                printf("no cs %u\n", cs);
-               return -ENODEV;
+               return -EINVAL;
        }
 
        return 0;
index 4d19e03523fb3fb1bcbdb9b0199129274287b45f..69f88c9e0873e7006bd4c6cdc5564ea26017c759 100644 (file)
@@ -130,7 +130,7 @@ static int bcm63xx_spi_cs_info(struct udevice *bus, uint cs,
 
        if (cs >= priv->num_cs) {
                printf("no cs %u\n", cs);
-               return -ENODEV;
+               return -EINVAL;
        }
 
        return 0;
index 906401ec8ab46acb242b7cfad857622427a717ba..16473ec7a0b9d5e36d3ca270c98e8b23060f48a7 100644 (file)
@@ -117,7 +117,7 @@ static int sandbox_cs_info(struct udevice *bus, uint cs,
 {
        /* Always allow activity on CS 0 */
        if (cs >= 1)
-               return -ENODEV;
+               return -EINVAL;
 
        return 0;
 }
index a54b10fdebf933322deedd776d3d80ff6a7c63b8..567e33f156a96940b478160a1644684564929328 100644 (file)
@@ -78,7 +78,7 @@ int tegra20_sflash_cs_info(struct udevice *bus, unsigned int cs,
 {
        /* Tegra20 SPI-Flash - only 1 device ('bus/cs') */
        if (cs != 0)
-               return -ENODEV;
+               return -EINVAL;
        else
                return 0;
 }
index 5eec0c4775e5c9a3122f772841e1952fb803b6ac..3f79168df30ab70756725bded35342288824054c 100644 (file)
@@ -458,7 +458,7 @@ struct dm_spi_ops {
         * @cs:         The chip select (0..n-1)
         * @info:       Returns information about the chip select, if valid.
         *              On entry info->dev is NULL
-        * @return 0 if OK (and @info is set up), -ENODEV if the chip select
+        * @return 0 if OK (and @info is set up), -EINVAL if the chip select
         *         is invalid, other -ve value on error
         */
        int (*cs_info)(struct udevice *bus, uint cs, struct spi_cs_info *info);