
Stephen,
On Thu, Sep 13, 2012 at 1:02 PM, Stephen Warren swarren@wwwdotorg.org wrote:
On 09/12/2012 04:10 PM, Tom Warren wrote:
Patch descriptions would be nice.
Sure, sorry. Not sure how much more info I can add beyond what's in the commit msg, though, at least for this patch.
diff --git a/arch/arm/cpu/arm720t/tegra30/cpu.c b/arch/arm/cpu/arm720t/tegra30/cpu.c
There's quite a bit of Tegra20-support in this file. Can this file be shared with Tegra20 rather than forked and enhanced?
+/* Returns 1 if the current CPU executing is a Cortex-A9, else 0 */ +int cpu_is_cortexa9(void) +{
u32 id = readb(NV_PA_PG_UP_BASE + PG_UP_TAG_0);
return id == (PG_UP_TAG_0_PID_CPU & 0xff);
+}
Hmm. Given this is support for the AVP/COP running SPL, shouldn't this always be true? I thought Allen's SPL patches had cleaned this up.
Copied from tegra20/cpu.c - didn't notice it never gets called (same for Tegra20). So it's vestigial and can be removed.
+static void enable_cpu_power_rail(void) +{
struct pmc_ctlr *pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE;
u32 reg;
debug("enable_cpu_power_rail entry\n");
reg = readl(&pmc->pmc_cntrl);
reg |= CPUPWRREQ_OE;
writel(reg, &pmc->pmc_cntrl);
/*
* Pulse PWRREQ via I2C. We need to find out what this is
* doing, tidy up the code and maybe find a better place for it.
*/
tegra_i2c_ll_write_addr(0x005a, 0x0002);
tegra_i2c_ll_write_data(0x2328, 0x0a02);
udelay(1000);
tegra_i2c_ll_write_data(0x0127, 0x0a02);
udelay(10 * 1000);
Those functions access the DVC I2C controller's register space, so presumably they're doing I2C accesses. Not all boards use the same PMIC, so it seems like we really do need to factor this out.
It's in the original internal T30 repo for Cardhu, with a comment from Simon Glass that I edited somewhat. I haven't tried removing it to see if the board still boots.
/*
* The TI PMU65861C needs a 3.75ms delay between enabling
* the power rail and enabling the CPU clock. This delay
* between SM1EN and SM1 is for switching time + the ramp
* up of the voltage to the CPU (VDD_CPU from PMU). We use 0xf00 as
* is is ARM-friendly (can fit in a single ARMv4T mov immmediate
* instruction).
*/
udelay(3840);
The Cardhu board at least does not use the TPS65861. At the very least the comment isn't quite right. Is this code needed?
No idea - it's in our internal T30 bringup repo, as well as Simon's. I can try removing it and see if we power up consistently.
diff --git a/arch/arm/cpu/arm720t/tegra30/spl.c b/arch/arm/cpu/arm720t/tegra30/spl.c
+void board_init_f(ulong dummy) +{
board_init_uart_f();
/* Initialize periph GPIOs */
+#ifdef CONFIG_SPI_UART_SWITCH
gpio_early_init_uart();
+#else
gpio_config_uart();
+#endif
Didn't we have patches to get rid of that mess and just use the same function consistently across all boards, or was that only discussed and never actually implemented?
Someone on the list talked about a cleanup (Lucas? Thierry?), but, AFAIK, that never happened, or I would have put it in tegra/next. At the very least, it's not needed in Tegra30/spl.c, so I'll remove it/clean it up.
Thanks,
Tom