aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/mfd/abx500-core.c12
-rw-r--r--include/linux/mfd/abx500.h2
2 files changed, 9 insertions, 5 deletions
diff --git a/drivers/mfd/abx500-core.c b/drivers/mfd/abx500-core.c
index f3a15aa54d7b..d6d0ec4d21e4 100644
--- a/drivers/mfd/abx500-core.c
+++ b/drivers/mfd/abx500-core.c
@@ -151,19 +151,23 @@ int abx500_startup_irq_enabled(struct device *dev, unsigned int irq)
}
EXPORT_SYMBOL(abx500_startup_irq_enabled);
-void abx500_dump_all_banks(void)
+int abx500_dump_all_banks(void)
{
struct abx500_ops *ops;
- struct device dummy_child = {NULL};
+ struct device *dummy_child;
struct abx500_device_entry *dev_entry;
+ dummy_child = kzalloc(sizeof(struct device), GFP_KERNEL);
+ if (!dummy_child)
+ return -ENOMEM;
list_for_each_entry(dev_entry, &abx500_list, list) {
- dummy_child.parent = dev_entry->dev;
+ dummy_child->parent = dev_entry->dev;
ops = &dev_entry->ops;
if ((ops != NULL) && (ops->dump_all_banks != NULL))
- ops->dump_all_banks(&dummy_child);
+ ops->dump_all_banks(dummy_child);
}
+ kfree(dummy_child);
}
EXPORT_SYMBOL(abx500_dump_all_banks);
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h
index 3301b2031c8d..df2508f7f3d2 100644
--- a/include/linux/mfd/abx500.h
+++ b/include/linux/mfd/abx500.h
@@ -330,7 +330,7 @@ int abx500_mask_and_set_register_interruptible(struct device *dev, u8 bank,
int abx500_get_chip_id(struct device *dev);
int abx500_event_registers_startup_state_get(struct device *dev, u8 *event);
int abx500_startup_irq_enabled(struct device *dev, unsigned int irq);
-void abx500_dump_all_banks(void);
+int abx500_dump_all_banks(void);
struct abx500_ops {
int (*get_chip_id) (struct device *);