int msm_vpe_release(void) { /* clean up....*/ /* drain the queue, etc. */ /* don't change the order of clock and irq.*/ int rc = 0; free_irq(vpe_device->vpeirq, 0); tasklet_kill(&vpe_tasklet); rc = msm_camio_vpe_clk_disable(); kfree(vpe_ctrl); return rc; }
int msm_vpe_release(void) { /* clean up....*/ /* drain the queue, etc. */ /* don't change the order of clock and irq.*/ int rc = 0; CDBG("%s: In \n", __func__); free_irq(vpe_device->vpeirq, 0); rc = msm_camio_vpe_clk_disable(); kfree(vpe_ctrl); CDBG("%s: Out \n", __func__); return rc; }
int msm_vpe_release(void) { /* clean up....*/ /* drain the queue, etc. */ /* don't change the order of clock and irq.*/ int rc = 0; pr_info("[CAM] %s: In\n", __func__); free_irq(vpe_device->vpeirq, 0); #ifdef CONFIG_MSM_CAMERA_7X30 rc = vpe_clock_disable(); #else rc = msm_camio_vpe_clk_disable(); #endif kfree(vpe_ctrl); pr_info("[CAM] %s: Out\n", __func__); return 0; }
int vpe_disable(void) { int rc = 0; unsigned long flags = 0; CDBG("%s: called", __func__); spin_lock_irqsave(&vpe_ctrl->ops_lock, flags); if (vpe_ctrl->state == VPE_STATE_IDLE) { CDBG("%s: VPE already disabled", __func__); spin_unlock_irqrestore(&vpe_ctrl->ops_lock, flags); return 0; } vpe_ctrl->state = VPE_STATE_IDLE; spin_unlock_irqrestore(&vpe_ctrl->ops_lock, flags); vpe_ctrl->out_y_addr = msm_io_r(vpe_device->vpebase + VPE_OUTP0_ADDR_OFFSET); vpe_ctrl->out_cbcr_addr = msm_io_r(vpe_device->vpebase + VPE_OUTP1_ADDR_OFFSET); free_irq(vpe_device->vpeirq, 0); tasklet_kill(&vpe_tasklet); rc = msm_camio_vpe_clk_disable(); return rc; }