On 11/02/2016 03:36 AM, Alexander Graf wrote:
The rpi has a pretty simple way of resetting the whole system. All it takes
is to poke a few registers at a well defined location in MMIO space.

This patch adds support for the EFI loader implementation to allow an OS to
reset and power off the system when we're outside of boot time.

(As an aside, I'm not sure why someone wanting EFI wouldn't just use a complete EFI implementation such as TianoCore.)

diff --git a/arch/arm/mach-bcm283x/reset.c b/arch/arm/mach-bcm283x/reset.c

+__efi_runtime_data struct bcm2835_wdog_regs *wdog_regs =
+       (struct bcm2835_wdog_regs *)BCM2835_WDOG_PHYSADDR;
+
+void __efi_runtime reset_cpu(ulong addr)
 {
-       struct bcm2835_wdog_regs *regs =
-               (struct bcm2835_wdog_regs *)BCM2835_WDOG_PHYSADDR;

I'm not sure why that change is required. The value of the variable is the same in both cases?

Perhaps it's trying to ensure that if this gets compiled into an ldr instruction, the referenced data value is in a linker section that's still around when EFI runs? If so fine, but how is that ensured for all the other constants that this code uses, and if that happens automatically due to the __efi_runtime marker above, why doesn't it work for this one constant?

Does U-Boot have a halt/poweroff/shutdown shell command? If so, it might be nice to enable it as part of this series, since the code to perform that operation is now present.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to