diff options
author | Mark Brown <broonie@kernel.org> | 2019-11-22 19:56:33 +0000 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-11-22 19:56:33 +0000 |
commit | 8f3ed6d0b0db04db8297d951c26c809dd7b4778d (patch) | |
tree | 5813c89fa9245eb00e617b6dab89ddfe4a029184 /drivers/spi/spi-sifive.c | |
parent | af42d3466bdc8f39806b26f593604fdc54140bcb (diff) | |
parent | c5923243eb3208ea63b5ed7905610039c4ca5201 (diff) | |
download | talos-op-linux-8f3ed6d0b0db04db8297d951c26c809dd7b4778d.tar.gz talos-op-linux-8f3ed6d0b0db04db8297d951c26c809dd7b4778d.zip |
Merge branch 'spi-5.4' into spi-linus
Diffstat (limited to 'drivers/spi/spi-sifive.c')
-rw-r--r-- | drivers/spi/spi-sifive.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/spi/spi-sifive.c b/drivers/spi/spi-sifive.c index 35254bdc42c4..f7c1e20432e0 100644 --- a/drivers/spi/spi-sifive.c +++ b/drivers/spi/spi-sifive.c @@ -357,14 +357,14 @@ static int sifive_spi_probe(struct platform_device *pdev) if (!cs_bits) { dev_err(&pdev->dev, "Could not auto probe CS lines\n"); ret = -EINVAL; - goto put_master; + goto disable_clk; } num_cs = ilog2(cs_bits) + 1; if (num_cs > SIFIVE_SPI_MAX_CS) { dev_err(&pdev->dev, "Invalid number of spi slaves\n"); ret = -EINVAL; - goto put_master; + goto disable_clk; } /* Define our master */ @@ -393,7 +393,7 @@ static int sifive_spi_probe(struct platform_device *pdev) dev_name(&pdev->dev), spi); if (ret) { dev_err(&pdev->dev, "Unable to bind to interrupt\n"); - goto put_master; + goto disable_clk; } dev_info(&pdev->dev, "mapped; irq=%d, cs=%d\n", @@ -402,11 +402,13 @@ static int sifive_spi_probe(struct platform_device *pdev) ret = devm_spi_register_master(&pdev->dev, master); if (ret < 0) { dev_err(&pdev->dev, "spi_register_master failed\n"); - goto put_master; + goto disable_clk; } return 0; +disable_clk: + clk_disable_unprepare(spi->clk); put_master: spi_master_put(master); @@ -420,6 +422,7 @@ static int sifive_spi_remove(struct platform_device *pdev) /* Disable all the interrupts just in case */ sifive_spi_write(spi, SIFIVE_SPI_REG_IE, 0); + clk_disable_unprepare(spi->clk); return 0; } |