sunxi: axp221: Protect axp221_init against multiple calls
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>
This commit is contained in:
parent
52755b12e3
commit
3c781190d1
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue