|
@@ -176,8 +176,9 @@ static irqreturn_t twl6030_irq_thread(int irq, void *data)
|
|
|
int i, ret;
|
|
|
union {
|
|
|
u8 bytes[4];
|
|
|
- u32 int_sts;
|
|
|
+ __le32 int_sts;
|
|
|
} sts;
|
|
|
+ u32 int_sts; /* sts.int_sts converted to CPU endianness */
|
|
|
struct twl6030_irq *pdata = data;
|
|
|
|
|
|
/* read INT_STS_A, B and C in one shot using a burst read */
|
|
@@ -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]);
|