[U-Boot] [PATCH 2/2] bcm: fastboot: implement 'reboot-bootloader'
Steve Rae
steve.rae at raedomain.com
Sun Sep 25 03:01:54 CEST 2016
On Aug 23, 2016 16:39, "Steve Rae" <steve.rae at raedomain.com> wrote:
>
> on bcm235xx and bcm281xx boards
>
> Signed-off-by: Steve Rae <steve.rae at raedomain.com>
> ---
>
> board/broadcom/bcm23550_w1d/bcm23550_w1d.c | 30
++++++++++++++++++++++++++++++
> board/broadcom/bcm28155_ap/bcm28155_ap.c | 30
++++++++++++++++++++++++++++++
> 2 files changed, 60 insertions(+)
>
> diff --git a/board/broadcom/bcm23550_w1d/bcm23550_w1d.c
b/board/broadcom/bcm23550_w1d/bcm23550_w1d.c
> index 0cb059f..ec0956c 100644
> --- a/board/broadcom/bcm23550_w1d/bcm23550_w1d.c
> +++ b/board/broadcom/bcm23550_w1d/bcm23550_w1d.c
> @@ -26,6 +26,9 @@
> #define CONFIG_USB_SERIALNO "1234567890"
> #endif
>
> +#define FB_REBOOT_FLAG_BITS 0x05
> +#define FB_REBOOT_FLAG_LOCATION 0x34051f80
> +
> DECLARE_GLOBAL_DATA_PTR;
>
> /*
> @@ -118,3 +121,30 @@ int board_usb_cleanup(int index, enum usb_init_type
init)
> return 0;
> }
> #endif
> +
> +int fb_set_reboot_flag(void)
> +{
> + /* set 'reboot-bootloader' bits */
> + writel(readl(FB_REBOOT_FLAG_LOCATION) | FB_REBOOT_FLAG_BITS,
> + FB_REBOOT_FLAG_LOCATION);
> + printf("%s: 0x%08x @ 0x%08x\n", __func__,
> + readl(FB_REBOOT_FLAG_LOCATION), FB_REBOOT_FLAG_LOCATION);
> + return 0;
> +}
> +
> +void fb_handle_reboot_flag(void)
> +{
> + int run_fastboot = (readl(FB_REBOOT_FLAG_LOCATION) &
> + FB_REBOOT_FLAG_BITS ? 1 : 0);
> +
> + if (run_fastboot) {
> + printf("\n%s: performing: 'fastboot 0'\n", __func__);
> +
> + /* clear 'reboot-bootloader' bits */
> + writel(readl(FB_REBOOT_FLAG_LOCATION) &
~(FB_REBOOT_FLAG_BITS),
> + FB_REBOOT_FLAG_LOCATION);
> +
> + /* process 'reboot-bootloader' request */
> + run_command("fastboot 0", 0);
> + }
> +}
> diff --git a/board/broadcom/bcm28155_ap/bcm28155_ap.c
b/board/broadcom/bcm28155_ap/bcm28155_ap.c
> index b3a4a41..5ac9569 100644
> --- a/board/broadcom/bcm28155_ap/bcm28155_ap.c
> +++ b/board/broadcom/bcm28155_ap/bcm28155_ap.c
> @@ -26,6 +26,9 @@
> #define CONFIG_USB_SERIALNO "1234567890"
> #endif
>
> +#define FB_REBOOT_FLAG_BITS 0x05
> +#define FB_REBOOT_FLAG_LOCATION 0x34053f98
> +
> DECLARE_GLOBAL_DATA_PTR;
>
> /*
> @@ -125,3 +128,30 @@ int board_usb_cleanup(int index, enum usb_init_type
init)
> return 0;
> }
> #endif
> +
> +int fb_set_reboot_flag(void)
> +{
> + /* set 'reboot-bootloader' bits */
> + writel(readl(FB_REBOOT_FLAG_LOCATION) | FB_REBOOT_FLAG_BITS,
> + FB_REBOOT_FLAG_LOCATION);
> + printf("%s: 0x%08x @ 0x%08x\n", __func__,
> + readl(FB_REBOOT_FLAG_LOCATION), FB_REBOOT_FLAG_LOCATION);
> + return 0;
> +}
> +
> +void fb_handle_reboot_flag(void)
> +{
> + int run_fastboot = (readl(FB_REBOOT_FLAG_LOCATION) &
> + FB_REBOOT_FLAG_BITS ? 1 : 0);
> +
> + if (run_fastboot) {
> + printf("\n%s: performing: 'fastboot 0'\n", __func__);
> +
> + /* clear 'reboot-bootloader' bits */
> + writel(readl(FB_REBOOT_FLAG_LOCATION) &
~(FB_REBOOT_FLAG_BITS),
> + FB_REBOOT_FLAG_LOCATION);
> +
> + /* process 'reboot-bootloader' request */
> + run_command("fastboot 0", 0);
> + }
> +}
> --
> 1.8.5
>
ping...
More information about the U-Boot
mailing list