Commit cff49d58 authored by Chia-Lin Kao (AceLan)'s avatar Chia-Lin Kao (AceLan) Committed by Mark Brown

spi: Unify error codes by replacing -ENOTSUPP with -EOPNOTSUPP

This commit updates the SPI subsystem, particularly affecting "SPI MEM"
drivers and core parts, by replacing the -ENOTSUPP error code with
-EOPNOTSUPP.

The key motivations for this change are as follows:
1. The spi-nor driver currently uses EOPNOTSUPP, whereas calls to spi-mem
might return ENOTSUPP. This update aims to unify the error reporting
within the SPI subsystem for clarity and consistency.

2. The use of ENOTSUPP has been flagged by checkpatch as inappropriate,
mainly being reserved for NFS-related errors. To align with kernel coding
standards and recommendations, this change is being made.

3. By using EOPNOTSUPP, we provide more specific context to the error,
indicating that a particular operation is not supported. This helps
differentiate from the more generic ENOTSUPP error, allowing drivers to
better handle and respond to different error scenarios.

Risks and Considerations:
While this change is primarily intended as a code cleanup and error code
unification, there is a minor risk of breaking user-space applications
that rely on specific return codes for unsupported operations. However,
this risk is considered low, as such use-cases are unlikely to be common
or critical. Nevertheless, developers and users should be aware of this
change, especially if they have scripts or tools that specifically handle
SPI error codes.

This commit does not introduce any functional changes to the SPI subsystem
or the affected drivers.
Signed-off-by: default avatar"Chia-Lin Kao (AceLan)" <acelan.kao@canonical.com>
Acked-by: default avatarTudor Ambarus <tudor.ambarus@linaro.org>
Reviewed-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
Acked-by: default avatarMichael Walle <michael@walle.cc>
Link: https://lore.kernel.org/r/20231129064311.272422-1-acelan.kao@canonical.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 8e6a4396
...@@ -974,7 +974,7 @@ static int spinand_manufacturer_match(struct spinand_device *spinand, ...@@ -974,7 +974,7 @@ static int spinand_manufacturer_match(struct spinand_device *spinand,
spinand->manufacturer = manufacturer; spinand->manufacturer = manufacturer;
return 0; return 0;
} }
return -ENOTSUPP; return -EOPNOTSUPP;
} }
static int spinand_id_detect(struct spinand_device *spinand) static int spinand_id_detect(struct spinand_device *spinand)
......
...@@ -3146,7 +3146,7 @@ int spi_nor_set_4byte_addr_mode(struct spi_nor *nor, bool enable) ...@@ -3146,7 +3146,7 @@ int spi_nor_set_4byte_addr_mode(struct spi_nor *nor, bool enable)
int ret; int ret;
ret = params->set_4byte_addr_mode(nor, enable); ret = params->set_4byte_addr_mode(nor, enable);
if (ret && ret != -ENOTSUPP) if (ret && ret != -EOPNOTSUPP)
return ret; return ret;
if (enable) { if (enable) {
......
...@@ -272,7 +272,7 @@ static int atmel_qspi_find_mode(const struct spi_mem_op *op) ...@@ -272,7 +272,7 @@ static int atmel_qspi_find_mode(const struct spi_mem_op *op)
if (atmel_qspi_is_compatible(op, &atmel_qspi_modes[i])) if (atmel_qspi_is_compatible(op, &atmel_qspi_modes[i]))
return i; return i;
return -ENOTSUPP; return -EOPNOTSUPP;
} }
static bool atmel_qspi_supports_op(struct spi_mem *mem, static bool atmel_qspi_supports_op(struct spi_mem *mem,
......
...@@ -146,7 +146,7 @@ static int ath79_exec_mem_op(struct spi_mem *mem, ...@@ -146,7 +146,7 @@ static int ath79_exec_mem_op(struct spi_mem *mem,
/* Only use for fast-read op. */ /* Only use for fast-read op. */
if (op->cmd.opcode != 0x0b || op->data.dir != SPI_MEM_DATA_IN || if (op->cmd.opcode != 0x0b || op->data.dir != SPI_MEM_DATA_IN ||
op->addr.nbytes != 3 || op->dummy.nbytes != 1) op->addr.nbytes != 3 || op->dummy.nbytes != 1)
return -ENOTSUPP; return -EOPNOTSUPP;
/* disable GPIO mode */ /* disable GPIO mode */
ath79_spi_wr(sp, AR71XX_SPI_REG_FS, 0); ath79_spi_wr(sp, AR71XX_SPI_REG_FS, 0);
......
...@@ -1199,7 +1199,7 @@ static int bcm_qspi_exec_mem_op(struct spi_mem *mem, ...@@ -1199,7 +1199,7 @@ static int bcm_qspi_exec_mem_op(struct spi_mem *mem,
if (!op->data.nbytes || !op->addr.nbytes || op->addr.nbytes > 4 || if (!op->data.nbytes || !op->addr.nbytes || op->addr.nbytes > 4 ||
op->data.dir != SPI_MEM_DATA_IN) op->data.dir != SPI_MEM_DATA_IN)
return -ENOTSUPP; return -EOPNOTSUPP;
buf = op->data.buf.in; buf = op->data.buf.in;
addr = op->addr.val; addr = op->addr.val;
......
...@@ -323,7 +323,7 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) ...@@ -323,7 +323,7 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
return ret; return ret;
if (!spi_mem_internal_supports_op(mem, op)) if (!spi_mem_internal_supports_op(mem, op))
return -ENOTSUPP; return -EOPNOTSUPP;
if (ctlr->mem_ops && ctlr->mem_ops->exec_op && !spi_get_csgpiod(mem->spi, 0)) { if (ctlr->mem_ops && ctlr->mem_ops->exec_op && !spi_get_csgpiod(mem->spi, 0)) {
ret = spi_mem_access_start(mem); ret = spi_mem_access_start(mem);
...@@ -339,7 +339,7 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) ...@@ -339,7 +339,7 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
* read path) and expect the core to use the regular SPI * read path) and expect the core to use the regular SPI
* interface in other cases. * interface in other cases.
*/ */
if (!ret || ret != -ENOTSUPP) if (!ret || ret != -ENOTSUPP || ret != -EOPNOTSUPP)
return ret; return ret;
} }
...@@ -559,7 +559,7 @@ spi_mem_dirmap_create(struct spi_mem *mem, ...@@ -559,7 +559,7 @@ spi_mem_dirmap_create(struct spi_mem *mem,
if (ret) { if (ret) {
desc->nodirmap = true; desc->nodirmap = true;
if (!spi_mem_supports_op(desc->mem, &desc->info.op_tmpl)) if (!spi_mem_supports_op(desc->mem, &desc->info.op_tmpl))
ret = -ENOTSUPP; ret = -EOPNOTSUPP;
else else
ret = 0; ret = 0;
} }
......
...@@ -556,7 +556,7 @@ static int npcm_fiu_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) ...@@ -556,7 +556,7 @@ static int npcm_fiu_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
op->data.nbytes); op->data.nbytes);
if (fiu->spix_mode || op->addr.nbytes > 4) if (fiu->spix_mode || op->addr.nbytes > 4)
return -ENOTSUPP; return -EOPNOTSUPP;
if (fiu->clkrate != chip->clkrate) { if (fiu->clkrate != chip->clkrate) {
ret = clk_set_rate(fiu->clk, chip->clkrate); ret = clk_set_rate(fiu->clk, chip->clkrate);
......
...@@ -613,12 +613,12 @@ static int ti_qspi_exec_mem_op(struct spi_mem *mem, ...@@ -613,12 +613,12 @@ static int ti_qspi_exec_mem_op(struct spi_mem *mem,
/* Only optimize read path. */ /* Only optimize read path. */
if (!op->data.nbytes || op->data.dir != SPI_MEM_DATA_IN || if (!op->data.nbytes || op->data.dir != SPI_MEM_DATA_IN ||
!op->addr.nbytes || op->addr.nbytes > 4) !op->addr.nbytes || op->addr.nbytes > 4)
return -ENOTSUPP; return -EOPNOTSUPP;
/* Address exceeds MMIO window size, fall back to regular mode. */ /* Address exceeds MMIO window size, fall back to regular mode. */
from = op->addr.val; from = op->addr.val;
if (from + op->data.nbytes > qspi->mmap_size) if (from + op->data.nbytes > qspi->mmap_size)
return -ENOTSUPP; return -EOPNOTSUPP;
mutex_lock(&qspi->list_lock); mutex_lock(&qspi->list_lock);
......
...@@ -361,7 +361,7 @@ static int wpcm_fiu_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) ...@@ -361,7 +361,7 @@ static int wpcm_fiu_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
wpcm_fiu_stall_host(fiu, false); wpcm_fiu_stall_host(fiu, false);
return -ENOTSUPP; return -EOPNOTSUPP;
} }
static int wpcm_fiu_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op) static int wpcm_fiu_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op)
......
...@@ -233,6 +233,8 @@ static inline void *spi_mem_get_drvdata(struct spi_mem *mem) ...@@ -233,6 +233,8 @@ static inline void *spi_mem_get_drvdata(struct spi_mem *mem)
* limitations) * limitations)
* @supports_op: check if an operation is supported by the controller * @supports_op: check if an operation is supported by the controller
* @exec_op: execute a SPI memory operation * @exec_op: execute a SPI memory operation
* not all driver provides supports_op(), so it can return -EOPNOTSUPP
* if the op is not supported by the driver/controller
* @get_name: get a custom name for the SPI mem device from the controller. * @get_name: get a custom name for the SPI mem device from the controller.
* This might be needed if the controller driver has been ported * This might be needed if the controller driver has been ported
* to use the SPI mem layer and a custom name is used to keep * to use the SPI mem layer and a custom name is used to keep
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment