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

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
Loading
Loading
Loading
Loading
+20 −38
Original line number Diff line number Diff line
@@ -1709,9 +1709,10 @@ done:
	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_priv *priv = chan->priv;
	struct ipu_image_convert_ctx *ctx;
	struct ipu_image_convert_run *run;
	unsigned long flags;
@@ -1728,45 +1729,26 @@ static irqreturn_t norotate_irq(int irq, void *data)

	ctx = run->ctx;

	if (irq == chan->out_eof_irq) {
		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;
			/* this is a rotation op, just ignore */
			ret = IRQ_HANDLED;
			goto out;
		}

	ret = do_irq(run);
out:
	spin_unlock_irqrestore(&chan->irqlock, flags);
	return ret;
	} 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;
		}

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) {
	} else {
		dev_err(priv->ipu->dev, "Received unknown irq %d\n", irq);
		ret = IRQ_NONE;
		goto out;
	}

	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;
	}

	ret = do_irq(run);
out:
	spin_unlock_irqrestore(&chan->irqlock, flags);
@@ -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",