hif/usb_api: remove dup code - _fw_usbfifo_recv_command
[open-ath9k-htc-firmware.git] / target_firmware / magpie_fw_dev / target / rompatch / usb_api_patch.c
index b95fce7a566e7b530c17253697c35c3f98c41a86..52c692e3074bd0d834ccd5834c12a7bbcd8b8c69 100755 (executable)
@@ -46,8 +46,6 @@
 #define measure_time 0
 #define measure_time_pll 10000000
 
-typedef void (* USBFIFO_recv_command)(VBUF *cmd);
-
 extern Action eUsbCxFinishAction;
 extern CommandType eUsbCxCommand;
 extern BOOLEAN UsbChirpFinish;
@@ -55,8 +53,6 @@ extern USB_FIFO_CONFIG usbFifoConf;
 extern uint16_t *pu8DescriptorEX;
 extern uint16_t u16TxRxCounter;
 
-USBFIFO_recv_command m_origUsbfifoRecvCmd = NULL;
-
 void zfTurnOffPower_patch(void);
 
 static void _fw_reset_dma_fifo();
@@ -67,55 +63,36 @@ static void _fw_power_off();
 BOOLEAN bEepromExist = TRUE;
 BOOLEAN bJumptoFlash = FALSE;
 
-void _fw_usbfifo_recv_command(VBUF *buf)
+void _fw_usb_suspend_reboot()
 {
-       A_UINT8 *cmd_data;
-       A_UINT32 tmp;
-
-       cmd_data = (A_UINT8 *)(buf->desc_list->buf_addr + buf->desc_list->data_offset);
-       tmp = *((A_UINT32 *)cmd_data);
-       if ( tmp == 0xFFFFFFFF ) {      
-               // reset usb/wlan dma
-               _fw_reset_dma_fifo();
-
-               // restore gpio setting and usb/wlan dma state
-               _fw_restore_dma_fifo();
+       /* reset usb/wlan dma */
+       _fw_reset_dma_fifo();
 
-               // set clock to bypass mode - 40Mhz from XTAL 
-               HAL_WORD_REG_WRITE(MAGPIE_REG_CPU_PLL_BYPASS_ADDR, (BIT0|BIT4));
+       /* restore gpio setting and usb/wlan dma state */
+       _fw_restore_dma_fifo();
 
-               A_DELAY_USECS(100); // wait for stable
+       /* set clock to bypass mode - 40Mhz from XTAL */
+       HAL_WORD_REG_WRITE(MAGPIE_REG_CPU_PLL_BYPASS_ADDR, (BIT0|BIT4));
 
-               HAL_WORD_REG_WRITE(MAGPIE_REG_CPU_PLL_ADDR, (BIT16));
+       A_DELAY_USECS(100); /* wait for stable */
 
-               A_DELAY_USECS(100); // wait for stable
-               A_UART_HWINIT((40*1000*1000), 19200);
+       HAL_WORD_REG_WRITE(MAGPIE_REG_CPU_PLL_ADDR, (BIT16));
 
-               A_CLOCK_INIT(40);
+       A_DELAY_USECS(100); /* wait for stable */
+       A_UART_HWINIT((40*1000*1000), 19200);
 
-               if (!bEepromExist) { //jump to flash boot (eeprom data in flash)
-                       bJumptoFlash = TRUE;
-                       A_PRINTF("Jump to Flash BOOT\n");
-                       app_start();
-               }else{
-                       A_PRINTF("receive the suspend command...\n");
-                       // reboot.....
-                       A_USB_JUMP_BOOT();              
-               }
+       A_CLOCK_INIT(40);
 
+       if (!bEepromExist) { /* jump to flash boot (eeprom data in flash) */
+               bJumptoFlash = TRUE;
+               A_PRINTF("Jump to Flash BOOT\n");
+               app_start();
        } else {
-               m_origUsbfifoRecvCmd(buf);
+               A_PRINTF("receive the suspend command...\n");
+               /* reboot..... */
+               A_USB_JUMP_BOOT();
        }
-}
 
-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;
 }
 
 #define PCI_RC_RESET_BIT                            BIT6
@@ -123,7 +100,6 @@ void _fw_usbfifo_init(USB_FIFO_CONFIG *pConfig)
 #define PCI_RC_PLL_RESET_BIT                        BIT8
 #define PCI_RC_PHY_SHIFT_RESET_BIT                  BIT10
 
-
 /*
  * -- urn_off_merlin --
  * . values suggested from Lalit
@@ -440,114 +416,3 @@ static void _fw_restore_dma_fifo(void)
        MAGPIE_REG_USB_RX1_SWAP_DATA = 0x1;
        MAGPIE_REG_USB_RX2_SWAP_DATA = 0x1;
 }
-
-extern uint16_t *u8ConfigDescriptorEX;
-extern uint16_t *pu8DescriptorEX;
-extern uint16_t u16TxRxCounter;
-extern SetupPacket    ControlCmd;
-
-extern uint16_t *u8UsbDeviceDescriptor;
-
-extern BOOLEAN bGet_descriptor(void);
-
-uint16_t ConfigDescriptorPatch[30];
-
-uint16_t UsbDeviceDescriptorPatch[9];
-#define BCD_DEVICE_OFFSET              6
-#define BCD_DEVICE_FW_SIGNATURE                0xffff
-#define VENDOR_ID_OFFSET               4
-#define PRODUCT_ID_OFFSET              5
-
-#define EP3_TRANSFER_TYPE_OFFSET    17
-#define EP3_INT_INTERVAL            19
-#define EP4_TRANSFER_TYPE_OFFSET    21
-#define EP4_INT_INTERVAL            22
-
-
-
- #define A_SFLASH_READ_4B(u32Data, start_addr) u32Data = *(uint32_t *)(0xf000000+start_addr);
- #define FLASH_SIZE 0x800000 //8M
- #define FLASH_USB_VENDOR_ID_OFFSET     0x86
- #define FLASH_USB_PRODUCT_ID_OFFSET    0x87
-
- // flash reserved size for saving eeprom data is 4K.
- #define EE_DATA_RESERVED_LEN 0x1000 //4K
-
-#define mLOW_MASK(u16)          ((uint8_t) ((u16) & mMASK(8)))
-#define mHIGH_MASK(u16)         ((uint8_t) ((u16) & ~mMASK(8)))
-
-/* (1234) -> 0034 */
-//#define mLOW_BYTE(u16)          ((U_8)(u16))
-#define mLOW_BYTE(u16)          mLOW_MASK(u16)
-/* (1234) -> 0012 */
-#define mHIGH_BYTE(u16)         ((uint8_t) (((uint16_t) (u16)) >> 8))
-
-#define mLOW_WORD0(u32)         ((uint16_t) ((u32) & 0xFFFF))
-#define mHIGH_WORD0(u32)        ((uint16_t) ((u32) >> 16))
-
-/* (1234) -> 3412 */
-#define mSWAP_BYTE(u16)         ((mLOW_MASK(u16) << 8) | mHIGH_BYTE(u16))
-BOOLEAN bGet_descriptor_patch(void)
-{
-       if (mDEV_REQ_VALUE_HIGH() == 1)
-       {
-               uint8_t *p = (uint8_t *)u8UsbDeviceDescriptor;
-               uint32_t u32Tmp=0;
-               /* Copy Usb Device Descriptor */
-               ath_hal_memcpy(UsbDeviceDescriptorPatch, p, sizeof(UsbDeviceDescriptorPatch));
-
-               UsbDeviceDescriptorPatch[BCD_DEVICE_OFFSET] =
-                       BCD_DEVICE_FW_SIGNATURE;
-
-               /* Patch for custom id from flash */
-               if (bEepromExist == FALSE) {
-                       A_SFLASH_READ_4B(u32Tmp, FLASH_SIZE -
-                               EE_DATA_RESERVED_LEN + FLASH_USB_VENDOR_ID_OFFSET*2);
-                       UsbDeviceDescriptorPatch[VENDOR_ID_OFFSET] =
-                               mSWAP_BYTE(mLOW_WORD0(u32Tmp));
-                       UsbDeviceDescriptorPatch[PRODUCT_ID_OFFSET] =
-                               mSWAP_BYTE(mHIGH_WORD0(u32Tmp));
-               }
-      
-               pu8DescriptorEX = UsbDeviceDescriptorPatch;
-               u16TxRxCounter = mTABLE_LEN(u8UsbDeviceDescriptor[0]);
-  
-               if (u16TxRxCounter > mDEV_REQ_LENGTH())  
-                       u16TxRxCounter = mDEV_REQ_LENGTH();
-             
-               A_USB_EP0_TX_DATA();
-           
-               //u16TxRxCounter = 18;
-               return TRUE;
-       }  
-       if (mDEV_REQ_VALUE_HIGH() == 2) {
-               uint8_t *p = (uint8_t *)u8ConfigDescriptorEX;
-
-               /* Copy ConfigDescriptor */
-               ath_hal_memcpy(ConfigDescriptorPatch, p, sizeof(ConfigDescriptorPatch));
-
-                /* place holder for EPx patches */
-
-               switch (mDEV_REQ_VALUE_LOW())
-               {
-               case 0x00:      // configuration no: 0
-                       pu8DescriptorEX = ConfigDescriptorPatch;
-                       u16TxRxCounter = ConfigDescriptorPatch[1];
-                       //u16TxRxCounter = 46;
-                       break;
-               default:
-                       return FALSE;
-               }
-
-               if (u16TxRxCounter > mDEV_REQ_LENGTH())
-                       u16TxRxCounter = mDEV_REQ_LENGTH();
-
-               A_USB_EP0_TX_DATA();
-               return TRUE;
-       }
-       else {
-               return bGet_descriptor();
-       }
-}
-