static int __devexit dw_spi_c2000_remove(struct platform_device *pdev) { struct dw_spi_c2000 *dwsmmio = platform_get_drvdata(pdev); struct spi_controller_pdata *pdata; struct resource *mem; platform_set_drvdata(pdev, NULL); dw_spi_remove_host(&dwsmmio->dws); iounmap(dwsmmio->dws.regs); clk_put(dwsmmio->dws.clk_spi); kfree(dwsmmio); pdata = pdev->dev.platform_data; if(!pdata) { return -EINVAL; } if(memcmp(pdata->clk_name, "DUS", 3)) c2000_block_reset(COMPONENT_AXI_LEGACY_SPI, 1); else c2000_block_reset(COMPONENT_AXI_FAST_SPI, 1); mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(mem->start, resource_size(mem)); return 0; }
static int dw_spi_mmio_remove(struct platform_device *pdev) { struct dw_spi_mmio *dwsmmio = platform_get_drvdata(pdev); clk_disable_unprepare(dwsmmio->clk); dw_spi_remove_host(&dwsmmio->dws); return 0; }
static void __devexit spi_pci_remove(struct pci_dev *pdev) { struct dw_spi_pci *dwpci = pci_get_drvdata(pdev); pci_set_drvdata(pdev, NULL); dw_spi_remove_host(&dwpci->dws); iounmap(dwpci->dws.regs); pci_release_region(pdev, 0); kfree(dwpci); pci_disable_device(pdev); }
static int rockchip_spi_remove(struct platform_device *pdev) { struct rockchip_spi_driver_data *sdd = platform_get_drvdata(pdev); platform_set_drvdata(pdev, NULL); dw_spi_remove_host(&sdd->dws); iounmap(sdd->dws.regs); kfree(sdd); return 0; }
static int dw_spi_mmio_remove(struct platform_device *pdev) { struct dw_spi_mmio *dwsmmio = platform_get_drvdata(pdev); struct resource *mem; clk_disable(dwsmmio->clk); clk_put(dwsmmio->clk); dwsmmio->clk = NULL; free_irq(dwsmmio->dws.irq, &dwsmmio->dws); dw_spi_remove_host(&dwsmmio->dws); iounmap(dwsmmio->dws.regs); kfree(dwsmmio); mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); release_mem_region(mem->start, resource_size(mem)); return 0; }