From: Oleksij Rempel Date: Fri, 27 Sep 2013 22:17:41 +0000 (+0200) Subject: hif/usb_api: remove dup code - usb_reg_in_patch X-Git-Tag: 1.4.0~10^2~2^2~8 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=024df3f6d90e4518e0143d07ddc523bc9b2c6542;p=librecmc%2Fopen-ath9k-htc-firmware.git hif/usb_api: remove dup code - usb_reg_in_patch Signed-off-by: Oleksij Rempel --- 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 4aceaef..e954539 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 @@ -508,99 +508,6 @@ BOOLEAN bSet_configuration_patch(void) return TRUE; } - -/* - * -- support more than 64 bytes command on ep3 -- - */ -void vUsb_Status_In_patch(void) -{ - uint16_t count; - uint16_t remainder; - u16_t RegBufLen; - BOOLEAN cmdEnd = FALSE; - - static u16_t mBufLen; - static VBUF *evntbuf = NULL; - static volatile u32_t *regaddr; - static BOOLEAN cmd_is_new = TRUE; - - if( cmd_is_new ) - { - evntbuf = usbFifoConf.get_event_buf(); - if ( evntbuf != NULL ) - { - regaddr = (u32_t *)VBUF_GET_DATA_ADDR(evntbuf); - mBufLen = evntbuf->buf_length; - } - else - { - mUSB_STATUS_IN_INT_DISABLE(); - goto ERR_DONE; - } - - } - -// if( mBufLen>bUSB_EP_MAX_PKT_SIZE_64 ) -// A_PRINTF("EP3 send %d bytes to host \n", mBufLen); - -// while(1) - { - if( mBufLen > bUSB_EP_MAX_PKT_SIZE_64 ) { - RegBufLen = bUSB_EP_MAX_PKT_SIZE_64; - mBufLen -= bUSB_EP_MAX_PKT_SIZE_64; - } - // TODO: 64 byes... controller supposed will take care of zero-length? - else { - RegBufLen = mBufLen; - cmdEnd = TRUE; - } - - /* INT use EP3 */ - for(count = 0; count < (RegBufLen / 4); count++) - { - USB_WORD_REG_WRITE(ZM_EP3_DATA_OFFSET, *regaddr); - regaddr++; - } - - remainder = RegBufLen % 4; - - if (remainder) - { - switch(remainder) - { - case 3: - USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0x7); - break; - case 2: - USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0x3); - break; - case 1: - USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0x1); - break; - } - - USB_WORD_REG_WRITE(ZM_EP3_DATA_OFFSET, *regaddr); - - // Restore CBus FIFO size to word size - USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0xF); - } - - mUSB_EP3_XFER_DONE(); - -// if( mBufLen<=bUSB_EP_MAX_PKT_SIZE_64 ) -// break; - } - - if ( evntbuf != NULL && cmdEnd ) - { - usbFifoConf.send_event_done(evntbuf); - cmd_is_new = TRUE; - } - -ERR_DONE: - ; -} - extern uint16_t *u8UsbDeviceDescriptor; extern uint16_t *u8ConfigDescriptorEX; extern uint16_t *pu8DescriptorEX; 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 5daf176..10a1123 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 @@ -26,6 +26,80 @@ void cold_reboot(void) A_USB_JUMP_BOOT(); } +/* + * support more than 64 bytes command on ep3 + */ +void usb_status_in_patch(void) +{ + uint16_t count; + uint16_t remainder; + uint16_t reg_buf_len; + static uint16_t buf_len; + static VBUF *evntbuf = NULL; + static volatile uint32_t *regaddr; + static BOOLEAN cmd_is_new = TRUE; + BOOLEAN cmd_end = FALSE; + + if (cmd_is_new) { + evntbuf = usbFifoConf.get_event_buf(); + if (evntbuf != NULL) { + regaddr = (uint32_t *)VBUF_GET_DATA_ADDR(evntbuf); + buf_len = evntbuf->buf_length; + } else { + mUSB_STATUS_IN_INT_DISABLE(); + return; + } + + cmd_is_new = FALSE; + } + + if (buf_len > USB_EP3_MAX_PKT_SIZE) { + reg_buf_len = USB_EP3_MAX_PKT_SIZE; + buf_len -= USB_EP3_MAX_PKT_SIZE; + } + /* TODO: 64 bytes... + * controller supposed will take care of zero-length? */ + else { + reg_buf_len = buf_len; + cmd_end = TRUE; + } + + /* INT use EP3 */ + for (count = 0; count < (reg_buf_len / 4); count++) + { + USB_WORD_REG_WRITE(ZM_EP3_DATA_OFFSET, *regaddr); + regaddr++; + } + + remainder = reg_buf_len % 4; + + if (remainder) { + switch(remainder) { + case 3: + USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0x7); + break; + case 2: + USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0x3); + break; + case 1: + USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0x1); + break; + } + + USB_WORD_REG_WRITE(ZM_EP3_DATA_OFFSET, *regaddr); + + /* Restore CBus FIFO size to word size */ + USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0xF); + } + + mUSB_EP3_XFER_DONE(); + + if (evntbuf != NULL && cmd_end) { + usbFifoConf.send_event_done(evntbuf); + cmd_is_new = TRUE; + } +} + /* * support more than 64 bytes command on ep4 */ diff --git a/target_firmware/magpie_fw_dev/target/init/app_start.c b/target_firmware/magpie_fw_dev/target/init/app_start.c index 39898c8..563d4de 100644 --- a/target_firmware/magpie_fw_dev/target/init/app_start.c +++ b/target_firmware/magpie_fw_dev/target/init/app_start.c @@ -49,7 +49,7 @@ extern int _HIFusb_get_max_msg_len_patch(hif_handle_t handle, int pipe); extern void _HIFusb_isr_handler_patch(hif_handle_t h); extern BOOLEAN bSet_configuration_patch(void); extern void vUSBFIFO_EP6Cfg_FS_patch(void); -extern void vUsb_Status_In_patch(void); +extern void usb_status_in_patch(void); extern void _fw_usbfifo_init(USB_FIFO_CONFIG *pConfig); extern void zfTurnOffPower_patch(void); extern void zfResetUSBFIFO_patch(void); @@ -190,7 +190,7 @@ void app_start() _indir_tbl.cmnos.usb._usb_reg_out = usb_reg_out_patch; _indir_tbl.hif._isr_handler = _HIFusb_isr_handler_patch; _indir_tbl.cmnos.usb._usb_set_configuration = bSet_configuration_patch; - _indir_tbl.cmnos.usb._usb_status_in = vUsb_Status_In_patch; + _indir_tbl.cmnos.usb._usb_status_in = usb_status_in_patch; _indir_tbl.cmnos.usb._usb_get_descriptor = bGet_descriptor_patch; _indir_tbl.cmnos.usb._usb_standard_cmd = bStandardCommand_patch; _indir_tbl.usbfifo_api._init = _fw_usbfifo_init; 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 d952c7c..d019640 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 @@ -245,90 +245,6 @@ BOOLEAN bSet_configuration_patch(void) } -/* - * -- support more than 64 bytes command on ep3 -- - */ -void vUsb_Status_In_patch(void) -{ - uint16_t count; - uint16_t remainder; - u16_t RegBufLen; - BOOLEAN cmdEnd = FALSE; - - static u16_t mBufLen; - static VBUF *evntbuf = NULL; - static volatile u32_t *regaddr; - static BOOLEAN cmd_is_new = TRUE; - - if( cmd_is_new ) - { - evntbuf = usbFifoConf.get_event_buf(); - if ( evntbuf != NULL ) - { - regaddr = (u32_t *)VBUF_GET_DATA_ADDR(evntbuf); - mBufLen = evntbuf->buf_length; - } - else - { - mUSB_STATUS_IN_INT_DISABLE(); - goto ERR_DONE; - } - - cmd_is_new = FALSE; - } - - if( mBufLen > bUSB_EP_MAX_PKT_SIZE_64 ) { - RegBufLen = bUSB_EP_MAX_PKT_SIZE_64; - mBufLen -= bUSB_EP_MAX_PKT_SIZE_64; - } - // TODO: 64 byes... controller supposed will take care of zero-length? - else { - RegBufLen = mBufLen; - cmdEnd = TRUE; - } - - /* INT use EP3 */ - for(count = 0; count < (RegBufLen / 4); count++) - { - USB_WORD_REG_WRITE(ZM_EP3_DATA_OFFSET, *regaddr); - regaddr++; - } - - remainder = RegBufLen % 4; - - if (remainder) - { - switch(remainder) - { - case 3: - USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0x7); - break; - case 2: - USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0x3); - break; - case 1: - USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0x1); - break; - } - - USB_WORD_REG_WRITE(ZM_EP3_DATA_OFFSET, *regaddr); - - // Restore CBus FIFO size to word size - USB_WORD_REG_WRITE(ZM_CBUS_FIFO_SIZE_OFFSET, 0xF); - } - - mUSB_EP3_XFER_DONE(); - - if ( evntbuf != NULL && cmdEnd ) - { - usbFifoConf.send_event_done(evntbuf); - cmd_is_new = TRUE; - } - -ERR_DONE: - ; -} - #define PCI_RC_RESET_BIT BIT6 #define PCI_RC_PHY_RESET_BIT BIT7