[U-Boot] Linux hangs due to commit v2015.10-15-g02cc27c on loading i2c-mv64xx

Hans de Goede hdegoede at redhat.com
Mon Mar 28 15:02:47 CEST 2016


Hi,

On 25-03-16 08:59, Michael Haas wrote:
> On 03/20/2016 08:15 PM, Hans de Goede wrote:
>>> I'm running Debian Jessie with Linux 4.3.0-0.bpo.1-armmp-lpae on my
>>> a20-olinuxino-lime2.
>>> I have noticed that my board hangs with my recent u-boot versions
>> when I
>>> load the i2c module.
>>>
>>> git-bisect narrowed the problem down to the following commit:
>>>
>>> 02cc27c74f9b884b538bcd1b93342a4c05b5d608 is the first bad commit
>>> commit 02cc27c74f9b884b538bcd1b93342a4c05b5d608
>>> Author: Hans de Goede <hdegoede at redhat.com>
>>> Date:   Sat Oct 3 15:29:24 2015 +0200
>>>
>>>     sunxi: power: Change axp209 LDO3 and LDO4 default to disabled
>>
>> <Snip>
>>
>>> The axp209 is attached to the i2c bus, so that is likely the real
>>> culprit. In my setup, the axp209 drivers are loaded before I insert
>>> i2c-mv64xxx.
>>>
>>> What would be the best course of action here?
>>>
>>> * Revert the commit
>>> * Enable LDO3 and LDO4 for the a20-olinuxino-lime2 only?
>>> * Fix linux
>>
>> I would go for option 3: "Fix linux", looking at the lime2 dts I see:
>>
>>                          vcc_csi0: ldo3 {
>>                                  regulator-min-microvolt = <700000>;
>>                                  regulator-max-microvolt = <3500000>;
>>                                  regulator-always-on;
>>                          };
>>
>>                          vcc_csi1: ldo4 {
>>                                  regulator-min-microvolt = <1250000>;
>>                                  regulator-max-microvolt = <3300000>;
>>                                  regulator-always-on;
>>                          };
>>
>> The regulator-always-on will cause both regulators to get turned on,
>> but the min / max constraints match the datasheet constrains / the
>> absolute min / max values these ldo-s can deliver, not the constraints
>> which the board design puts on these.
>>
>> So now these ldo-s end up getting turned on at whatever voltage
>> is the default (which according to the datasheet is unknown),
>> where as the schematic says that if these get turned on (which
>> is not necessary) they should be run at 2.8V.
>>
>> This dts file is the only axp209 using dts file which:
>>
>> 1) Does not have proper constraints for LDO3 / LDO4
>> 2) Uses regulator-always-on; for these
>>
>> I would suggest fixing both, first you can try making min = max =
>> 2800000. And if that fixes things, which I expect it will, I would
>> also drop the regulator-always-on from the dts, since we really
>> only need to turn these on when using the csi interface in which
>> case it would be up to the csi driver to explicitly turn them on.
>>
>
> Setting the voltage to 2.8V does not seem to fix things. Dropping the
> 'regulator-always-on' stance does allow me to
> load and use i2c-mv64xx and axp20x-i2c.
>
> Is that something I should submit upstream or is there further
> investigation needed why simply setting a proper voltage
> does not work?

See my reply in the kernel / dts patches thread about this,
TL;DR:

Lets change the Lime defconfig to enable ldo3/4 at 2800 mV in u-boot.

Regards,

Hans



More information about the U-Boot mailing list