aboutsummaryrefslogtreecommitdiff
path: root/src/jtag/drivers/libusb1_common.c
AgeCommit message (Collapse)Author
2020-03-03drivers: Rename 'libusb1_common' to 'libusb_helper'Marc Schink
The name 'common' does not make sense anymore. While at it, remove some unnecessary #includes. Change-Id: If9798a5cce179438d89428a598d8ca05c8e5f20c Signed-off-by: Marc Schink <dev@zapb.de> Reviewed-on: http://openocd.zylin.com/5434 Tested-by: jenkins Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
2020-03-03drivers: libusb1_common code cleanupMarc Schink
Remove unncessary wrapper functions and 'jtag_' prefixes. Change-Id: I0fd866ff1e1cf7386c4d58a808dfda2c1c0a1518 Signed-off-by: Marc Schink <dev@zapb.de> Reviewed-on: http://openocd.zylin.com/5433 Tested-by: jenkins Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
2020-01-22jtag_libusb_bulk_read|write: return error code instead of sizeOleksij Rempel
A USB bulk write/read operation may fail with different errors: LIBUSB_ERROR_TIMEOUT if the transfer timed out (and populates transferred) LIBUSB_ERROR_PIPE if the endpoint halted LIBUSB_ERROR_OVERFLOW if the device offered more data, see Packets and overflows LIBUSB_ERROR_NO_DEVICE if the device has been disconnected another LIBUSB_ERROR code on other failures Current OpenOCD code is using the transfer size based error detection. Which may not always work. For example for LIBUSB_ERROR_OVERFLOW as libusb documentation says: "Problems may occur if the device attempts to send more data than can fit in the buffer. libusb reports LIBUSB_TRANSFER_OVERFLOW for this condition but other behaviour is largely undefined: actual_length may or may not be accurate, the chunk of data that can fit in the buffer (before overflow) may or may not have been transferred." This patch is refactoring code to use actual error return value for error detection instead of size. Change-Id: Iec0798438ca7b5c76e2e2912af21d9aa76ee0217 Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-on: http://openocd.zylin.com/4590 Tested-by: jenkins Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
2019-02-07jtag: drivers: provide initial support for usb path filteringOleksij Rempel
With this patch drivers will be able to use usb path filtering. The path format is identical to the format provided by linux kernel: bus-port.port.... With this format it should be easier just to copy and paste path found in dmesg. Change-Id: I8bafa6fcb7a66ff68cc961a376f97f4f3dee35aa Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-on: http://openocd.zylin.com/4580 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2019-01-08libusb: add debug message on adapter not found due to wrong serialAntonio Borneo
When few adapters of the same type are in use, the serial string is the way to select the right one. Currently a serial string that does not match any of the connected adapters will just fail the open, without specific information to track the issue. Add a specific message to highlight that the open failure is caused by a serial mismatch. Change-Id: I5cb77f1045cc746e532d395b2e5ced40a23ab638 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/4701 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2018-09-07libusb: return oocd error valuesOleksij Rempel
keep same return style where possible Change-Id: I2f9b85dbc307a483609f76a84de77e3c74d346c7 Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-on: http://openocd.zylin.com/4588 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
2017-04-24libusb: Add transfer type filter to get correct epHellosun Wu
The need for this due to AICE having 3 interfaces (EP1 IN-Interrupt, EP2 OUT-Bulk, EP6 IN-Bulk). Without it, the function will choose first two endpoint as read_ep/write_ep. This filter will check transfer types when get endpoint-id. Without this patch, AICE will not get correct endpoint. Change-Id: I4da93c7de41cd19e5095b4bfb42078b21f40b678 Signed-off-by: Hellosun Wu <wujiheng.tw@gmail.com> Reviewed-on: http://openocd.zylin.com/3218 Tested-by: jenkins Reviewed-by: Hsiangkai Wang <hsiangkai@gmail.com> Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
2016-05-24Remove FSF address from GPL noticesMarc Schink
Also make GPL notices consistent according to: https://www.gnu.org/licenses/gpl-howto.html Change-Id: I84c9df40a774958a7ed91460c5d931cfab9f45ba Signed-off-by: Marc Schink <openocd-dev@marcschink.de> Reviewed-on: http://openocd.zylin.com/3488 Tested-by: jenkins Reviewed-by: Andreas Färber <afaerber@suse.de> Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com> Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2014-10-06libusb: introduce jtag_libusb_choose_interface() and use it for JLinkPaul Fertser
This introduces a new common function that allows auto-discovery of a suitable USB interface based on class, subclass and protocol matching. It claims the interface and returns the corresponding endpoints number to the caller. The need for this arised due to nRF51822 USB dongle which comes with an "on-board Segger J-link debugger" having 3 interfaces, so the current code can't work at all with it (in this particular case the last interface needs to be choosen). This also removes special handling of JLink-OB endpoint numbers as it's now possible to autodetect them as well as the standard JLink endpoints. Change-Id: I4d990a7a3b373efdd2949a394b32d855a168e138 Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/2327 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2014-10-06jtag/drivers/libusb1_common: avoid device reset when reselecting configurationAnders
According to [1], we shouldn't reselect an already active configuration to avoid needless device reset. This is known to cause issues with e.g. LPC Link2 with JLink firmware. [1] http://libusb.sourceforge.net/api-1.0/caveats.html#configsel Change-Id: I3568ada77780a521548c450090db7173f8d0b2dd Signed-off-by: Paul Fertser <fercerpav@gmail.com> Signed-off-by: Anders Oleson <anders@openpuma.org> Reviewed-on: http://openocd.zylin.com/2288 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2014-09-22Support hla_serial command for ST-LINK adapters.Austin Phillips
The hla_serial command allows for a programming device serial number to be specified in addition to USB VID/PID. This allows for multiple ST-LINK/V2 programmers to be attached to a single machine and operated using openocd. Change-Id: I350654bf676eb26ba3a90450acfa55d2a5d2d791 Signed-off-by: Austin Phillips <austin_phillips@hotmail.com> Reviewed-on: http://openocd.zylin.com/2198 Tested-by: jenkins Reviewed-by: Martin Glunz <mg@wunderkis.de> Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2014-09-08jtag/drivers/libusb0_common: fix FTBFS (libusb_device_descriptor error)Paul Fertser
This struct and libusb_get_device_descriptor() method are not present in libusb-0.1 API, so when libusb-1.0 is unavailable, this code breaks the build. Fix by using the appropriate struct (which is apparently filled automatically on device initialisation). While at it, change return values for consistency with the callers. Change-Id: I7d85ab9a70401a155a65122397008ae4d81382fe Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/2252 Tested-by: jenkins Reviewed-by: Austin Phillips <austin_phillips@hotmail.com> Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
2014-03-29jlink: add support for Jlink-OB (0x0105) devicesAndrey Yurovsky
The JLink-OB (onboard) devices work the same way as the normal JLink except that their PID is 0x0105 (and that's the only one we know of so far) and their endpoint addresses are different due to there being a CDC-ACM interface as well. These JLink-OB devices show up on a lot of vendors' development kits as an integrated debugger. This change simply checks whether the adapter we opened has a JLink-OB PID and, if it does, uses the JLink-OB endpoints rather than the default. To do this, we add a new routine, jtag_libusb_get_pid() to the libusb adapter layer, it in turn just calls libusb_get_device_descriptor(), which previously had no wrapper. Also, checkpatch.pl doesn't like the VID/PID macros as defined so I moved them to the array itself. This should have no effect on the code. This change adds the 0102 through 0104 PIDs to openocd.rules as well as this new 0105 PID. Tested on an Atmel SAM4S Xplained board which has a JLink-OB, also regression tested by using a 0x0101 PID normal JLink adapter. Signed-off-by: Andrey Yurovsky <yurovsky@gmail.com> Change-Id: I121d30e57729cda3adb66e2a5dc72e1fcb7ef8b1 Reviewed-on: http://openocd.zylin.com/2031 Tested-by: jenkins Reviewed-by: Xiaofan <xiaofanc@gmail.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
2013-06-12libusb1_common, ftdi: clarify libusb_open error messagePaul Fertser
Print a user-friendly message when libusb_open() fails, e.g. Error: libusb_open() failed with LIBUSB_ERROR_ACCESS when there's a permissions problem. Also output a configure warning if libusb older than 1.0.9 is detected. Change-Id: I800f71f06672fe06c0a98a4e469f853b5021bcfe Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/1430 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2013-06-05update files to correct FSF addressSpencer Oliver
Change-Id: I429f7fd51f77b0e7c86d7a7f110ca31afd76c173 Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/1426 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
2013-04-17libusb: disable debug messages by defaultSpencer Oliver
Change-Id: I15dec0f521502139b57adaff576516af7883a74b Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/1314 Tested-by: jenkins
2013-03-13jtag: add support for some probes that are mostly compatible with opendousStefan Mahr
This patch adds support for usbprog-jtag and usbvlab that are mostly compatible to opendous except for IN and OUT endpoints and usb transfer mode. Change-Id: I44557c2449fe7473295038efa6ae4fc8d80ec7bf Signed-off-by: Stefan Mahr <stefan.mahr@sphairon.com> Reviewed-on: http://openocd.zylin.com/687 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2013-01-27libusb: idProduct of USB device may be zeroHsiangkai Wang
There is no constraint about idProduct in USB spec. So, pids[i] may be 0 for USB devices. Change-Id: I19d8974f4e7082e8b7e1f2d33c019ac4e61bc1e2 Signed-off-by: Hsiangkai Wang <hsiangkai@gmail.com> Reviewed-on: http://openocd.zylin.com/1091 Tested-by: jenkins Reviewed-by: Xiaofan <xiaofanc@gmail.com> Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
2012-02-16Fix typo that result in recursion.Mathias K
Change-Id: Ie1102b4960bcb5acb254eae69b94fe87ab33dd0b Signed-off-by: Mathias K <kesmtp@freenet.de> Reviewed-on: http://openocd.zylin.com/462 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
2012-02-06build: cleanup src/jtag/drivers directorySpencer Oliver
Change-Id: I99c08ec0132d5a15250050e718310f1ddd9fe546 Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/425 Tested-by: jenkins
2011-12-16Initialize return value.Mathias K
Because no future error checking we will initialize the pointer to a know value. Change-Id: I2466eeb413245a398927ec9f3742c2a9a3d51baf Signed-off-by: Mathias K <kesmtp@freenet.de> Reviewed-on: http://openocd.zylin.com/283 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-by: Øyvind Harboe <oyvindharboe@gmail.com>
2011-11-18libusb-1.0 supportMauro Gamba
The configuration script check for libusb-1.0 availability first and only if not found check for libusb-0. So if both libraries are installed on the system the build script will use libusb-1.0 It's possible to force compiling with libusb-0 with the --enable-libusb0 switch. If the driver support only libusb0 the script check anly for it. Change-Id: I7eb045d4e2bd553abefad53f3f4023ff46b0f5f6 Signed-off-by: Mauro Gamba <maurillo71@gmail.com> Reviewed-on: http://openocd.zylin.com/33 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>