
On Sun, 2015-01-11 at 20:34 +0100, Hans de Goede wrote:
The voltage setting code knows it needs to call axp221_init before calling the various voltage setting functions.
But users of axp utility functions like axp221_get_sid() do not know this, so the utility functions always call axp221_init() to ensure that the p2wi / rsb setup magic has been done.
Since doing this repeatedly is quite expensive, add a check to axp221_init so that it only does the initialization once.
Signed-off-by: Hans de Goede hdegoede@redhat.com
Acked-by: Ian Campbell ijc@hellion.org.uk
drivers/power/axp221.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/drivers/power/axp221.c b/drivers/power/axp221.c index 1fda19a..728727b 100644 --- a/drivers/power/axp221.c +++ b/drivers/power/axp221.c @@ -304,9 +304,14 @@ int axp221_set_aldo3(unsigned int mvolt)
int axp221_init(void) {
/* This cannot be 0 because it is used in SPL before BSS is ready */
static int needs_init = 1; u8 axp_chip_id; int ret;
if (!needs_init)
return 0;
ret = pmic_bus_init(); if (ret) return ret;
@@ -318,6 +323,7 @@ int axp221_init(void) if (!(axp_chip_id == 0x6 || axp_chip_id == 0x7 || axp_chip_id == 0x17)) return -ENODEV;
- needs_init = 0; return 0;
}