[U-Boot] [PATCH 01/17] sunxi: axp221: Protect axp221_init against multiple calls

Hans de Goede
2015-01-14T08:21:09Z

Hi,

On 13-01-15 19:49, Ian Campbell wrote:
> 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>

Thanks for the reviews. I've queued up the first 5 patches of this series
in u-boot-sunxi/next. I'll likely send a pull-req with everything we've in next
later today.

Regards,

Hans

>
>> ---
>> 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;
>> }
>>
>
>