diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2009-04-02 23:22:11 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-04-02 23:22:11 +0100 |
commit | cd02938a828f4b2098a074afb7454f106f2e8df5 (patch) | |
tree | 7b543fd6aa82a62dc3a9614c26f89daca83e77d5 /drivers/spi/xilinx_spi.c | |
parent | 9d681f3a1b27fdfc17ea251cf8d5f627dab34670 (diff) | |
parent | 172ef275444efa12d834fb9d1b1acdac92db47f7 (diff) | |
download | kernel_samsung_smdk4412-cd02938a828f4b2098a074afb7454f106f2e8df5.zip kernel_samsung_smdk4412-cd02938a828f4b2098a074afb7454f106f2e8df5.tar.gz kernel_samsung_smdk4412-cd02938a828f4b2098a074afb7454f106f2e8df5.tar.bz2 |
Merge branch 'smsc911x-armplatforms' of git://github.com/steveglen/linux-2.6
Diffstat (limited to 'drivers/spi/xilinx_spi.c')
-rw-r--r-- | drivers/spi/xilinx_spi.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/spi/xilinx_spi.c b/drivers/spi/xilinx_spi.c index fe7e5f3..494d3f7 100644 --- a/drivers/spi/xilinx_spi.c +++ b/drivers/spi/xilinx_spi.c @@ -354,7 +354,7 @@ static int __init xilinx_spi_of_probe(struct of_device *ofdev, if (xspi->regs == NULL) { rc = -ENOMEM; dev_warn(&ofdev->dev, "ioremap failure\n"); - goto put_master; + goto release_mem; } xspi->irq = r_irq->start; @@ -365,7 +365,7 @@ static int __init xilinx_spi_of_probe(struct of_device *ofdev, prop = of_get_property(ofdev->node, "xlnx,num-ss-bits", &len); if (!prop || len < sizeof(*prop)) { dev_warn(&ofdev->dev, "no 'xlnx,num-ss-bits' property\n"); - goto put_master; + goto unmap_io; } master->num_chipselect = *prop; @@ -397,6 +397,8 @@ free_irq: free_irq(xspi->irq, xspi); unmap_io: iounmap(xspi->regs); +release_mem: + release_mem_region(r_mem->start, resource_size(r_mem)); put_master: spi_master_put(master); return rc; @@ -406,6 +408,7 @@ static int __devexit xilinx_spi_remove(struct of_device *ofdev) { struct xilinx_spi *xspi; struct spi_master *master; + struct resource r_mem; master = platform_get_drvdata(ofdev); xspi = spi_master_get_devdata(master); @@ -413,6 +416,8 @@ static int __devexit xilinx_spi_remove(struct of_device *ofdev) spi_bitbang_stop(&xspi->bitbang); free_irq(xspi->irq, xspi); iounmap(xspi->regs); + if (!of_address_to_resource(ofdev->node, 0, &r_mem)) + release_mem_region(r_mem.start, resource_size(&r_mem)); dev_set_drvdata(&ofdev->dev, 0); spi_master_put(xspi->bitbang.master); |