Hi Dileep, > Signed-off-by: Angela Stegmaier <angelaba...@ti.com> > Signed-off-by: Dileep Katta <dileep.ka...@linaro.org> > --- > board/ti/dra7xx/Makefile | 1 + > board/ti/dra7xx/fastboot.c | 45 > ++++++++++++++++++++++++++++++++++++ > common/cmd_bootm.c | 5 ++++ > drivers/usb/gadget/f_fastboot.c | 5 ++++ > include/configs/dra7xx_evm_android.h | 14 +++++++++++ 5 files > changed, 70 insertions(+) create mode 100644 > board/ti/dra7xx/fastboot.c > > diff --git a/board/ti/dra7xx/Makefile b/board/ti/dra7xx/Makefile > index 434e8d1..ae730ae 100644 > --- a/board/ti/dra7xx/Makefile > +++ b/board/ti/dra7xx/Makefile > @@ -6,3 +6,4 @@ > # > > obj-y := evm.o > +obj-$(CONFIG_CMD_FASTBOOT) += fastboot.o > diff --git a/board/ti/dra7xx/fastboot.c b/board/ti/dra7xx/fastboot.c > new file mode 100644 > index 0000000..e05010d > --- /dev/null > +++ b/board/ti/dra7xx/fastboot.c > @@ -0,0 +1,45 @@ > +/* > + * (C) Copyright 2013 > + * Texas Instruments Incorporated, <www.ti.com> > + * > + * Lokesh Vutla <lokeshvu...@ti.com> > + * > + * Based on previous work by: > + * Aneesh V <ane...@ti.com> > + * Steve Sakoman <st...@sakoman.com> > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > +#include <common.h> > +#include <asm/io.h> > +#include <asm-generic/gpio.h> > +#include <config.h> > + > + > +int fb_set_reboot_flag(void) > +{ > + /* clear all reset events */ > + __raw_writel(DRA7XX_PRM_RSTST_CLR, PRM_RSTST); > + strncpy((char *)DRA7XX_PUBLIC_SAR_RAM_1_FREE, "bootloader", > + DRA7XX_REBOOT_REASON_SIZE - 1); > + *(((char *)DRA7XX_PUBLIC_SAR_RAM_1_FREE) + > + DRA7XX_REBOOT_REASON_SIZE - 1) = > '\0'; > + /* trigger warm reset */ > + __raw_writel(DRA7XX_PRM_RSTCTRL_RESET_WARM_BIT, > DRA7XX_PRM_RSTCTRL); + > + return 0; > +} > + > +int fb_check_reboot_flag(void) > +{ > + /* Check if we are coming from a warm reset */ > + if (__raw_readl(DRA7XX_PRM_RSTST) & > DRA7XX_PRM_RSTST_RESET_WARM_BIT) > + if (!strncmp((const char > *)DRA7XX_PUBLIC_SAR_RAM_1_FREE, > + "bootloader", > DRA7XX_REBOOT_REASON_SIZE)) { > + strncpy((char > *)DRA7XX_PUBLIC_SAR_RAM_1_FREE, "", > + DRA7XX_REBOOT_REASON_SIZE); > + return 0; > + } > + > + return 1; > +} > diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c > index 48199bf..00791be 100644 > --- a/common/cmd_bootm.c > +++ b/common/cmd_bootm.c > @@ -729,6 +729,11 @@ int do_booti(cmd_tbl_t *cmdtp, int flag, int > argc, char * const argv[]) { > int ret; > > +#if defined(CONFIG_CMD_FASTBOOT) > + if (!fb_check_reboot_flag()) > + do_fastboot(cmdtp, flag, argc, argv); > +#endif > + > /* Consume 'booti' */ > argc--; argv++; > > diff --git a/drivers/usb/gadget/f_fastboot.c > b/drivers/usb/gadget/f_fastboot.c index 206b6d1..a450357 100644 > --- a/drivers/usb/gadget/f_fastboot.c > +++ b/drivers/usb/gadget/f_fastboot.c > @@ -332,6 +332,11 @@ int __weak fb_set_reboot_flag(void) > return -ENOSYS; > } > > +int __weak fb_check_reboot_flag(void) > +{ > + return -ENOSYS; > +} > + > static void cb_reboot(struct usb_ep *ep, struct usb_request *req) > { > char *cmd = req->buf; > diff --git a/include/configs/dra7xx_evm_android.h > b/include/configs/dra7xx_evm_android.h index 68e7eec..2038e00 100644 > --- a/include/configs/dra7xx_evm_android.h > +++ b/include/configs/dra7xx_evm_android.h > @@ -310,4 +310,18 @@ > #endif > #endif /* NOR support */ > > +#define DRA7XX_PUBLIC_SAR_RAM_1_FREE (0x4AE26000 + 0xFE0) > +#define DRA7XX_PRM_RSTCTRL_RESET_WARM_BIT (1<<0) > +#define DRA7XX_PRM_RSTST_RESET_WARM_BIT (1<<1) > +#define DRA7XX_PRM_RSTST 0x4AE07D04 > +#define DRA7XX_PRM_RSTCTRL 0x4AE07D00 > +#define DRA7XX_PRM_RSTST_CLR 0xfff > +#define DRA7XX_REBOOT_REASON_SIZE 0xf > + > +#define CONFIG_BOARD_MACH_TYPE 4070 > +#define MEMORY_BASE 0x80000000 > +#define CONFIG_ADDR_ATAGS (MEMORY_BASE + 0x100) > +#define CONFIG_ADDR_DOWNLOAD (MEMORY_BASE + > 0x02000000) +#define DEVICE_TREE > 0x82f80000 + > #endif /* __CONFIG_DRA7XX_EVM_ANDROID_H */
Reviewed-by: Lukasz Majewski <l.majew...@samsung.com> -- Best regards, Lukasz Majewski Samsung R&D Institute Poland (SRPOL) | Linux Platform Group _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot