mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 00:04:15 +08:00
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: Steve Longerbeam <slongerbeam@gmail.com> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
This commit is contained in:
parent
22b2cfad75
commit
0f6245f42c
@ -1709,38 +1709,7 @@ done:
|
||||
return IRQ_WAKE_THREAD;
|
||||
}
|
||||
|
||||
static irqreturn_t norotate_irq(int irq, void *data)
|
||||
{
|
||||
struct ipu_image_convert_chan *chan = data;
|
||||
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;
|
||||
}
|
||||
|
||||
ctx = run->ctx;
|
||||
|
||||
if (ipu_rot_mode_is_irt(ctx->rot_mode)) {
|
||||
/* this is a rotation operation, just ignore */
|
||||
spin_unlock_irqrestore(&chan->irqlock, flags);
|
||||
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)
|
||||
static irqreturn_t eof_irq(int irq, void *data)
|
||||
{
|
||||
struct ipu_image_convert_chan *chan = data;
|
||||
struct ipu_image_convert_priv *priv = chan->priv;
|
||||
@ -1760,11 +1729,24 @@ static irqreturn_t rotate_irq(int irq, void *data)
|
||||
|
||||
ctx = run->ctx;
|
||||
|
||||
if (!ipu_rot_mode_is_irt(ctx->rot_mode)) {
|
||||
/* this was NOT a rotation operation, shouldn't happen */
|
||||
dev_err(priv->ipu->dev, "Unexpected rotation interrupt\n");
|
||||
spin_unlock_irqrestore(&chan->irqlock, flags);
|
||||
return IRQ_HANDLED;
|
||||
if (irq == chan->out_eof_irq) {
|
||||
if (ipu_rot_mode_is_irt(ctx->rot_mode)) {
|
||||
/* this is a rotation op, just ignore */
|
||||
ret = IRQ_HANDLED;
|
||||
goto out;
|
||||
}
|
||||
} else if (irq == chan->rot_out_eof_irq) {
|
||||
if (!ipu_rot_mode_is_irt(ctx->rot_mode)) {
|
||||
/* this was NOT a rotation op, shouldn't happen */
|
||||
dev_err(priv->ipu->dev,
|
||||
"Unexpected rotation interrupt\n");
|
||||
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);
|
||||
@ -1859,7 +1841,7 @@ static int get_ipu_resources(struct ipu_image_convert_chan *chan)
|
||||
chan->out_chan,
|
||||
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);
|
||||
if (ret < 0) {
|
||||
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)
|
||||
chan->rotation_out_chan,
|
||||
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);
|
||||
if (ret < 0) {
|
||||
dev_err(priv->ipu->dev, "could not acquire irq %d\n",
|
||||
|
Loading…
Reference in New Issue
Block a user