Messages in this thread | | | Subject | Re: [RESEND PATCH v2] mfd: twl6030: Fix endianness problem in IRQ handler | From | Joe Perches <> | Date | Mon, 23 Dec 2013 09:20:38 -0800 |
| |
On Mon, 2013-12-23 at 19:11 +0200, Taras Kondratiuk wrote: > From: Danke Xie <d.xie@sta.samsung.com> > > The current TWL 6030 IRQ handler assumes little endianness. > This change makes it endian-neutral. [] > diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c [] > @@ -196,8 +197,9 @@ static irqreturn_t twl6030_irq_thread(int irq, void *data) > if (sts.bytes[2] & 0x10) > sts.bytes[2] |= 0x08; > > - for (i = 0; sts.int_sts; sts.int_sts >>= 1, i++) > - if (sts.int_sts & 0x1) { > + int_sts = le32_to_cpu(sts.int_sts); > + for (i = 0; int_sts; int_sts >>= 1, i++) > + if (int_sts & 0x1) { > int module_irq = > irq_find_mapping(pdata->irq_domain, > pdata->irq_mapping_tbl[i]);
instead of the
for (...) { if (foo & 1) {
maybe using ffs would be better/faster
while ((bit = ffs(int_sts))) {
etc...
| |