static void turn_off_merlin()
{
volatile uint32_t default_data[9];
- volatile uint32_t read_data = 0;
uint32_t i=0;
if(1)
*/
void zfTurnOffPower_patch(void)
{
- uint32_t i=0;
A_PRINTF("+++ goto suspend ......\n");
// setting the go suspend here, power down right away...
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");
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
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]);
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())
{