hif/usb_api: remove dup code - usb_reg_out_patch
[open-ath9k-htc-firmware.git] / target_firmware / magpie_fw_dev / target / rompatch / usb_api_patch.c
index 298c41d511c5da54d32eacac4075100ef0f7bdcd..d952c7caa34f6a54a4ddef4759aabeaf3f6cd036 100755 (executable)
@@ -118,96 +118,6 @@ void _fw_usbfifo_init(USB_FIFO_CONFIG *pConfig)
        usbFifoConf.send_event_done = pConfig->send_event_done;
 }
 
-/*
- * -- support more than 64 bytes command on ep4 -- 
- */
-void vUsb_Reg_Out_patch(void)
-{   
-       uint16_t usbfifolen;
-       uint16_t ii;
-       uint32_t ep4_data;
-       static volatile uint32_t *regaddr;
-       static uint16_t cmdLen;
-       static VBUF *buf;
-       BOOLEAN cmd_is_last = FALSE;
-       static BOOLEAN cmd_is_new = TRUE;
-
-       // get the size of this transcation
-       usbfifolen = USB_BYTE_REG_READ(ZM_EP4_BYTE_COUNT_LOW_OFFSET);
-
-       // check is command is new
-       if( cmd_is_new ){
-
-               buf = usbFifoConf.get_command_buf();
-               cmdLen = 0;
-
-               if( !buf )
-                       goto ERR;
-
-               // copy free, assignment buffer of the address
-               regaddr = (uint32_t *)buf->desc_list->buf_addr;
-
-               cmd_is_new = FALSE;
-       }
-
-       // just in case, suppose should not happen
-       if( !buf )
-               goto ERR;
-
-       // if size is smaller, this is the last command!
-       // zero-length supposed should be set through 0x27/bit7->0x19/bit4, not here
-       if( usbfifolen<64 ) {
-               cmd_is_last = TRUE;
-       }
-
-       // accumulate the size
-       cmdLen += usbfifolen;
-
-       // round it to alignment
-       if(usbfifolen % 4)
-               usbfifolen = (usbfifolen >> 2) + 1;
-       else
-               usbfifolen = usbfifolen >> 2;
-
-       // retrieve the data from fifo
-       for(ii = 0; ii < usbfifolen; ii++)
-       {
-               ep4_data = USB_WORD_REG_READ(ZM_EP4_DATA_OFFSET);   // read fifo data out
-               *regaddr = ep4_data;
-               regaddr++;
-       }
-
-       // if this is the last command, callback to HTC
-       if (  cmd_is_last  )
-       {
-               buf->desc_list->next_desc = NULL;
-               buf->desc_list->data_offset = 0;
-               buf->desc_list->data_size = cmdLen;
-               buf->desc_list->control = 0;
-               buf->next_buf = NULL;
-               buf->buf_length = cmdLen;
-
-               usbFifoConf.recv_command(buf);
-
-               cmd_is_new = TRUE;
-       }
-
-       goto DONE;
-ERR:
-       //    we might get no command buffer here?
-       //    but if we return here, the ep4 fifo will be lock out,
-       //    so that we still read them out but just drop it ?
-       for(ii = 0; ii < usbfifolen; ii++)
-       {
-               ep4_data = USB_WORD_REG_READ(ZM_EP4_DATA_OFFSET);   // read fifo data out
-       }
-
-DONE:
-       //mUSB_STATUS_IN_INT_ENABLE();
-       ;
-}
-
-
 /* 
  *  -- usb1.1 ep6 fix --
  */
@@ -750,6 +660,8 @@ 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
 
@@ -785,17 +697,25 @@ uint16_t UsbDeviceDescriptorPatch[9];
  
 BOOLEAN bGet_descriptor_patch(void)
 {
-       /* Patch for custom id from flash */
-       if (bEepromExist == FALSE && mDEV_REQ_VALUE_HIGH() == 1)
+       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));
 
-               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));             
+               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]);
@@ -814,13 +734,7 @@ BOOLEAN bGet_descriptor_patch(void)
                /* Copy ConfigDescriptor */
                ath_hal_memcpy(ConfigDescriptorPatch, p, sizeof(ConfigDescriptorPatch));
 
-               p = (uint8_t *)ConfigDescriptorPatch;
-
-               /* Patch the transfer type of EP3 and EP4 */
-               ConfigDescriptorPatch[EP3_TRANSFER_TYPE_OFFSET] = 0x0283;
-               ConfigDescriptorPatch[EP3_INT_INTERVAL] = 0x0700;
-               ConfigDescriptorPatch[EP4_TRANSFER_TYPE_OFFSET] = 0x4002;
-               ConfigDescriptorPatch[EP4_INT_INTERVAL] = 0x00;
+                /* place holder for EPx patches */
 
                switch (mDEV_REQ_VALUE_LOW())
                {