From: Linus Torvalds Date: Sat, 29 Oct 2011 14:28:36 +0000 (-0700) Subject: Merge branch 'spi/next' of git://git.secretlab.ca/git/linux-2.6 X-Git-Tag: v3.2-rc1~123 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=18c0635363364ca2fc2d1cbd65bbf918daf89d1a;p=~emulex%2Finfiniband.git Merge branch 'spi/next' of git://git.secretlab.ca/git/linux-2.6 * 'spi/next' of git://git.secretlab.ca/git/linux-2.6: drivercore: Add helper macro for platform_driver boilerplate spi: irq: Remove IRQF_DISABLED OMAP: SPI: Fix the trying to free nonexistent resource error spi/spi-ep93xx: add module.h include spi/tegra: fix compilation error in spi-tegra.c spi: spi-dw: fix all sparse warnings spi/spi-pl022: Call pl022_dma_remove(pl022) only if enable_dma is true spi/spi-pl022: calculate_effective_freq() must set rate <= requested rate spi/spi-pl022: Don't allocate more sg than required. spi/spi-pl022: Use GFP_ATOMIC for allocation from tasklet spi/spi-pl022: Resolve formatting issues --- 18c0635363364ca2fc2d1cbd65bbf918daf89d1a diff --cc drivers/spi/spi-pl022.c index 1ab2fa0d37f,c828dc607d9..f103e470cb6 --- a/drivers/spi/spi-pl022.c +++ b/drivers/spi/spi-pl022.c @@@ -2242,11 -2237,12 +2232,13 @@@ pl022_probe(struct amba_device *adev, c err_start_queue: err_init_queue: destroy_queue(pl022); - pl022_dma_remove(pl022); + if (platform_info->enable_dma) + pl022_dma_remove(pl022); + free_irq(adev->irq[0], pl022); - pm_runtime_disable(&adev->dev); err_no_irq: + clk_unprepare(pl022->clk); + err_clk_prep: clk_put(pl022->clk); err_no_clk: iounmap(pl022->virtbase); @@@ -2277,10 -2267,11 +2269,12 @@@ pl022_remove(struct amba_device *adev if (destroy_queue(pl022) != 0) dev_err(&adev->dev, "queue remove failed\n"); load_ssp_default_config(pl022); - pl022_dma_remove(pl022); + if (pl022->master_info->enable_dma) + pl022_dma_remove(pl022); + free_irq(adev->irq[0], pl022); clk_disable(pl022->clk); + clk_unprepare(pl022->clk); clk_put(pl022->clk); iounmap(pl022->virtbase); amba_release_regions(adev); @@@ -2439,9 -2404,10 +2432,8 @@@ static struct amba_driver pl022_driver .id_table = pl022_ids, .probe = pl022_probe, .remove = __devexit_p(pl022_remove), - .suspend = pl022_suspend, - .resume = pl022_resume, }; - static int __init pl022_init(void) { return amba_driver_register(&pl022_driver);