diff options
Diffstat (limited to 'drivers/spi/spi-davinci.c')
-rw-r--r-- | drivers/spi/spi-davinci.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/spi/spi-davinci.c b/drivers/spi/spi-davinci.c index 50b2d88..8fbfe24 100644 --- a/drivers/spi/spi-davinci.c +++ b/drivers/spi/spi-davinci.c @@ -279,8 +279,7 @@ static int davinci_spi_setup_transfer(struct spi_device *spi, struct davinci_spi *dspi; struct davinci_spi_config *spicfg; u8 bits_per_word = 0; - u32 hz = 0, spifmt = 0; - int prescale; + u32 hz = 0, spifmt = 0, prescale = 0; dspi = spi_master_get_devdata(spi->master); spicfg = (struct davinci_spi_config *)spi->controller_data; @@ -554,7 +553,7 @@ static int davinci_spi_bufs(struct spi_device *spi, struct spi_transfer *t) clear_io_bits(dspi->base + SPIGCR1, SPIGCR1_POWERDOWN_MASK); set_io_bits(dspi->base + SPIGCR1, SPIGCR1_SPIENA_MASK); - reinit_completion(&dspi->done); + INIT_COMPLETION(dspi->done); if (spicfg->io_type == SPI_IO_TYPE_INTR) set_io_bits(dspi->base + SPIINT, SPIINT_MASKINT); @@ -917,7 +916,7 @@ static int davinci_spi_probe(struct platform_device *pdev) if (ret) goto unmap_io; - dspi->bitbang.master = master; + dspi->bitbang.master = spi_master_get(master); if (dspi->bitbang.master == NULL) { ret = -ENODEV; goto irq_free; @@ -926,7 +925,7 @@ static int davinci_spi_probe(struct platform_device *pdev) dspi->clk = clk_get(&pdev->dev, NULL); if (IS_ERR(dspi->clk)) { ret = -ENODEV; - goto irq_free; + goto put_master; } clk_prepare_enable(dspi->clk); @@ -1016,6 +1015,8 @@ free_dma: free_clk: clk_disable_unprepare(dspi->clk); clk_put(dspi->clk); +put_master: + spi_master_put(master); irq_free: free_irq(dspi->irq, dspi); unmap_io: @@ -1023,7 +1024,7 @@ unmap_io: release_region: release_mem_region(dspi->pbase, resource_size(r)); free_master: - spi_master_put(master); + kfree(master); err: return ret; } @@ -1050,11 +1051,11 @@ static int davinci_spi_remove(struct platform_device *pdev) clk_disable_unprepare(dspi->clk); clk_put(dspi->clk); + spi_master_put(master); free_irq(dspi->irq, dspi); iounmap(dspi->base); r = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(dspi->pbase, resource_size(r)); - spi_master_put(master); return 0; } |