
On 01/22/2013 01:46 PM, Tom Warren wrote:
Stephen,
On Fri, Jan 18, 2013 at 5:09 PM, Stephen Warren swarren@wwwdotorg.org wrote:
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).
I agree with your analysis. How about if I remove get_cluster_id(), and just set the power partitions for the fast cluster?
I think that makes sense, yes.