Commit 0f6245f4 authored by Steve Longerbeam's avatar Steve Longerbeam Committed by Philipp Zabel

gpu: ipu-v3: image-convert: Combine rotate/no-rotate irq handlers

Combine the rotate_irq() and norotate_irq() handlers into a single
eof_irq() handler.
Signed-off-by: default avatarSteve Longerbeam <slongerbeam@gmail.com>
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
parent 22b2cfad
...@@ -1709,9 +1709,10 @@ static irqreturn_t do_irq(struct ipu_image_convert_run *run) ...@@ -1709,9 +1709,10 @@ static irqreturn_t do_irq(struct ipu_image_convert_run *run)
return IRQ_WAKE_THREAD; return IRQ_WAKE_THREAD;
} }
static irqreturn_t norotate_irq(int irq, void *data) static irqreturn_t eof_irq(int irq, void *data)
{ {
struct ipu_image_convert_chan *chan = data; struct ipu_image_convert_chan *chan = data;
struct ipu_image_convert_priv *priv = chan->priv;
struct ipu_image_convert_ctx *ctx; struct ipu_image_convert_ctx *ctx;
struct ipu_image_convert_run *run; struct ipu_image_convert_run *run;
unsigned long flags; unsigned long flags;
...@@ -1728,43 +1729,24 @@ static irqreturn_t norotate_irq(int irq, void *data) ...@@ -1728,43 +1729,24 @@ static irqreturn_t norotate_irq(int irq, void *data)
ctx = run->ctx; ctx = run->ctx;
if (irq == chan->out_eof_irq) {
if (ipu_rot_mode_is_irt(ctx->rot_mode)) { if (ipu_rot_mode_is_irt(ctx->rot_mode)) {
/* this is a rotation operation, just ignore */ /* this is a rotation op, just ignore */
spin_unlock_irqrestore(&chan->irqlock, flags); ret = IRQ_HANDLED;
return IRQ_HANDLED;
}
ret = do_irq(run);
out:
spin_unlock_irqrestore(&chan->irqlock, flags);
return ret;
}
static irqreturn_t rotate_irq(int irq, void *data)
{
struct ipu_image_convert_chan *chan = data;
struct ipu_image_convert_priv *priv = chan->priv;
struct ipu_image_convert_ctx *ctx;
struct ipu_image_convert_run *run;
unsigned long flags;
irqreturn_t ret;
spin_lock_irqsave(&chan->irqlock, flags);
/* get current run and its context */
run = chan->current_run;
if (!run) {
ret = IRQ_NONE;
goto out; goto out;
} }
} else if (irq == chan->rot_out_eof_irq) {
ctx = run->ctx;
if (!ipu_rot_mode_is_irt(ctx->rot_mode)) { if (!ipu_rot_mode_is_irt(ctx->rot_mode)) {
/* this was NOT a rotation operation, shouldn't happen */ /* this was NOT a rotation op, shouldn't happen */
dev_err(priv->ipu->dev, "Unexpected rotation interrupt\n"); dev_err(priv->ipu->dev,
spin_unlock_irqrestore(&chan->irqlock, flags); "Unexpected rotation interrupt\n");
return IRQ_HANDLED; ret = IRQ_HANDLED;
goto out;
}
} else {
dev_err(priv->ipu->dev, "Received unknown irq %d\n", irq);
ret = IRQ_NONE;
goto out;
} }
ret = do_irq(run); ret = do_irq(run);
...@@ -1859,7 +1841,7 @@ static int get_ipu_resources(struct ipu_image_convert_chan *chan) ...@@ -1859,7 +1841,7 @@ static int get_ipu_resources(struct ipu_image_convert_chan *chan)
chan->out_chan, chan->out_chan,
IPU_IRQ_EOF); IPU_IRQ_EOF);
ret = request_threaded_irq(chan->out_eof_irq, norotate_irq, do_bh, ret = request_threaded_irq(chan->out_eof_irq, eof_irq, do_bh,
0, "ipu-ic", chan); 0, "ipu-ic", chan);
if (ret < 0) { if (ret < 0) {
dev_err(priv->ipu->dev, "could not acquire irq %d\n", dev_err(priv->ipu->dev, "could not acquire irq %d\n",
...@@ -1872,7 +1854,7 @@ static int get_ipu_resources(struct ipu_image_convert_chan *chan) ...@@ -1872,7 +1854,7 @@ static int get_ipu_resources(struct ipu_image_convert_chan *chan)
chan->rotation_out_chan, chan->rotation_out_chan,
IPU_IRQ_EOF); IPU_IRQ_EOF);
ret = request_threaded_irq(chan->rot_out_eof_irq, rotate_irq, do_bh, ret = request_threaded_irq(chan->rot_out_eof_irq, eof_irq, do_bh,
0, "ipu-ic", chan); 0, "ipu-ic", chan);
if (ret < 0) { if (ret < 0) {
dev_err(priv->ipu->dev, "could not acquire irq %d\n", dev_err(priv->ipu->dev, "could not acquire irq %d\n",
......
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