X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=target_firmware%2Fmagpie_fw_dev%2Ftarget%2Frompatch%2Fusb_api_patch.c;h=542a715dbe021e77c53fdae41f12102a07bce498;hb=5c5580bd6b3f970308844fe0d08857f43b7ae28f;hp=df00a4bb1d5ead5d6c0c75e965359a5feac44504;hpb=a2a150fa59afa0420042ae3a0f64b1ed45bd90c8;p=open-ath9k-htc-firmware.git 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 df00a4b..542a715 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 @@ -749,9 +749,11 @@ extern BOOLEAN bGet_descriptor(void); uint16_t ConfigDescriptorPatch[30]; - uint16_t UsbDeviceDescriptorPatch[18]; - #define VENDOR_ID_OFFSET 8 - #define PRODUCT_ID_OFFSET 10 +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 @@ -785,17 +787,25 @@ uint16_t ConfigDescriptorPatch[30]; 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 */ - 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)); + 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]); @@ -812,15 +822,9 @@ BOOLEAN bGet_descriptor_patch(void) uint8_t *p = (uint8_t *)u8ConfigDescriptorEX; /* Copy ConfigDescriptor */ - memcpy(ConfigDescriptorPatch, p, sizeof(ConfigDescriptorPatch)); - - p = (uint8_t *)ConfigDescriptorPatch; + ath_hal_memcpy(ConfigDescriptorPatch, p, sizeof(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()) {