lkml.org 
[lkml]   [2013]   [Nov]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 04/13] mfd: menelaus: remove unnecessary loop
    Date
    we can let irqs refire and give the scheduler
    a chance to choose when we should be scheduled.

    Signed-off-by: Felipe Balbi <balbi@ti.com>
    ---
    drivers/mfd/menelaus.c | 43 +++++++++++++++++++------------------------
    1 file changed, 19 insertions(+), 24 deletions(-)

    diff --git a/drivers/mfd/menelaus.c b/drivers/mfd/menelaus.c
    index 11d7d81..11dc4d3 100644
    --- a/drivers/mfd/menelaus.c
    +++ b/drivers/mfd/menelaus.c
    @@ -795,30 +795,25 @@ static irqreturn_t menelaus_irq(int irq, void *_menelaus)
    {
    struct menelaus_chip *menelaus = _menelaus;
    void (*handler)(struct menelaus_chip *menelaus);
    -
    - while (1) {
    - unsigned isr;
    -
    - isr = (menelaus_read_reg(MENELAUS_INT_STATUS2)
    - & ~menelaus->mask2) << 8;
    - isr |= menelaus_read_reg(MENELAUS_INT_STATUS1)
    - & ~menelaus->mask1;
    - if (!isr)
    - break;
    -
    - while (isr) {
    - int irq = fls(isr) - 1;
    - isr &= ~(1 << irq);
    -
    - mutex_lock(&menelaus->lock);
    - menelaus_disable_irq(irq);
    - menelaus_ack_irq(irq);
    - handler = menelaus->handlers[irq];
    - if (handler)
    - handler(menelaus);
    - menelaus_enable_irq(irq);
    - mutex_unlock(&menelaus->lock);
    - }
    + unsigned isr;
    +
    + isr = (menelaus_read_reg(MENELAUS_INT_STATUS2)
    + & ~menelaus->mask2) << 8;
    + isr |= menelaus_read_reg(MENELAUS_INT_STATUS1)
    + & ~menelaus->mask1;
    +
    + while (isr) {
    + int irq = fls(isr) - 1;
    + isr &= ~(1 << irq);
    +
    + mutex_lock(&menelaus->lock);
    + menelaus_disable_irq(irq);
    + menelaus_ack_irq(irq);
    + handler = menelaus->handlers[irq];
    + if (handler)
    + handler(menelaus);
    + menelaus_enable_irq(irq);
    + mutex_unlock(&menelaus->lock);
    }

    return IRQ_HANDLED;
    --
    1.8.4.GIT


    \
     
     \ /
      Last update: 2013-11-27 20:41    [W:2.380 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site