hif/usb_api: remove dup code - _fw_usbfifo_recv_command
[open-ath9k-htc-firmware.git] / target_firmware / magpie_fw_dev / target / hif / usb_api_main_patch.c
index 1ff18c22a0654b5a726227ce1033613e5b8ddcd8..06e245147f5657969ba8e83b6a80bd8dbe942129 100644 (file)
@@ -1,3 +1,4 @@
+/* shared patches for k2 and magpie */
 
 #include "usb_defs.h"
 #include "usb_type.h"
 
 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)
 {