Example #1
0
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);
}