Merge tag 'fixes-for-v3.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi...
[cascardo/linux.git] / drivers / mfd / twl4030-irq.c
index cdd1173..a5f9888 100644 (file)
@@ -295,8 +295,8 @@ static irqreturn_t handle_twl4030_pih(int irq, void *devid)
        irqreturn_t     ret;
        u8              pih_isr;
 
-       ret = twl_i2c_read_u8(TWL4030_MODULE_PIH, &pih_isr,
-                       REG_PIH_ISR_P1);
+       ret = twl_i2c_read_u8(TWL_MODULE_PIH, &pih_isr,
+                             REG_PIH_ISR_P1);
        if (ret) {
                pr_warning("twl4030: I2C error %d reading PIH ISR\n", ret);
                return IRQ_NONE;
@@ -501,7 +501,7 @@ static void twl4030_sih_bus_sync_unlock(struct irq_data *data)
                } imr;
 
                /* byte[0] gets overwritten as we write ... */
-               imr.word = cpu_to_le32(agent->imr << 8);
+               imr.word = cpu_to_le32(agent->imr);
                agent->imr_change_pending = false;
 
                /* write the whole mask ... simpler than subsetting it */
@@ -526,7 +526,7 @@ static void twl4030_sih_bus_sync_unlock(struct irq_data *data)
                 * any processor on the other IRQ line, EDR registers are
                 * shared.
                 */
-               status = twl_i2c_read(sih->module, bytes + 1,
+               status = twl_i2c_read(sih->module, bytes,
                                sih->edr_offset, sih->bytes_edr);
                if (status) {
                        pr_err("twl4030: %s, %s --> %d\n", __func__,
@@ -538,7 +538,7 @@ static void twl4030_sih_bus_sync_unlock(struct irq_data *data)
                while (edge_change) {
                        int             i = fls(edge_change) - 1;
                        struct irq_data *idata;
-                       int             byte = 1 + (i >> 2);
+                       int             byte = i >> 2;
                        int             off = (i & 0x3) * 2;
                        unsigned int    type;