Exemple #1
0
static int spi_imx_remove(struct vmm_device *dev)
{
	struct spi_master *master = vmm_devdrv_get_data(dev);
	struct spi_imx_data *spi_imx = spi_master_get_devdata(master);

	spi_bitbang_stop(&spi_imx->bitbang);

	writel(0, spi_imx->base + MXC_CSPICTRL);
	clk_disable_unprepare(spi_imx->clk_ipg);
	clk_disable_unprepare(spi_imx->clk_per);
	spi_master_put(master);

	return 0;
}
Exemple #2
0
static int sram_remove(struct vmm_device *dev)
{
	struct sram_dev *sram = vmm_devdrv_get_data(dev);

	if (gen_pool_avail(sram->pool) < gen_pool_size(sram->pool))
		vmm_printf("%s: removed while SRAM allocated\n", dev->name);

	gen_pool_destroy(sram->pool);

	if (sram->clk)
		clk_disable_unprepare(sram->clk);

	return 0;
}
Exemple #3
0
static int amba_kmi_driver_remove(struct vmm_device *dev)
{
	struct amba_kmi_port *kmi =
			(struct amba_kmi_port *)vmm_devdrv_get_data(dev);

	vmm_devdrv_set_data(dev, NULL);

	serio_unregister_port(kmi->io);
	clk_put(kmi->clk);
	vmm_devtree_regunmap_release(dev->node, (virtual_addr_t)kmi->base, 0);
	kfree(kmi);

	return VMM_OK;
}