From 1702f968d7c3399352b7f2695e45c2daac265222 Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Sat, 28 Sep 2013 23:45:48 +0200 Subject: [PATCH] hif/usb_api: remove dup code - bGet_descriptor_patch In this patch i also remove eeprom check. It was never executed any way. Signed-off-by: Oleksij Rempel --- .../magpie_fw_dev/target/hif/k2_fw_usb_api.c | 64 ---------- .../target/hif/usb_api_main_patch.c | 73 ++++++++++++ .../target/rompatch/usb_api_patch.c | 111 ------------------ 3 files changed, 73 insertions(+), 175 deletions(-) diff --git a/target_firmware/magpie_fw_dev/target/hif/k2_fw_usb_api.c b/target_firmware/magpie_fw_dev/target/hif/k2_fw_usb_api.c index 2765e61..395aaa9 100755 --- a/target_firmware/magpie_fw_dev/target/hif/k2_fw_usb_api.c +++ b/target_firmware/magpie_fw_dev/target/hif/k2_fw_usb_api.c @@ -401,68 +401,4 @@ void _fw_usb_reset_fifo(void) HAL_WORD_REG_WRITE(0x50040, (0x200|0|(1>>1)<<12)); A_UART_HWINIT((22*1000*1000), 19200); } - -extern SetupPacket ControlCmd; - -extern uint16_t *u8UsbDeviceDescriptor; -extern uint16_t *u8ConfigDescriptorEX; -extern uint16_t *pu8DescriptorEX; -extern uint16_t u16TxRxCounter; -extern BOOLEAN bGet_descriptor(void); - -uint16_t DeviceDescriptorPatch[9]; -uint16_t ConfigDescriptorPatch[30]; - - -#define BCD_DEVICE 6 -#define BCD_DEVICE_FW_SIGNATURE 0xffff -#define EP3_TRANSFER_TYPE_OFFSET 17 -#define EP3_INT_INTERVAL 19 -#define EP4_TRANSFER_TYPE_OFFSET 21 -#define EP4_INT_INTERVAL 22 - -BOOLEAN bGet_descriptor_patch(void) -{ - int i; - switch (mDEV_REQ_VALUE_HIGH()) { - case 1: - ath_hal_memcpy(DeviceDescriptorPatch, - u8UsbDeviceDescriptor, sizeof(DeviceDescriptorPatch)); - - DeviceDescriptorPatch[BCD_DEVICE] = BCD_DEVICE_FW_SIGNATURE; - - pu8DescriptorEX = DeviceDescriptorPatch; - u16TxRxCounter = mTABLE_LEN(DeviceDescriptorPatch[0]); - break; - case 2: - /* Copy ConfigDescriptor */ - ath_hal_memcpy(ConfigDescriptorPatch, - u8ConfigDescriptorEX, 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; - } - break; - default: - return bGet_descriptor(); - } - - if (u16TxRxCounter > mDEV_REQ_LENGTH()) - u16TxRxCounter = mDEV_REQ_LENGTH(); - - A_USB_EP0_TX_DATA(); - return TRUE; -} - #endif - - 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 f6be408..1ff18c2 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 @@ -347,3 +347,76 @@ BOOLEAN bStandardCommand_patch(void) return bStandardCommand(); } +/* + * usb descriptor patch + */ + +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 + +BOOLEAN bGet_descriptor_patch(void) +{ + if (mDEV_REQ_VALUE_HIGH() == 1) + { + uint8_t *p = (uint8_t *)u8UsbDeviceDescriptor; + + /* Copy Usb Device Descriptor */ + ath_hal_memcpy(UsbDeviceDescriptorPatch, p, + sizeof(UsbDeviceDescriptorPatch)); + + /* Change bcdDevice. we need it to detect if FW + * was uploaded. */ + UsbDeviceDescriptorPatch[BCD_DEVICE_OFFSET] = + BCD_DEVICE_FW_SIGNATURE; + + pu8DescriptorEX = UsbDeviceDescriptorPatch; + u16TxRxCounter = mTABLE_LEN(u8UsbDeviceDescriptor[0]); + + if (u16TxRxCounter > mDEV_REQ_LENGTH()) + u16TxRxCounter = mDEV_REQ_LENGTH(); + + A_USB_EP0_TX_DATA(); + + return TRUE; + } else 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 */ + + if (mDEV_REQ_VALUE_LOW() == 0) { + /* configuration no: 0 */ + pu8DescriptorEX = ConfigDescriptorPatch; + u16TxRxCounter = ConfigDescriptorPatch[1]; + } else + return FALSE; + + if (u16TxRxCounter > mDEV_REQ_LENGTH()) + u16TxRxCounter = mDEV_REQ_LENGTH(); + + A_USB_EP0_TX_DATA(); + return TRUE; + } else + return bGet_descriptor(); +} + diff --git a/target_firmware/magpie_fw_dev/target/rompatch/usb_api_patch.c b/target_firmware/magpie_fw_dev/target/rompatch/usb_api_patch.c index b95fce7..5fb474c 100755 --- a/target_firmware/magpie_fw_dev/target/rompatch/usb_api_patch.c +++ b/target_firmware/magpie_fw_dev/target/rompatch/usb_api_patch.c @@ -440,114 +440,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(); - } -} - -- 2.25.1