[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