[U-Boot] [PATCH v2 2/7] Tegra114: Add AVP (arm720t) files

Stephen Warren swarren at wwwdotorg.org
Sat Jan 19 01:09:34 CET 2013


On 01/18/2013 05:01 PM, Stephen Warren wrote:
> On 01/18/2013 02:12 PM, Tom Warren wrote:
>> This provides SPL support for T114 boards - AVP early init, plus
>> CPU (A15) init/jump to main U-Boot.
> 
>> +void powerup_cpus(void)
>> +{
>> +	debug("powerup_cpus entry\n");
>> +
>> +	/* Are we booting to the fast cluster? */
>> +	if (get_cluster_id() == 0) {
>> +		debug("powerup_cpus entry: G cluster\n");
>> +		/* Power up the fast cluster rail partition */
>> +		power_partition(CRAIL, CRAILID);
>> +
>> +		/* Power up the fast cluster non-CPU partition */
>> +		power_partition(C0NC, C0NCID);
>> +
>> +		/* Power up the fast cluster CPU0 partition */
>> +		power_partition(CE0, CE0ID);
>> +	} else {
>> +		debug("powerup_cpus entry: LP cluster\n");
>> +		/* Power up the slow cluster non-CPU partition */
>> +		power_partition(C1NC, C1NCID);
>> +
>> +		/* Power up the slow cluster CPU partition */
>> +		power_partition(CELP, CELPID);
>> +	}
>> +}
> 
> I strongly believe we should determine why that is needed rather than
> blindly upstreaming it.

Thinking about this more, this makes even less sense. When Tegra boots,
code runs on the AVP. That code is U-Boot. U-Boot then boots the A15
cores, and hence U-Boot is what decides whether to boot the LP or G
cluster; it doesn't follow some decision by some other SW since there is
no other SW.

The only possible exception to this might be resume from some low-power
state where you want to restart the same A15 cluster as was running
prior to entering sleep. But that would require the flow controller
register read by get_cluster_id() to be in an always-on power domain.
I'm not sure if that's true or not. (If it isnt', presumably the
power-on state would always be static, hence there would be no need to
read the register).


More information about the U-Boot mailing list