This is an automated email from Gerrit. Hellosun Wu ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/3218
-- gerrit commit eff6e9ec291928cad209e8f5b786f4f5435546a9 Author: Hellosun Wu <[email protected]> Date: Tue Jan 26 13:36:49 2016 +0800 nds32: fix-bug, get correct read/write BULK endpoint-id AICE use BULK in/out as endpoints and check types when get endpoint-id Change-Id: I4da93c7de41cd19e5095b4bfb42078b21f40b678 Signed-off-by: Hellosun Wu <[email protected]> diff --git a/src/jtag/aice/aice_usb.c b/src/jtag/aice/aice_usb.c index 50b3b9a..d69cb0d 100644 --- a/src/jtag/aice/aice_usb.c +++ b/src/jtag/aice/aice_usb.c @@ -31,6 +31,9 @@ #include "aice_usb.h" +unsigned int aice_usb_rx_max_packet = 512; +unsigned int aice_usb_tx_max_packet = 512; + /* Global USB buffers */ static uint8_t usb_in_buffer[AICE_IN_BUFFER_SIZE]; static uint8_t usb_out_buffer[AICE_OUT_BUFFER_SIZE]; @@ -2093,6 +2096,79 @@ static int aice_usb_write_reg(uint32_t coreid, uint32_t num, uint32_t val) return ERROR_OK; } +#ifdef HAVE_LIBUSB1 +int jtag_libusb_get_endpoints(struct jtag_libusb_device *udev, + unsigned int *usb_read_ep, + unsigned int *usb_write_ep, + unsigned int *usb_rx_max_packet, + unsigned int *usb_tx_max_packet) +{ + const struct libusb_interface *inter; + const struct libusb_interface_descriptor *interdesc; + const struct libusb_endpoint_descriptor *epdesc; + struct libusb_config_descriptor *config; + + libusb_get_config_descriptor(udev, 0, &config); + for (int i = 0; i < (int)config->bNumInterfaces; i++) { + inter = &config->interface[i]; + + for (int j = 0; j < inter->num_altsetting; j++) { + interdesc = &inter->altsetting[j]; + for (int k = 0; + k < (int)interdesc->bNumEndpoints; k++) { + epdesc = &interdesc->endpoint[k]; + if (epdesc->bmAttributes != LIBUSB_TRANSFER_TYPE_BULK) + continue; + + uint8_t epnum = epdesc->bEndpointAddress; + bool is_input = epnum & 0x80; + + if (is_input) { + *usb_read_ep = epnum; + *usb_rx_max_packet = epdesc->wMaxPacketSize; + } + else { + *usb_write_ep = epnum; + *usb_tx_max_packet = epdesc->wMaxPacketSize; + } + } + } + } + libusb_free_config_descriptor(config); + + return 0; +} +#else +int jtag_libusb_get_endpoints(struct jtag_libusb_device *udev, + unsigned int *usb_read_ep, + unsigned int *usb_write_ep, + unsigned int *usb_rx_max_packet, + unsigned int *usb_tx_max_packet) +{ + struct usb_interface *iface = udev->config->interface; + struct usb_interface_descriptor *desc = iface->altsetting; + + for (int i = 0; i < desc->bNumEndpoints; i++) { + if (desc->endpoint[i].bmAttributes != USB_ENDPOINT_TYPE_BULK) + continue; + + uint8_t epnum = desc->endpoint[i].bEndpointAddress; + bool is_input = epnum & 0x80; + + if (is_input) { + *usb_read_ep = epnum; + *usb_rx_max_packet = desc->endpoint[i].wMaxPacketSize; + } + else { + *usb_write_ep = epnum; + *usb_tx_max_packet = desc->endpoint[i].wMaxPacketSize; + } + } + + return 0; +} +#endif + static int aice_usb_open(struct aice_port_param_s *param) { const uint16_t vids[] = { param->vid, 0 }; @@ -2137,10 +2213,15 @@ static int aice_usb_open(struct aice_port_param_s *param) /* usb_set_configuration required under win32 */ jtag_libusb_set_configuration(devh, 0); + jtag_libusb_claim_interface(devh, 0); + struct jtag_libusb_device *udev = jtag_libusb_get_device(devh); unsigned int aice_read_ep; unsigned int aice_write_ep; - jtag_libusb_choose_interface(devh, &aice_read_ep, &aice_write_ep, -1, -1, -1); + jtag_libusb_get_endpoints(udev, &aice_read_ep, &aice_write_ep, + &aice_usb_rx_max_packet, &aice_usb_tx_max_packet); + LOG_DEBUG("aice_read_ep=0x%x, aice_write_ep=0x%x", aice_read_ep, aice_write_ep); + LOG_DEBUG("aice_usb_rx_max_packet=%d, aice_usb_tx_max_packet=%d",aice_usb_rx_max_packet, aice_usb_tx_max_packet); aice_handler.usb_read_ep = aice_read_ep; aice_handler.usb_write_ep = aice_write_ep; -- ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140 _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
