void isp_af_isr(struct isp_af_device *af) { isp_af_enable(af, 0); /* If it's busy we can't process this buffer anymore */ if (!isp_af_busy(af)) { isp_af_buf_process(af); isp_af_config_registers(af); } else { dev_dbg(to_device(af), "af: cannot process buffer, device is busy.\n"); } isp_af_enable(af, 1); }
void isp_af_try_enable(struct isp_af_device *isp_af) { unsigned long irqflags; if (!isp_af->config.af_config) return; spin_lock_irqsave(isp_af->lock, irqflags); if (unlikely(!isp_af->enabled && isp_af->config.af_config)) { isp_af->update = 1; isp_af->buf_next = ispstat_buf_next(&isp_af->stat); spin_unlock_irqrestore(isp_af->lock, irqflags); isp_af_config_registers(isp_af); isp_af_enable(isp_af, 1); } else spin_unlock_irqrestore(isp_af->lock, irqflags); }