]> www.infradead.org Git - linux.git/commitdiff
spi: wpcm-fiu: differentiate between unsupported and invalid requests
authorMiquel Raynal <miquel.raynal@bootlin.com>
Wed, 22 May 2024 14:52:55 +0000 (16:52 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 27 May 2024 00:33:06 +0000 (01:33 +0100)
When the requested dirmap accesses are outside of the window, it is
probably more sensible to return -EINVAL rather than an "unsupported"
error code. If however the operation in itself is not supported, then
-EOPNOTSUP is likely going to be preferred as it is a standard error
code.

>From a caller (and reviewer) point of view, distinguising between the
two may be helpful because somehow one can be "fixed" while the other
will always be refused no matter how hard we try.

As part of a wider work to bring spi-nand continuous reads, it was
useful to easily catch the upper limit direct mapping boundaries for
each controller, with the idea of enlarging this area from a page to an
eraseblock, without risking too many regressions.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://msgid.link/r/20240522145255.995778-5-miquel.raynal@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-wpcm-fiu.c

index 6b16a22cc3a4f641cd4d221806bf8021d22267f0..886d6d7771d4e7a5d9d4cb31a046ef6eac71d947 100644 (file)
@@ -378,7 +378,7 @@ static int wpcm_fiu_dirmap_create(struct spi_mem_dirmap_desc *desc)
        int cs = spi_get_chipselect(desc->mem->spi, 0);
 
        if (desc->info.op_tmpl.data.dir != SPI_MEM_DATA_IN)
-               return -ENOTSUPP;
+               return -EOPNOTSUPP;
 
        /*
         * Unfortunately, FIU only supports a 16 MiB direct mapping window (per
@@ -387,11 +387,11 @@ static int wpcm_fiu_dirmap_create(struct spi_mem_dirmap_desc *desc)
         * flashes that are bigger than 16 MiB.
         */
        if (desc->info.offset + desc->info.length > MAX_MEMORY_SIZE_PER_CS)
-               return -ENOTSUPP;
+               return -EINVAL;
 
        /* Don't read past the memory window */
        if (cs * MAX_MEMORY_SIZE_PER_CS + desc->info.offset + desc->info.length > fiu->memory_size)
-               return -ENOTSUPP;
+               return -EINVAL;
 
        return 0;
 }