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=be52f254f3ed7af6f09ff6cdcd32da9edbfaba33;hp=c0747e4b168549c34e209a6891de74d0db3c713e;hpb=8804cc94e3b66550797279f540b960d18a78421f;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 c0747e4..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 @@ -1,3 +1,37 @@ +/* + * Copyright (c) 2013 Qualcomm Atheros, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted (subject to the limitations in the + * disclaimer below) provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Qualcomm Atheros nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE + * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT + * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ #include "usb_defs.h" #include "usb_type.h" #include "usb_pre.h" @@ -400,7 +434,6 @@ ERR_DONE: static void turn_off_merlin() { volatile uint32_t default_data[9]; - volatile uint32_t read_data = 0; uint32_t i=0; if(1) @@ -519,7 +552,6 @@ volatile uint32_t gpio = 0x0; */ void zfTurnOffPower_patch(void) { - uint32_t i=0; A_PRINTF("+++ goto suspend ......\n"); // setting the go suspend here, power down right away... @@ -571,8 +603,6 @@ void zfResetUSBFIFO_patch(void) static void _fw_reset_dma_fifo() { - int i; - HAL_BYTE_REG_WRITE(0x100ae, (HAL_BYTE_REG_READ(0x100ae)|0x10)); HAL_BYTE_REG_WRITE(0x100ae, (HAL_BYTE_REG_READ(0x100af)|0x10)); A_PRINTF("_fw_reset_dma_fifo\n"); @@ -719,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 @@ -755,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]); @@ -782,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()) {