X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=carlfw%2Fusb%2Fmain.c;h=48ece0e99d4455119229ed584b7908c686d02583;hb=e8448cf14674dafd86899f191475ea54b151d08a;hp=57f75a44162f93635161182b7a8cc5013f3d1fdd;hpb=0eb34487ee8e70ecb8e4ee2ed5092b2788eb7f26;p=carl9170fw.git diff --git a/carlfw/usb/main.c b/carlfw/usb/main.c index 57f75a4..48ece0e 100644 --- a/carlfw/usb/main.c +++ b/carlfw/usb/main.c @@ -224,6 +224,17 @@ static void turn_power_off(void) set(AR9170_MAC_REG_DMA_TRIGGER, 0); + andl(AR9170_USB_REG_DMA_CTL, ~(AR9170_USB_DMA_CTL_ENABLE_TO_DEVICE | + AR9170_USB_DMA_CTL_ENABLE_FROM_DEVICE | + AR9170_USB_DMA_CTL_UP_PACKET_MODE | + AR9170_USB_DMA_CTL_DOWN_STREAM)); + + /* Do a software reset to PTA component */ + orl(AR9170_PTA_REG_DMA_MODE_CTRL, AR9170_PTA_DMA_MODE_CTRL_RESET); + andl(AR9170_PTA_REG_DMA_MODE_CTRL, ~AR9170_PTA_DMA_MODE_CTRL_RESET); + + orl(AR9170_PTA_REG_DMA_MODE_CTRL, AR9170_PTA_DMA_MODE_CTRL_DISABLE_USB); + set(AR9170_MAC_REG_POWER_STATE_CTRL, AR9170_MAC_POWER_STATE_CTRL_RESET); @@ -277,11 +288,14 @@ void __noreturn reboot(void) orl(AR9170_PWR_REG_WATCH_DOG_MAGIC, 0x98760000); /* Disable watchdog */ - orl(AR9170_TIMER_REG_WATCH_DOG, 0xffff); + set(AR9170_TIMER_REG_WATCH_DOG, 0xffff); /* Turn off power */ turn_power_off(); + /* clean bootloader workspace */ + memset(&dma_mem, 0, sizeof(dma_mem)); + /* add by ygwei for work around USB PHY chirp sequence problem */ set(0x10f100, 0x12345678);