[PATCH v3 4/5] ARM: tegra: set CPU reset handler with firmware op
From: Alexandre Courbot <hidden>
Date: 2013-08-18 08:37:32
Also in:
linux-tegra, lkml
On Thu, Aug 15, 2013 at 6:40 AM, Stephen Warren [off-list ref] wrote:
On 08/12/2013 08:29 PM, Alexandre Courbot wrote:quoted
Use a firmware operation to set the CPU reset handler and only resort to doing it ourselves if there is none defined. This supports the booting of secondary CPUs on devices using a TrustZone secure monitor.quoted
diff --git a/arch/arm/mach-tegra/reset.c b/arch/arm/mach-tegra/reset.cquoted
+ err = call_firmware_op(set_cpu_boot_addr, 0, reset_address); + switch (err) { + case -ENOSYS: + tegra_cpu_reset_handler_set(reset_address); + /* pass-through */ + case 0: + is_enabled = true; + break; + default: + pr_crit("Cannot set CPU reset handler: %d\n", err); + BUG(); + }Instead of trying and failing, does it make sense to register tegra_cpu_reset_handler_set() as the set_cpu_boot_addr firmware op when there is no firmware present? That would simplify all call-sites of any firmware op.
We discussed that point in v2 already IIRC (that is some time ago). The reason I did it this way is because I wanted to follow the way Tomasz was using his interface with Exynos - it seemed appropriate that all users of an interface use it the same way. But if you prefer to use a "non-firmware" firmware_ops for Tegra, I have absolutely nothing against this. Thanks, Alex.