Re: [PATCH -next] spi: xtensa-xtfpga: Switch to use devm_spi_alloc_master()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 2022/9/21 11:53, Max Filippov wrote:
On Tue, Sep 20, 2022 at 4:37 AM Yang Yingliang <yangyingliang@xxxxxxxxxx> wrote:
Switch to use devm_spi_alloc_master() to simpify error path.
Typo: simplify.
OK, will fix it in v2.

Signed-off-by: Yang Yingliang <yangyingliang@xxxxxxxxxx>
---
  drivers/spi/spi-xtensa-xtfpga.c | 16 +++++-----------
  1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/drivers/spi/spi-xtensa-xtfpga.c b/drivers/spi/spi-xtensa-xtfpga.c
index fc2b5eb7d614..2fa7608f94cd 100644
--- a/drivers/spi/spi-xtensa-xtfpga.c
+++ b/drivers/spi/spi-xtensa-xtfpga.c
@@ -83,7 +83,7 @@ static int xtfpga_spi_probe(struct platform_device *pdev)
         int ret;
         struct spi_master *master;

-       master = spi_alloc_master(&pdev->dev, sizeof(struct xtfpga_spi));
+       master = devm_spi_alloc_master(&pdev->dev, sizeof(struct xtfpga_spi));
         if (!master)
                 return -ENOMEM;

@@ -97,30 +97,24 @@ static int xtfpga_spi_probe(struct platform_device *pdev)
         xspi->bitbang.chipselect = xtfpga_spi_chipselect;
         xspi->bitbang.txrx_word[SPI_MODE_0] = xtfpga_spi_txrx_word;
         xspi->regs = devm_platform_ioremap_resource(pdev, 0);
-       if (IS_ERR(xspi->regs)) {
-               ret = PTR_ERR(xspi->regs);
-               goto err;
-       }
+       if (IS_ERR(xspi->regs))
+               return PTR_ERR(xspi->regs);

         xtfpga_spi_write32(xspi, XTFPGA_SPI_START, 0);
         usleep_range(1000, 2000);
         if (xtfpga_spi_read32(xspi, XTFPGA_SPI_BUSY)) {
                 dev_err(&pdev->dev, "Device stuck in busy state\n");
-               ret = -EBUSY;
-               goto err;
+               return -EBUSY;
         }

         ret = spi_bitbang_start(&xspi->bitbang);
         if (ret < 0) {
                 dev_err(&pdev->dev, "spi_bitbang_start failed\n");
-               goto err;
+               return ret;
         }

         platform_set_drvdata(pdev, master);
         return 0;
-err:
-       spi_master_put(master);
-       return ret;
  }

  static int xtfpga_spi_remove(struct platform_device *pdev)
There's a call to spi_master_put in the xtfpga_spi_remove,
IIUC this call must be dropped too.
It can not be dropped, the controller is get in spi_bitbang_start(), it need be put in remove().

Thanks,
Yang




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux