source: trunk/target/linux/omap24xx/patches-3.1/252-cbus-retu-tahvo-ack-fix.patch @ 29233

Last change on this file since 29233 was 29233, checked in by mb, 5 years ago

omap24xx: Some retu/tahvo IRQ fixes

File size: 1.7 KB
  • drivers/cbus/retu.c

    old new struct retu { 
    5454        int                     irq; 
    5555 
    5656        int                     ack; 
    57         bool                    ack_pending; 
    58  
    5957        int                     mask; 
    6058        bool                    mask_pending; 
    6159 
    static void retu_irq_ack(struct irq_data 
    238236        int                     irq = data->irq; 
    239237 
    240238        retu->ack |= (1 << (irq - retu->irq_base)); 
    241         retu->ack_pending = true; 
    242239} 
    243240 
    244241static void retu_bus_lock(struct irq_data *data) 
    static void retu_bus_sync_unlock(struct 
    257254                retu->mask_pending = false; 
    258255        } 
    259256 
    260         if (retu->ack_pending) { 
     257        if (retu->ack) { 
    261258                __retu_write_reg(retu, RETU_REG_IDR, retu->ack); 
    262                 retu->ack_pending = false; 
     259                retu->ack = 0; 
    263260        } 
    264261 
    265262        mutex_unlock(&retu->mutex); 
  • drivers/cbus/tahvo.c

    old new struct tahvo { 
    5252        int             mask; 
    5353 
    5454        unsigned int    mask_pending:1; 
    55         unsigned int    ack_pending:1; 
    5655        unsigned int    is_betty:1; 
    5756}; 
    5857 
    static void tahvo_irq_bus_sync_unlock(st 
    177176                tahvo->mask_pending = false; 
    178177        } 
    179178 
    180         if (tahvo->ack_pending) { 
     179        if (tahvo->ack) { 
    181180                __tahvo_write_reg(tahvo, TAHVO_REG_IDR, tahvo->ack); 
    182                 tahvo->ack_pending = false; 
     181                tahvo->ack = 0; 
    183182        } 
    184183 
    185184        mutex_unlock(&tahvo->mutex); 
    static void tahvo_irq_ack(struct irq_dat 
    209208        int                     irq = data->irq; 
    210209 
    211210        tahvo->ack |= (1 << (irq - tahvo->irq_base)); 
    212         tahvo->ack_pending = true; 
    213211} 
    214212 
    215213static struct irq_chip tahvo_irq_chip = { 
Note: See TracBrowser for help on using the repository browser.