X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=carlfw%2Fusb%2Fmain.c;h=890970c24ab237a7cd596eb8eb1903ecc04cc7e1;hb=aad02e753490f33725d407b63b31e76c58f01caa;hp=5c09476b29a5592b63906c21067d70ce25969a41;hpb=1765258283f5fc36987ae44cdd516163290629e0;p=carl9170fw.git diff --git a/carlfw/usb/main.c b/carlfw/usb/main.c index 5c09476..890970c 100644 --- a/carlfw/usb/main.c +++ b/carlfw/usb/main.c @@ -23,12 +23,13 @@ #include "carl9170.h" +#include "shared/phy.h" #include "hostif.h" #include "printf.h" #include "timer.h" #include "rom.h" #include "wl.h" -#include "shared/phy.h" +#include "wol.h" #ifdef CONFIG_CARL9170FW_DEBUG_USB void usb_putc(const char c) @@ -245,7 +246,7 @@ static void turn_power_off(void) AR9170_PWR_RESET_WLAN_MASK); set(AR9170_PWR_REG_RESET, 0x0); - set(AR9170_PWR_REG_CLOCK_SEL, AHB_40MHZ_OSC); + clock_set(AHB_20_22MHZ, false); set(AR9170_PWR_REG_PLL_ADDAC, 0x5163); /* 0x502b; */ set(AR9170_PHY_REG_ADC_SERIAL_CTL, AR9170_PHY_ADC_SCTL_SEL_EXTERNAL_RADIO); @@ -384,14 +385,22 @@ static void usb_handler(uint8_t usb_interrupt_level1) fw.suspend_mode = CARL9170_HOST_SUSPENDED; - if (!(fw.usb.device_feature & USB_DEVICE_REMOTE_WAKEUP)) { +#ifdef CONFIG_CARL9170FW_WOL + if (!(fw.usb.device_feature & USB_DEVICE_REMOTE_WAKEUP) || + !fw.wol.cmd.flags) { disable_watchdog(); /* GO_TO_SUSPEND stops the CPU clock too. */ orb(AR9170_USB_REG_MAIN_CTRL, AR9170_USB_MAIN_CTRL_GO_TO_SUSPEND); } else { - wlan_prepare_wol(); + wol_prepare(); } +#else /* CONFIG_CARL9170FW_WOL */ + disable_watchdog(); + + /* GO_TO_SUSPEND stops the CPU clock too. */ + orb(AR9170_USB_REG_MAIN_CTRL, AR9170_USB_MAIN_CTRL_GO_TO_SUSPEND); +#endif /* CONFIG_CARL9170FW_WOL */ } if (usb_interrupt_level2 & AR9170_USB_INTR_SRC7_USB_RESUME) {