2021-02-05 00:05:20

by Luca Ceresoli

[permalink] [raw]
Subject: [PATCH] fpga: fpga-mgr: xilinx-spi: fix error messages on -EPROBE_DEFER

The current code produces an error message on devm_gpiod_get() errors even
when the error is -EPROBE_DEFER, which should be silent.

This has been observed producing a significant amount of messages like:

xlnx-slave-spi spi1.1: Failed to get PROGRAM_B gpio: -517

Fix and simplify code by using the dev_err_probe() helper function.

Signed-off-by: Luca Ceresoli <[email protected]>
Fixes: dd2784c01d93 ("fpga manager: xilinx-spi: check INIT_B pin during write_init")
Fixes: 061c97d13f1a ("fpga manager: Add Xilinx slave serial SPI driver")
---
drivers/fpga/xilinx-spi.c | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)

diff --git a/drivers/fpga/xilinx-spi.c b/drivers/fpga/xilinx-spi.c
index 27defa98092d..fee4d0abf6bf 100644
--- a/drivers/fpga/xilinx-spi.c
+++ b/drivers/fpga/xilinx-spi.c
@@ -233,25 +233,19 @@ static int xilinx_spi_probe(struct spi_device *spi)

/* PROGRAM_B is active low */
conf->prog_b = devm_gpiod_get(&spi->dev, "prog_b", GPIOD_OUT_LOW);
- if (IS_ERR(conf->prog_b)) {
- dev_err(&spi->dev, "Failed to get PROGRAM_B gpio: %ld\n",
- PTR_ERR(conf->prog_b));
- return PTR_ERR(conf->prog_b);
- }
+ if (IS_ERR(conf->prog_b))
+ return dev_err_probe(&spi->dev, PTR_ERR(conf->prog_b),
+ "Failed to get PROGRAM_B gpio\n");

conf->init_b = devm_gpiod_get_optional(&spi->dev, "init-b", GPIOD_IN);
- if (IS_ERR(conf->init_b)) {
- dev_err(&spi->dev, "Failed to get INIT_B gpio: %ld\n",
- PTR_ERR(conf->init_b));
- return PTR_ERR(conf->init_b);
- }
+ if (IS_ERR(conf->init_b))
+ return dev_err_probe(&spi->dev, PTR_ERR(conf->init_b),
+ "Failed to get INIT_B gpio\n");

conf->done = devm_gpiod_get(&spi->dev, "done", GPIOD_IN);
- if (IS_ERR(conf->done)) {
- dev_err(&spi->dev, "Failed to get DONE gpio: %ld\n",
- PTR_ERR(conf->done));
- return PTR_ERR(conf->done);
- }
+ if (IS_ERR(conf->done))
+ return dev_err_probe(&spi->dev, PTR_ERR(conf->done),
+ "Failed to get DONE gpio\n");

mgr = devm_fpga_mgr_create(&spi->dev,
"Xilinx Slave Serial FPGA Manager",
--
2.30.0


2021-02-06 20:37:06

by Moritz Fischer

[permalink] [raw]
Subject: Re: [PATCH] fpga: fpga-mgr: xilinx-spi: fix error messages on -EPROBE_DEFER

On Thu, Feb 04, 2021 at 01:13:13PM +0100, Luca Ceresoli wrote:
> The current code produces an error message on devm_gpiod_get() errors even
> when the error is -EPROBE_DEFER, which should be silent.
>
> This has been observed producing a significant amount of messages like:
>
> xlnx-slave-spi spi1.1: Failed to get PROGRAM_B gpio: -517
>
> Fix and simplify code by using the dev_err_probe() helper function.
>
> Signed-off-by: Luca Ceresoli <[email protected]>
> Fixes: dd2784c01d93 ("fpga manager: xilinx-spi: check INIT_B pin during write_init")
> Fixes: 061c97d13f1a ("fpga manager: Add Xilinx slave serial SPI driver")
> ---
> drivers/fpga/xilinx-spi.c | 24 +++++++++---------------
> 1 file changed, 9 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/fpga/xilinx-spi.c b/drivers/fpga/xilinx-spi.c
> index 27defa98092d..fee4d0abf6bf 100644
> --- a/drivers/fpga/xilinx-spi.c
> +++ b/drivers/fpga/xilinx-spi.c
> @@ -233,25 +233,19 @@ static int xilinx_spi_probe(struct spi_device *spi)
>
> /* PROGRAM_B is active low */
> conf->prog_b = devm_gpiod_get(&spi->dev, "prog_b", GPIOD_OUT_LOW);
> - if (IS_ERR(conf->prog_b)) {
> - dev_err(&spi->dev, "Failed to get PROGRAM_B gpio: %ld\n",
> - PTR_ERR(conf->prog_b));
> - return PTR_ERR(conf->prog_b);
> - }
> + if (IS_ERR(conf->prog_b))
> + return dev_err_probe(&spi->dev, PTR_ERR(conf->prog_b),
> + "Failed to get PROGRAM_B gpio\n");
>
> conf->init_b = devm_gpiod_get_optional(&spi->dev, "init-b", GPIOD_IN);
> - if (IS_ERR(conf->init_b)) {
> - dev_err(&spi->dev, "Failed to get INIT_B gpio: %ld\n",
> - PTR_ERR(conf->init_b));
> - return PTR_ERR(conf->init_b);
> - }
> + if (IS_ERR(conf->init_b))
> + return dev_err_probe(&spi->dev, PTR_ERR(conf->init_b),
> + "Failed to get INIT_B gpio\n");
>
> conf->done = devm_gpiod_get(&spi->dev, "done", GPIOD_IN);
> - if (IS_ERR(conf->done)) {
> - dev_err(&spi->dev, "Failed to get DONE gpio: %ld\n",
> - PTR_ERR(conf->done));
> - return PTR_ERR(conf->done);
> - }
> + if (IS_ERR(conf->done))
> + return dev_err_probe(&spi->dev, PTR_ERR(conf->done),
> + "Failed to get DONE gpio\n");
>
> mgr = devm_fpga_mgr_create(&spi->dev,
> "Xilinx Slave Serial FPGA Manager",
> --
> 2.30.0
>
Looks good, will queue.

- Moritz

2021-03-06 15:44:24

by Moritz Fischer

[permalink] [raw]
Subject: Re: [PATCH] fpga: fpga-mgr: xilinx-spi: fix error messages on -EPROBE_DEFER

On Thu, Feb 04, 2021 at 01:13:13PM +0100, Luca Ceresoli wrote:
> The current code produces an error message on devm_gpiod_get() errors even
> when the error is -EPROBE_DEFER, which should be silent.
>
> This has been observed producing a significant amount of messages like:
>
> xlnx-slave-spi spi1.1: Failed to get PROGRAM_B gpio: -517
>
> Fix and simplify code by using the dev_err_probe() helper function.
>
> Signed-off-by: Luca Ceresoli <[email protected]>
> Fixes: dd2784c01d93 ("fpga manager: xilinx-spi: check INIT_B pin during write_init")
> Fixes: 061c97d13f1a ("fpga manager: Add Xilinx slave serial SPI driver")
> ---
> drivers/fpga/xilinx-spi.c | 24 +++++++++---------------
> 1 file changed, 9 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/fpga/xilinx-spi.c b/drivers/fpga/xilinx-spi.c
> index 27defa98092d..fee4d0abf6bf 100644
> --- a/drivers/fpga/xilinx-spi.c
> +++ b/drivers/fpga/xilinx-spi.c
> @@ -233,25 +233,19 @@ static int xilinx_spi_probe(struct spi_device *spi)
>
> /* PROGRAM_B is active low */
> conf->prog_b = devm_gpiod_get(&spi->dev, "prog_b", GPIOD_OUT_LOW);
> - if (IS_ERR(conf->prog_b)) {
> - dev_err(&spi->dev, "Failed to get PROGRAM_B gpio: %ld\n",
> - PTR_ERR(conf->prog_b));
> - return PTR_ERR(conf->prog_b);
> - }
> + if (IS_ERR(conf->prog_b))
> + return dev_err_probe(&spi->dev, PTR_ERR(conf->prog_b),
> + "Failed to get PROGRAM_B gpio\n");
>
> conf->init_b = devm_gpiod_get_optional(&spi->dev, "init-b", GPIOD_IN);
> - if (IS_ERR(conf->init_b)) {
> - dev_err(&spi->dev, "Failed to get INIT_B gpio: %ld\n",
> - PTR_ERR(conf->init_b));
> - return PTR_ERR(conf->init_b);
> - }
> + if (IS_ERR(conf->init_b))
> + return dev_err_probe(&spi->dev, PTR_ERR(conf->init_b),
> + "Failed to get INIT_B gpio\n");
>
> conf->done = devm_gpiod_get(&spi->dev, "done", GPIOD_IN);
> - if (IS_ERR(conf->done)) {
> - dev_err(&spi->dev, "Failed to get DONE gpio: %ld\n",
> - PTR_ERR(conf->done));
> - return PTR_ERR(conf->done);
> - }
> + if (IS_ERR(conf->done))
> + return dev_err_probe(&spi->dev, PTR_ERR(conf->done),
> + "Failed to get DONE gpio\n");
>
> mgr = devm_fpga_mgr_create(&spi->dev,
> "Xilinx Slave Serial FPGA Manager",
> --
> 2.30.0
>

Applied to for-5.13,

- Moritz