blob: 1522f5c5abebcee8a1e92c0a65075c4756bd065a [file] [log] [blame]
#include <common.h>
#include <command.h>
#include "platform.h"
#include "usb_pcd.h"
#include "usb_pcd.c"
#include "platform.c"
#include "dwc_pcd.c"
#include "dwc_pcd_irq.c"
DECLARE_GLOBAL_DATA_PTR;
int v2_usbburning(unsigned timeout)
{
int cfg = EXT_CLOCK;
#if defined(CONFIG_SILENT_CONSOLE)
gd->flags &= ~GD_FLG_SILENT;
#endif
printf("InUsbBurn\n");
set_usb_phy_config(cfg);
usb_parameter_init(timeout);
if (usb_pcd_init()) {
/*printf("Fail in usb_pcd_init\n");*/
return __LINE__;
}
#if (MESON_CPU_TYPE_MESON8 <= MESON_CPU_TYPE)
//AML_WATCH_DOG_DISABLE(); //disable watchdog
#endif// #if (MESON_CPU_TYPE_MESON8 <= MESON_CPU_TYPE)
while (1)
{
//watchdog_clear(); //Elvis Fool
if (usb_pcd_irq())
break;
}
return 0;
}
int do_v2_usbtool (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
int rc = 0;
unsigned timeout = (2 <= argc) ? simple_strtoul(argv[1], NULL, 0) : 0;
#if (defined AML_USB_BURN_TOOL)
//if get burning tool identify command in pcToolWaitTime, then auto jump into burning mode
unsigned pcToolWaitTime = (3 <= argc) ? simple_strtoul(argv[2], NULL, 0) : 0;
optimus_work_mode_set(OPTIMUS_WORK_MODE_USB_UPDATE);
setenv(_ENV_TIME_OUT_TO_AUTO_BURN, pcToolWaitTime ? argv[2] : "");
#else
/*#error "xxxx"*/
#endif// #if (defined AML_USB_BURN_TOOL)
rc = v2_usbburning(timeout);
/*close_usb_phy_clock(0);*/
return rc;
}
U_BOOT_CMD(
update, 3, 0, do_v2_usbtool,
"Enter v2 usbburning mode",
"usbburning timeout"
);