static irqreturn_t cx25821_upstream_irq(int irq, void *dev_id) { struct cx25821_dev *dev = dev_id; u32 vid_status; int handled = 0; int channel_num = 0; struct sram_channel *sram_ch; if (!dev) return -1; channel_num = VID_UPSTREAM_SRAM_CHANNEL_I; sram_ch = dev->channels[channel_num].sram_channels; vid_status = cx_read(sram_ch->int_stat); /* Only deal with our interrupt */ if (vid_status) handled = cx25821_video_upstream_irq(dev, channel_num, vid_status); if (handled < 0) cx25821_stop_upstream_video_ch1(dev); else handled += handled; return IRQ_RETVAL(handled); }
static irqreturn_t cx25821_upstream_irq(int irq, void *dev_id) { struct cx25821_channel *chan = dev_id; struct cx25821_dev *dev = chan->dev; u32 vid_status; int handled = 0; const struct sram_channel *sram_ch; if (!dev) return -1; sram_ch = chan->sram_channels; vid_status = cx_read(sram_ch->int_stat); /* Only deal with our interrupt */ if (vid_status) handled = cx25821_video_upstream_irq(chan, vid_status); return IRQ_RETVAL(handled); }