[PATCH 1/4] arm: msm: gpio support

Arve Hjønnevåg arve at android.com
Tue Mar 30 21:14:12 EDT 2010


On Tue, Mar 30, 2010 at 4:58 PM, H Hartley Sweeten
<hartleys at visionengravers.com> wrote:
> On Tuesday, March 30, 2010 4:12 PM, Daniel Walker wrote:
>> From: Daniel Walker <c_dwalke at quicinc.com>
...
>> +
>> +static void msm_gpio_irq_ack(unsigned int irq)
>> +{
>> +     unsigned long irq_flags;
>> +     struct msm_gpio_chip *msm_chip = get_irq_chip_data(irq);
>> +     unsigned b;
>> +
>> +     spin_lock_irqsave(&msm_chip->lock, irq_flags);
>> +
>> +     b = 1U << (irq - FIRST_GPIO_IRQ - msm_chip->chip.base);
>
> Urk... That's a bit confusing...
>
> You might want to make this a macro or an inline function with some kind
> of comment.
>

On a related note, why did you inline msm_gpio_clear_detect_status? It
is used from two other functions.

>> +
>> +#if MSM_GPIO_BROKEN_INT_CLEAR
>> +     /* Save interrupts that already triggered before we loose them. */
>> +     /* Any interrupt that triggers between the read of int_status */
>> +     /* and the write to int_clear will still be lost though. */
>> +     msm_chip->int_status_copy |= readl(msm_chip->regs.int_status);
>> +     msm_chip->int_status_copy &= ~b;
>> +#endif
>> +     writel(b, msm_chip->regs.int_clear);
>> +
>> +     msm_gpio_update_both_edge_detect(msm_chip);
>> +     spin_unlock_irqrestore(&msm_chip->lock, irq_flags);
>> +}
>> +
...

-- 
Arve Hjønnevåg



More information about the linux-arm-kernel mailing list