diff --git a/board/qca/arm/common/board_init.c b/board/qca/arm/common/board_init.c index 25274171e4..5c64017d08 100644 --- a/board/qca/arm/common/board_init.c +++ b/board/qca/arm/common/board_init.c @@ -44,6 +44,16 @@ int ipq_board_usb_init(void) { return 0; } +__weak +void board_usb_deinit(int id) +{ + return 0; +} +__weak +void board_pci_deinit(void) +{ + return 0; +} int board_init(void) { diff --git a/board/qca/arm/common/cmd_bootqca.c b/board/qca/arm/common/cmd_bootqca.c index 53451d0215..d85e1c63fe 100644 --- a/board/qca/arm/common/cmd_bootqca.c +++ b/board/qca/arm/common/cmd_bootqca.c @@ -41,6 +41,7 @@ static qca_smem_flash_info_t *sfi = &qca_smem_flash_info; int ipq_fs_on_nand ; extern int nand_env_device; extern qca_mmc mmc_host; +extern void board_usb_deinit(int id); #ifdef CONFIG_QCA_MMC static qca_mmc *host = &mmc_host; @@ -346,7 +347,7 @@ int config_select(unsigned int addr, char *rcmd, int rcmd_size) static int do_boot_signedimg(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) { char runcmd[256]; - int ret; + int ret,i; unsigned int request; #ifdef CONFIG_QCA_MMC block_dev_desc_t *blk_dev; @@ -481,6 +482,11 @@ static int do_boot_signedimg(cmd_tbl_t *cmdtp, int flag, int argc, char *const a #endif board_pci_deinit(); +#ifdef CONFIG_USB_XHCI_IPQ + for (i=0; ibd); +#endif +#ifdef CONFIG_USB_XHCI_IPQ + ipq_board_usb_init(); #endif dcache_disable(); return CMD_RET_FAILURE; @@ -503,7 +512,7 @@ static int do_boot_signedimg(cmd_tbl_t *cmdtp, int flag, int argc, char *const a static int do_boot_unsignedimg(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) { - int ret; + int ret,i; char runcmd[256]; #ifdef CONFIG_QCA_MMC block_dev_desc_t *blk_dev; @@ -615,6 +624,12 @@ static int do_boot_unsignedimg(cmd_tbl_t *cmdtp, int flag, int argc, char *const board_pci_deinit(); +#ifdef CONFIG_USB_XHCI_IPQ + for (i=0; i