X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=target_firmware%2Fmagpie_fw_dev%2Ftarget%2Fhif%2Fusb_api_main_patch.c;h=06e245147f5657969ba8e83b6a80bd8dbe942129;hb=55c815f8e7875958d6b8e5863aea6d5aa871d884;hp=1ff18c22a0654b5a726227ce1033613e5b8ddcd8;hpb=1702f968d7c3399352b7f2695e45c2daac265222;p=open-ath9k-htc-firmware.git diff --git a/target_firmware/magpie_fw_dev/target/hif/usb_api_main_patch.c b/target_firmware/magpie_fw_dev/target/hif/usb_api_main_patch.c index 1ff18c2..06e2451 100644 --- a/target_firmware/magpie_fw_dev/target/hif/usb_api_main_patch.c +++ b/target_firmware/magpie_fw_dev/target/hif/usb_api_main_patch.c @@ -1,3 +1,4 @@ +/* shared patches for k2 and magpie */ #include "usb_defs.h" #include "usb_type.h" @@ -15,6 +16,34 @@ extern USB_FIFO_CONFIG usbFifoConf; extern Action eUsbCxFinishAction; +extern void _fw_usb_suspend_reboot(); + +typedef void (* USBFIFO_recv_command)(VBUF *cmd); +USBFIFO_recv_command m_origUsbfifoRecvCmd = NULL; + +void _fw_usbfifo_recv_command(VBUF *buf) +{ + uint8_t *cmd_data; + uint32_t tmp; + + cmd_data = (uint8_t *)(buf->desc_list->buf_addr + + buf->desc_list->data_offset); + tmp = *((uint32_t *)cmd_data); + if (tmp == 0xFFFFFFFF) + _fw_usb_suspend_reboot(); + else + m_origUsbfifoRecvCmd(buf); +} + +void _fw_usbfifo_init(USB_FIFO_CONFIG *pConfig) +{ + m_origUsbfifoRecvCmd = pConfig->recv_command; + + usbFifoConf.get_command_buf = pConfig->get_command_buf; + usbFifoConf.recv_command = _fw_usbfifo_recv_command; + usbFifoConf.get_event_buf = pConfig->get_event_buf; + usbFifoConf.send_event_done = pConfig->send_event_done; +} void cold_reboot(void) {