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

Hans de Goede hdegoede at redhat.com
Wed Jan 14 09:21:09 CET 2015


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 at redhat.com>
> Acked-by: Ian Campbell <ijc at 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;
>>   }
>>
>
>


More information about the U-Boot mailing list