lkml.org 
[lkml]   [2020]   [Aug]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 146/232] gpu: ipu-v3: image-convert: Combine rotate/no-rotate irq handlers
    Date
    From: Steve Longerbeam <slongerbeam@gmail.com>

    [ Upstream commit 0f6245f42ce9b7e4d20f2cda8d5f12b55a44d7d1 ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/ipu-v3/ipu-image-convert.c | 58 +++++++++-----------------
    1 file changed, 20 insertions(+), 38 deletions(-)

    diff --git a/drivers/gpu/ipu-v3/ipu-image-convert.c b/drivers/gpu/ipu-v3/ipu-image-convert.c
    index eeca50d9a1ee4..f8b031ded3cf2 100644
    --- a/drivers/gpu/ipu-v3/ipu-image-convert.c
    +++ b/drivers/gpu/ipu-v3/ipu-image-convert.c
    @@ -1709,9 +1709,10 @@ static irqreturn_t do_irq(struct ipu_image_convert_run *run)
    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 (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)
    -{
    - 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) {
    + 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;
    }

    - 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",
    --
    2.25.1


    \
     
     \ /
      Last update: 2022-09-17 16:08    [W:2.150 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site