aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormichael-west <michael.west@ettus.com>2017-01-19 14:49:02 -0800
committermichael-west <michael.west@ettus.com>2017-12-20 15:32:32 -0800
commitd95613152da3e7c7f41c71acca65101ed0896893 (patch)
tree69ab0b378dd790283e274600fe276c6d3905422a
parent49790677648cd7a5b002437637c2e6c85f277862 (diff)
downloaduhd-d95613152da3e7c7f41c71acca65101ed0896893.tar.gz
uhd-d95613152da3e7c7f41c71acca65101ed0896893.tar.bz2
uhd-d95613152da3e7c7f41c71acca65101ed0896893.zip
B200: FX3 performance optimizations based on Cypress AN86947
-rw-r--r--firmware/fx3/b200/b200_main.c10
-rw-r--r--firmware/fx3/b200/b200_main.h2
2 files changed, 6 insertions, 6 deletions
diff --git a/firmware/fx3/b200/b200_main.c b/firmware/fx3/b200/b200_main.c
index e552d3177..e5c55d6a7 100644
--- a/firmware/fx3/b200/b200_main.c
+++ b/firmware/fx3/b200/b200_main.c
@@ -228,7 +228,7 @@ typedef struct Config {
int enable_as_superspeed; // 1
int pport_drive_strength; // CY_U3P_DS_THREE_QUARTER_STRENGTH
int dma_buffer_size; // [USB3] (max)
- int dma_buffer_count; // [USB3] 1
+ int dma_buffer_count; // [USB3] 2
int manual_dma; // 0
int sb_baud_div; // 434*2
} CONFIG, *PCONFIG;
@@ -244,8 +244,8 @@ static CONFIG g_config = {
0, // disable_usb2
1, // enable_as_superspeed
CY_U3P_DS_THREE_QUARTER_STRENGTH, // pport_drive_strength
- 64512, // dma_buffer_size 2**16-1, then aligned to next page boundary
- 1, // dma_buffer_count
+ 16*1024, // dma_buffer_size - optimized value from Cypress AN86947
+ 2, // dma_buffer_count - optimized value from Cypress AN86947
0, // manual_dma
434*2 // sb_baud_div
};
@@ -1175,7 +1175,7 @@ void b200_fw_start(void) {
data_buffer_size_from_host = data_buffer_size;
g_vendor_req_buff_size = USB3_VREQ_BUF_SIZE; // Max 512
- num_packets_per_burst = USB3_PACKETS_PER_BURST*1+4*0; // 16
+ num_packets_per_burst = USB3_PACKETS_PER_BURST; // 8
break;
case CY_U3P_NOT_CONNECTED:
@@ -1529,7 +1529,7 @@ void event_usb_callback (CyU3PUsbEventType_t event_type, uint16_t event_data) {
* of this function is to register that the event happened at all, so that the
* application thread knows it can proceed.
*
- * This function is also responsible for receiving vendor requests, and trigging
+ * This function is also responsible for receiving vendor requests, and triggering
* the appropriate RTOS event to wake up the vendor request handler thread.
*/
CyBool_t usb_setup_callback(uint32_t data0, uint32_t data1) {
diff --git a/firmware/fx3/b200/b200_main.h b/firmware/fx3/b200/b200_main.h
index 9fe8b9511..453e7034a 100644
--- a/firmware/fx3/b200/b200_main.h
+++ b/firmware/fx3/b200/b200_main.h
@@ -41,7 +41,7 @@
#define MASK_GPIO_FPGA_SB_SCL (uint32_t)(1 << (GPIO_FPGA_SB_SCL - 0))
#define MASK_GPIO_FPGA_SB_SDA (uint32_t)(1 << (GPIO_FPGA_SB_SDA - 0))
-#define USB3_PACKETS_PER_BURST (16)
+#define USB3_PACKETS_PER_BURST (8) // Optimized value from Cypress AN86947
#define USB2_PACKETS_PER_BURST (1)
#define DMA_SIZE_INFINITE (0)