Modified: trunk/drivers/mfd/adp5520.c (6198 => 6199)
--- trunk/drivers/mfd/adp5520.c 2009-03-17 16:31:09 UTC (rev 6198)
+++ trunk/drivers/mfd/adp5520.c 2009-03-17 17:30:18 UTC (rev 6199)
@@ -75,12 +75,12 @@
mutex_lock(&chip->lock);
ret = __adp5520_read(client, reg, ®_val);
- if (ret)
- goto out;
- reg_val |= bit_mask;
- ret = __adp5520_write(client, reg, reg_val);
-out:
+ if (!ret) {
+ reg_val |= bit_mask;
+ ret = __adp5520_write(client, reg, reg_val);
+ }
+
mutex_unlock(&chip->lock);
return ret;
}
@@ -106,14 +106,12 @@
mutex_lock(&chip->lock);
ret = __adp5520_read(chip->client, reg, ®_val);
- if (ret)
- goto out;
- if ((reg_val & bit_mask) == 0) {
+ if (!ret && ((reg_val & bit_mask) == 0)) {
reg_val |= bit_mask;
ret = __adp5520_write(chip->client, reg, reg_val);
}
-out:
+
mutex_unlock(&chip->lock);
return ret;
}
@@ -128,14 +126,12 @@
mutex_lock(&chip->lock);
ret = __adp5520_read(chip->client, reg, ®_val);
- if (ret)
- goto out;
- if (reg_val & bit_mask) {
+ if (!ret && (reg_val & bit_mask)) {
reg_val &= ~bit_mask;
ret = __adp5520_write(chip->client, reg, reg_val);
}
-out:
+
mutex_unlock(&chip->lock);
return ret;
}
@@ -150,7 +146,8 @@
adp5520_set_bits(chip->dev, INTERRUPT_ENABLE,
events & (KP_IEN | KR_IEN | OVP_IEN | CMPR_IEN));
- return blocking_notifier_chain_register(&chip->notifier_list, nb);
+ return blocking_notifier_chain_register(&chip->notifier_list,
+ nb);
}
return -ENODEV;
@@ -251,7 +248,12 @@
return -EIO;
}
- chip = kzalloc(sizeof(struct adp5520_chip), GFP_KERNEL);
+ if (pdata == NULL) {
+ dev_err(&client->dev, "missing platform data\n");
+ return -ENODEV;
+ }
+
+ chip = kzalloc(sizeof(*chip), GFP_KERNEL);
if (!chip)
return -ENOMEM;