Commit 09ea44ca authored by Tomi Valkeinen's avatar Tomi Valkeinen Committed by Mauro Carvalho Chehab

media: ti-vpe: cal: simplify irq handling

Instead of having identical code block to handle irqs for the two CAL
ports, we can have a for loop and a single code block.
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: default avatarBenoit Parrot <bparrot@ti.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 84253285
......@@ -1221,12 +1221,14 @@ static irqreturn_t cal_irq(int irq_cal, void *data)
/* Check which DMA just finished */
irqst2 = reg_read(dev, CAL_HL_IRQSTATUS(2));
if (irqst2) {
int i;
/* Clear Interrupt status */
reg_write(dev, CAL_HL_IRQSTATUS(2), irqst2);
/* Need to check both port */
if (isportirqset(irqst2, 1)) {
ctx = dev->ctx[0];
for (i = 1; i <= 2; ++i) {
if (isportirqset(irqst2, i)) {
ctx = dev->ctx[i - 1];
spin_lock(&ctx->slock);
ctx->dma_act = false;
......@@ -1236,29 +1238,20 @@ static irqreturn_t cal_irq(int irq_cal, void *data)
spin_unlock(&ctx->slock);
}
if (isportirqset(irqst2, 2)) {
ctx = dev->ctx[1];
spin_lock(&ctx->slock);
ctx->dma_act = false;
if (ctx->cur_frm != ctx->next_frm)
cal_process_buffer_complete(ctx);
spin_unlock(&ctx->slock);
}
}
/* Check which DMA just started */
irqst3 = reg_read(dev, CAL_HL_IRQSTATUS(3));
if (irqst3) {
int i;
/* Clear Interrupt status */
reg_write(dev, CAL_HL_IRQSTATUS(3), irqst3);
/* Need to check both port */
if (isportirqset(irqst3, 1)) {
ctx = dev->ctx[0];
for (i = 1; i <= 2; ++i) {
if (isportirqset(irqst3, i)) {
ctx = dev->ctx[i - 1];
dma_q = &ctx->vidq;
spin_lock(&ctx->slock);
......@@ -1268,17 +1261,6 @@ static irqreturn_t cal_irq(int irq_cal, void *data)
cal_schedule_next_buffer(ctx);
spin_unlock(&ctx->slock);
}
if (isportirqset(irqst3, 2)) {
ctx = dev->ctx[1];
dma_q = &ctx->vidq;
spin_lock(&ctx->slock);
ctx->dma_act = true;
if (!list_empty(&dma_q->active) &&
ctx->cur_frm == ctx->next_frm)
cal_schedule_next_buffer(ctx);
spin_unlock(&ctx->slock);
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment