jtag_libusb_bulk_read|write: return error code instead of size
[fw/openocd] / src / jtag / drivers / opendous.c
index 6af3b28f489209fee1aa3420a210c71abbe0288f..d5c279b08c2465152ec8fbf23687ce59c250d692 100644 (file)
@@ -23,9 +23,7 @@
  *   GNU General Public License for more details.                          *
  *                                                                         *
  *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.           *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -41,7 +39,7 @@
 #define OPENDOUS_MAX_VIDS_PIDS 4
 /* define some probes with similar interface */
 struct opendous_probe {
-       char *name;
+       const char *name;
        uint16_t VID[OPENDOUS_MAX_VIDS_PIDS];
        uint16_t PID[OPENDOUS_MAX_VIDS_PIDS];
        uint8_t READ_EP;
@@ -50,7 +48,7 @@ struct opendous_probe {
        int BUFFERSIZE;
 };
 
-static struct opendous_probe opendous_probes[] = {
+static const struct opendous_probe opendous_probes[] = {
        {"usbprog-jtag",        {0x1781, 0},                    {0x0C63, 0},                    0x82, 0x02, 0x00, 510 },
        {"opendous",            {0x1781, 0x03EB, 0},    {0xC0C0, 0x204F, 0},    0x81, 0x02, 0x00, 360 },
        {"usbvlab",                     {0x16C0, 0},                    {0x05DC, 0},                    0x81, 0x02, 0x01, 360 },
@@ -109,7 +107,7 @@ static struct pending_scan_result *pending_scan_results_buffer;
 #define FUNC_READ_DATA        0x51
 
 static char *opendous_type;
-static struct opendous_probe *opendous_probe;
+static const struct opendous_probe *opendous_probe;
 
 /* External interface functions */
 static int opendous_execute_queue(void);
@@ -187,7 +185,7 @@ COMMAND_HANDLER(opendous_handle_opendous_hw_jtag_command)
 {
        switch (CMD_ARGC) {
                case 0:
-                       command_print(CMD_CTX, "opendous hw jtag  %i", opendous_hw_jtag_version);
+                       command_print(CMD, "opendous hw jtag  %i", opendous_hw_jtag_version);
                        break;
 
                case 1: {
@@ -217,6 +215,7 @@ static const struct command_registration opendous_command_handlers[] = {
                .handler = &opendous_handle_opendous_info_command,
                .mode = COMMAND_EXEC,
                .help = "show opendous info",
+               .usage = "",
        },
        {
                .name = "opendous_hw_jtag",
@@ -235,12 +234,19 @@ static const struct command_registration opendous_command_handlers[] = {
        COMMAND_REGISTRATION_DONE
 };
 
-struct jtag_interface opendous_interface = {
+static struct jtag_interface opendous_interface = {
+       .execute_queue = opendous_execute_queue,
+};
+
+struct adapter_driver opendous_adapter_driver = {
        .name = "opendous",
+       .transports = jtag_only,
        .commands = opendous_command_handlers,
-       .execute_queue = opendous_execute_queue,
+
        .init = opendous_init,
        .quit = opendous_quit,
+
+       .jtag_ops = &opendous_interface,
 };
 
 static int opendous_execute_queue(void)
@@ -253,7 +259,7 @@ static int opendous_execute_queue(void)
        while (cmd != NULL) {
                switch (cmd->type) {
                        case JTAG_RUNTEST:
-                               DEBUG_JTAG_IO("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, \
+                               LOG_DEBUG_IO("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, \
                                        cmd->cmd.runtest->end_state);
 
                                if (cmd->cmd.runtest->end_state != -1)
@@ -262,7 +268,7 @@ static int opendous_execute_queue(void)
                                break;
 
                        case JTAG_TLR_RESET:
-                               DEBUG_JTAG_IO("statemove end in %i", cmd->cmd.statemove->end_state);
+                               LOG_DEBUG_IO("statemove end in %i", cmd->cmd.statemove->end_state);
 
                                if (cmd->cmd.statemove->end_state != -1)
                                        opendous_end_state(cmd->cmd.statemove->end_state);
@@ -270,7 +276,7 @@ static int opendous_execute_queue(void)
                                break;
 
                        case JTAG_PATHMOVE:
-                               DEBUG_JTAG_IO("pathmove: %i states, end in %i", \
+                               LOG_DEBUG_IO("pathmove: %i states, end in %i", \
                                        cmd->cmd.pathmove->num_states, \
                                        cmd->cmd.pathmove->path[cmd->cmd.pathmove->num_states - 1]);
 
@@ -278,13 +284,13 @@ static int opendous_execute_queue(void)
                                break;
 
                        case JTAG_SCAN:
-                               DEBUG_JTAG_IO("scan end in %i", cmd->cmd.scan->end_state);
+                               LOG_DEBUG_IO("scan end in %i", cmd->cmd.scan->end_state);
 
                                if (cmd->cmd.scan->end_state != -1)
                                        opendous_end_state(cmd->cmd.scan->end_state);
 
                                scan_size = jtag_build_buffer(cmd->cmd.scan, &buffer);
-                               DEBUG_JTAG_IO("scan input, length = %d", scan_size);
+                               LOG_DEBUG_IO("scan input, length = %d", scan_size);
 
 #ifdef _DEBUG_USB_COMMS_
                                opendous_debug_buffer(buffer, (scan_size + 7) / 8);
@@ -294,7 +300,7 @@ static int opendous_execute_queue(void)
                                break;
 
                        case JTAG_RESET:
-                               DEBUG_JTAG_IO("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst);
+                               LOG_DEBUG_IO("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst);
 
                                opendous_tap_execute();
 
@@ -304,7 +310,7 @@ static int opendous_execute_queue(void)
                                break;
 
                        case JTAG_SLEEP:
-                               DEBUG_JTAG_IO("sleep %" PRIi32, cmd->cmd.sleep->us);
+                               LOG_DEBUG_IO("sleep %" PRIi32, cmd->cmd.sleep->us);
                                opendous_tap_execute();
                                jtag_sleep(cmd->cmd.sleep->us);
                                break;
@@ -321,7 +327,7 @@ static int opendous_execute_queue(void)
 static int opendous_init(void)
 {
        int check_cnt;
-       struct opendous_probe *cur_opendous_probe;
+       const struct opendous_probe *cur_opendous_probe;
 
        cur_opendous_probe = opendous_probes;
 
@@ -529,7 +535,7 @@ void opendous_simple_command(uint8_t command, uint8_t _data)
 {
        int result;
 
-       DEBUG_JTAG_IO("0x%02x 0x%02x", command, _data);
+       LOG_DEBUG_IO("0x%02x 0x%02x", command, _data);
 
        usb_out_buffer[0] = 2;
        usb_out_buffer[1] = 0;
@@ -598,7 +604,7 @@ void opendous_tap_append_step(int tms, int tdi)
 
 void opendous_tap_append_scan(int length, uint8_t *buffer, struct scan_command *command)
 {
-       DEBUG_JTAG_IO("append scan, length = %d", length);
+       LOG_DEBUG_IO("append scan, length = %d", length);
 
        struct pending_scan_result *pending_scan_result = &pending_scan_results_buffer[pending_scan_results_length];
        int i;
@@ -680,7 +686,7 @@ int opendous_tap_execute(void)
                        /* Copy to buffer */
                        buf_set_buf(tdo_buffer, first, buffer, 0, length);
 
-                       DEBUG_JTAG_IO("pending scan result, length = %d", length);
+                       LOG_DEBUG_IO("pending scan result, length = %d", length);
 
 #ifdef _DEBUG_USB_COMMS_
                        opendous_debug_buffer(buffer, byte_length_out);
@@ -764,14 +770,14 @@ int opendous_usb_write(struct opendous_jtag *opendous_jtag, int out_length)
                        LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT,
                        FUNC_WRITE_DATA, 0, 0, (char *) usb_out_buffer, out_length, OPENDOUS_USB_TIMEOUT);
        } else {
-               result = jtag_libusb_bulk_write(opendous_jtag->usb_handle, OPENDOUS_WRITE_ENDPOINT, \
-                       (char *)usb_out_buffer, out_length, OPENDOUS_USB_TIMEOUT);
+               jtag_libusb_bulk_write(opendous_jtag->usb_handle, OPENDOUS_WRITE_ENDPOINT, \
+                       (char *)usb_out_buffer, out_length, OPENDOUS_USB_TIMEOUT, &result);
        }
 #ifdef _DEBUG_USB_COMMS_
        LOG_DEBUG("USB write end: %d bytes", result);
 #endif
 
-       DEBUG_JTAG_IO("opendous_usb_write, out_length = %d, result = %d", out_length, result);
+       LOG_DEBUG_IO("opendous_usb_write, out_length = %d, result = %d", out_length, result);
 
 #ifdef _DEBUG_USB_COMMS_
        opendous_debug_buffer(usb_out_buffer, out_length);
@@ -791,13 +797,13 @@ int opendous_usb_read(struct opendous_jtag *opendous_jtag)
                        LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
                        FUNC_READ_DATA, 0, 0, (char *) usb_in_buffer, OPENDOUS_IN_BUFFER_SIZE, OPENDOUS_USB_TIMEOUT);
        } else {
-               result = jtag_libusb_bulk_read(opendous_jtag->usb_handle, OPENDOUS_READ_ENDPOINT,
-                       (char *)usb_in_buffer, OPENDOUS_IN_BUFFER_SIZE, OPENDOUS_USB_TIMEOUT);
+               jtag_libusb_bulk_read(opendous_jtag->usb_handle, OPENDOUS_READ_ENDPOINT,
+                       (char *)usb_in_buffer, OPENDOUS_IN_BUFFER_SIZE, OPENDOUS_USB_TIMEOUT, &result);
        }
 #ifdef _DEBUG_USB_COMMS_
        LOG_DEBUG("USB read end: %d bytes", result);
 #endif
-       DEBUG_JTAG_IO("opendous_usb_read, result = %d", result);
+       LOG_DEBUG_IO("opendous_usb_read, result = %d", result);
 
 #ifdef _DEBUG_USB_COMMS_
        opendous_debug_buffer(usb_in_buffer, result);