static void mx1_camera_clock_stop(struct soc_camera_host *ici) { struct mx1_camera_dev *pcdev = ici->priv; unsigned int csicr1; /* disable interrupts */ csicr1 = __raw_readl(pcdev->base + CSICR1) & ~CSI_IRQ_MASK; __raw_writel(csicr1, pcdev->base + CSICR1); /* Stop DMA engine */ imx_dma_disable(pcdev->dma_chan); mx1_camera_deactivate(pcdev); }
static void mx1_camera_remove_device(struct soc_camera_device *icd) { struct soc_camera_host *ici = to_soc_camera_host(icd->parent); struct mx1_camera_dev *pcdev = ici->priv; unsigned int csicr1; /* disable interrupts */ csicr1 = __raw_readl(pcdev->base + CSICR1) & ~CSI_IRQ_MASK; __raw_writel(csicr1, pcdev->base + CSICR1); /* Stop DMA engine */ imx_dma_disable(pcdev->dma_chan); dev_info(icd->parent, "MX1 Camera driver detached from camera %d\n", icd->devnum); mx1_camera_deactivate(pcdev); }