usb init fixed
authorhackbard <hackbard>
Tue, 10 Apr 2007 09:37:13 +0000 (09:37 +0000)
committerhackbard <hackbard>
Tue, 10 Apr 2007 09:37:13 +0000 (09:37 +0000)
fx2/cypress_fx2_xilprg.patch

index 96d9eab..6b9f513 100644 (file)
@@ -1,6 +1,218 @@
+diff -Nur xilprg-0.5/cypress_fx2_xilprg.patch xilprg-new/cypress_fx2_xilprg.patch
+--- xilprg-0.5/cypress_fx2_xilprg.patch        1970-01-01 01:00:00.000000000 +0100
++++ xilprg-new/cypress_fx2_xilprg.patch        2007-04-10 10:33:17.000000000 +0200
+@@ -0,0 +1,208 @@
++diff -Nur xilprg-0.5/makefile xilprg-new/makefile
++--- xilprg-0.5/makefile       2006-08-23 07:41:20.000000000 +0200
+++++ xilprg-new/makefile       2007-04-07 17:09:16.000000000 +0200
++@@ -40,6 +40,7 @@
++      $(SRC_DIR)/prgfile.cpp \\r
++      $(SRC_DIR)/chip.cpp \\r
++      $(SRC_DIR)/parport.cpp \\r
+++     $(SRC_DIR)/onbusb.cpp \\r
++      $(SRC_DIR)/cable.cpp \\r
++      $(SRC_DIR)/digilent.cpp \\r
++      $(SRC_DIR)/xilinx.cpp\r
++diff -Nur xilprg-0.5/src/cable.cpp xilprg-new/src/cable.cpp
++--- xilprg-0.5/src/cable.cpp  2006-08-23 07:38:34.000000000 +0200
+++++ xilprg-new/src/cable.cpp  2007-04-07 17:20:55.000000000 +0200
++@@ -49,6 +49,7 @@
++ #include "chip.h"\r
++ #include "cmdline.h"\r
++ #include "digilent.h"\r
+++#include "onbusb.h"\r
++ #include "parport.h"\r
++ \r
++ cable::cable()\r
++@@ -587,6 +588,9 @@
++     if (stricmp(argv[0], "dusb") == 0)\r
++         cbl = new digilent;\r
++     else\r
+++    if (stricmp(argv[0], "ousb") ==0)\r
+++     cbl = new onbusb;\r
+++    else\r
++     {\r
++         msgf(STR_INVALID_CABLE_DEF);\r
++         return NULL;\r
++diff -Nur xilprg-0.5/src/onbusb.cpp xilprg-new/src/onbusb.cpp
++--- xilprg-0.5/src/onbusb.cpp 1970-01-01 01:00:00.000000000 +0100
+++++ xilprg-new/src/onbusb.cpp 2007-04-07 17:15:34.000000000 +0200
++@@ -0,0 +1,113 @@
+++/*\r
+++ * onboard usb\r
+++ *\r
+++ * author: till & frank zirkelbach\r
+++ *\r
+++ */\r
+++\r
+++#include "xilprg.h"\r
+++#include "utils.h"\r
+++#include "onbusb.h"\r
+++\r
+++onbusb::onbusb()\r
+++{\r
+++   handle=NULL;\r
+++}\r
+++\r
+++onbusb::~onbusb()\r
+++{\r
+++}\r
+++\r
+++int onbusb::open()\r
+++{\r
+++   \r
+++    struct usb_bus *bus; \r
+++\r
+++    usb_init();\r
+++    usb_find_busses();\r
+++    usb_find_devices();\r
+++\r
+++    bus=usb_get_busses();\r
+++    while(bus) {\r
+++     dev=bus->devices;\r
+++     while(dev) {\r
+++             if(dev->descriptor.idVendor==USB_VENDOR_ID &&\r
+++                dev->descriptor.idProduct==USB_PRODUCT_ID)\r
+++                     /* found the device */\r
+++                     return 0;\r
+++             dev=dev->next;\r
+++     }\r
+++     bus=bus->next;\r
+++    }\r
+++\r
+++    return -1;\r
+++\r
+++    handle=usb_open(dev);\r
+++    if(handle==NULL)\r
+++     goto cleanup;\r
+++\r
+++    if(usb_set_configuration(handle,1)<0)\r
+++     goto cleanup;\r
+++\r
+++    if(usb_claim_interface(handle,0)<0)\r
+++     goto cleanup;\r
+++\r
+++    if(usb_set_altinterface(handle,1)<0)\r
+++     goto cleanup;\r
+++\r
+++    data = 0x10;\r
+++\r
+++    reset_tap_state();\r
+++\r
+++    return 0;\r
+++\r
+++cleanup:\r
+++\r
+++    close();\r
+++\r
+++    return 1;\r
+++\r
+++}\r
+++\r
+++int onbusb::close()\r
+++{\r
+++\r
+++    usb_close(handle);\r
+++\r
+++    return 0;\r
+++}\r
+++\r
+++int onbusb::get_description(string& desc)\r
+++{\r
+++    char s[256];\r
+++    sprintf(s, "onboard usb bitbanging");\r
+++    desc = s;\r
+++    return 0;\r
+++}\r
+++\r
+++void onbusb::set_tdi(int bit)\r
+++{\r
+++    if (bit) data |= 0x04; else data &= ~0x04;\r
+++    data|=0xa0;\r
+++    usb_bulk_write(handle,0x01,&data,1,0);\r
+++}\r
+++\r
+++void onbusb::set_tck(int bit)\r
+++{\r
+++    if (bit) data |= 0x10; else data &= ~0x10;\r
+++    data|=0xa0;\r
+++    usb_bulk_write(handle,0x01,&data,1,0);\r
+++}\r
+++\r
+++void onbusb::set_tms(int bit)\r
+++{\r
+++    if (bit) data |= 0x08; else data &= ~0x08;\r
+++    data|=0xa0;\r
+++    usb_bulk_write(handle,0x01,&data,1,0);\r
+++}\r
+++\r
+++int onbusb::get_tdo()\r
+++{\r
+++    usb_bulk_read(handle,0x81,&data,1,0);\r
+++    return data & 0x01 ? 1 : 0;\r
+++}\r
++diff -Nur xilprg-0.5/src/onbusb.h xilprg-new/src/onbusb.h
++--- xilprg-0.5/src/onbusb.h   1970-01-01 01:00:00.000000000 +0100
+++++ xilprg-new/src/onbusb.h   2007-04-07 17:14:07.000000000 +0200
++@@ -0,0 +1,43 @@
+++/*\r
+++ * onboard usb\r
+++ *\r
+++ * author: till & frank zirkelbach\r
+++ *\r
+++ */\r
+++\r
+++#ifndef _ONBUSB_H_INCLUDED_\r
+++#define _ONBUSB_H_INCLUDED_\r
+++\r
+++#include "cable.h"\r
+++\r
+++#include <usb.h>\r
+++\r
+++class onbusb : public cable\r
+++{\r
+++public:\r
+++     onbusb();\r
+++     virtual ~onbusb();\r
+++\r
+++    enum\r
+++    {\r
+++     USB_VENDOR_ID   = 0x04b4,\r
+++     USB_PRODUCT_ID  = 0x8613\r
+++    };\r
+++\r
+++    virtual int open();\r
+++    virtual int close();\r
+++\r
+++    virtual int get_description(string&);\r
+++\r
+++    virtual void set_tdi(int);\r
+++    virtual void set_tck(int);\r
+++    virtual void set_tms(int);\r
+++    virtual int get_tdo();\r
+++\r
+++protected:\r
+++    char data;\r
+++    struct usb_device *dev;\r
+++    usb_dev_handle *handle;\r
+++};\r
+++\r
+++#endif\r
++diff -Nur xilprg-0.5/src/strtable.cpp xilprg-new/src/strtable.cpp
++--- xilprg-0.5/src/strtable.cpp       2006-08-23 07:38:34.000000000 +0200
+++++ xilprg-new/src/strtable.cpp       2007-04-07 16:56:25.000000000 +0200
++@@ -137,7 +137,7 @@
++     //STR_CMD_CABLE\r
++     "cable\0" \r
++     "Sets programmer cable\0"\r
++-    "cable {xil3 [ioaddr]|dusb}\0",\r
+++    "cable {xil3 [ioaddr]|dusb|ousb}\0",\r
++     //STR_CMD_CHIPS\r
++     "chips\0"\r
++     "Prints supported devices\0" \r
 diff -Nur xilprg-0.5/makefile xilprg-new/makefile
 --- xilprg-0.5/makefile        2006-08-23 07:41:20.000000000 +0200
-+++ xilprg-new/makefile        2007-04-07 17:09:16.000000000 +0200
++++ xilprg-new/makefile        2007-04-10 10:33:28.000000000 +0200
 @@ -40,6 +40,7 @@
        $(SRC_DIR)/prgfile.cpp \\r
        $(SRC_DIR)/chip.cpp \\r
@@ -11,7 +223,7 @@ diff -Nur xilprg-0.5/makefile xilprg-new/makefile
        $(SRC_DIR)/xilinx.cpp\r
 diff -Nur xilprg-0.5/src/cable.cpp xilprg-new/src/cable.cpp
 --- xilprg-0.5/src/cable.cpp   2006-08-23 07:38:34.000000000 +0200
-+++ xilprg-new/src/cable.cpp   2007-04-07 17:20:55.000000000 +0200
++++ xilprg-new/src/cable.cpp   2007-04-10 10:33:28.000000000 +0200
 @@ -49,6 +49,7 @@
  #include "chip.h"\r
  #include "cmdline.h"\r
@@ -32,8 +244,8 @@ diff -Nur xilprg-0.5/src/cable.cpp xilprg-new/src/cable.cpp
          return NULL;\r
 diff -Nur xilprg-0.5/src/onbusb.cpp xilprg-new/src/onbusb.cpp
 --- xilprg-0.5/src/onbusb.cpp  1970-01-01 01:00:00.000000000 +0100
-+++ xilprg-new/src/onbusb.cpp  2007-04-07 17:15:34.000000000 +0200
-@@ -0,0 +1,113 @@
++++ xilprg-new/src/onbusb.cpp  2007-04-10 11:32:01.000000000 +0200
+@@ -0,0 +1,126 @@
 +/*\r
 + * onboard usb\r
 + *\r
@@ -68,9 +280,39 @@ diff -Nur xilprg-0.5/src/onbusb.cpp xilprg-new/src/onbusb.cpp
 +      dev=bus->devices;\r
 +      while(dev) {\r
 +              if(dev->descriptor.idVendor==USB_VENDOR_ID &&\r
-+                 dev->descriptor.idProduct==USB_PRODUCT_ID)\r
++                 dev->descriptor.idProduct==USB_PRODUCT_ID) {
++
 +                      /* found the device */\r
++
++                      printf("found matching usb device\n");
++
++                      handle=usb_open(dev);\r
++                      if(handle==NULL)\r
++                              goto cleanup;\r
++
++                      printf("got handle\n");
++\r
++                      if(usb_set_configuration(handle,1)<0)\r
++                              goto cleanup;\r
++
++                      printf("set configuration\n");
++\r
++                      if(usb_claim_interface(handle,0)<0)\r
++                              goto cleanup;\r
++
++                      printf("claimed interface\n");
++\r
++                      if(usb_set_altinterface(handle,1)<0)\r
++                              goto cleanup;\r
++
++                      printf("set alt interface\n");
++\r
++                      data = 0x10;\r
++\r
++                      reset_tap_state();\r
++\r
 +                      return 0;\r
++              }
 +              dev=dev->next;\r
 +      }\r
 +      bus=bus->next;\r
@@ -78,30 +320,13 @@ diff -Nur xilprg-0.5/src/onbusb.cpp xilprg-new/src/onbusb.cpp
 +\r
 +    return -1;\r
 +\r
-+    handle=usb_open(dev);\r
-+    if(handle==NULL)\r
-+      goto cleanup;\r
-+\r
-+    if(usb_set_configuration(handle,1)<0)\r
-+      goto cleanup;\r
-+\r
-+    if(usb_claim_interface(handle,0)<0)\r
-+      goto cleanup;\r
-+\r
-+    if(usb_set_altinterface(handle,1)<0)\r
-+      goto cleanup;\r
-+\r
-+    data = 0x10;\r
-+\r
-+    reset_tap_state();\r
-+\r
-+    return 0;\r
-+\r
 +cleanup:\r
 +\r
++    perror("device open");
++
 +    close();\r
 +\r
-+    return 1;\r
++    return -1;\r
 +\r
 +}\r
 +\r
@@ -125,7 +350,7 @@ diff -Nur xilprg-0.5/src/onbusb.cpp xilprg-new/src/onbusb.cpp
 +{\r
 +    if (bit) data |= 0x04; else data &= ~0x04;\r
 +    data|=0xa0;\r
-+    usb_bulk_write(handle,0x01,&data,1,0);\r
++    //usb_bulk_write(handle,0x01,&data,1,0);\r
 +}\r
 +\r
 +void onbusb::set_tck(int bit)\r
@@ -139,7 +364,7 @@ diff -Nur xilprg-0.5/src/onbusb.cpp xilprg-new/src/onbusb.cpp
 +{\r
 +    if (bit) data |= 0x08; else data &= ~0x08;\r
 +    data|=0xa0;\r
-+    usb_bulk_write(handle,0x01,&data,1,0);\r
++    //usb_bulk_write(handle,0x01,&data,1,0);\r
 +}\r
 +\r
 +int onbusb::get_tdo()\r
@@ -149,7 +374,7 @@ diff -Nur xilprg-0.5/src/onbusb.cpp xilprg-new/src/onbusb.cpp
 +}\r
 diff -Nur xilprg-0.5/src/onbusb.h xilprg-new/src/onbusb.h
 --- xilprg-0.5/src/onbusb.h    1970-01-01 01:00:00.000000000 +0100
-+++ xilprg-new/src/onbusb.h    2007-04-07 17:14:07.000000000 +0200
++++ xilprg-new/src/onbusb.h    2007-04-10 10:33:28.000000000 +0200
 @@ -0,0 +1,43 @@
 +/*\r
 + * onboard usb\r
@@ -196,7 +421,7 @@ diff -Nur xilprg-0.5/src/onbusb.h xilprg-new/src/onbusb.h
 +#endif\r
 diff -Nur xilprg-0.5/src/strtable.cpp xilprg-new/src/strtable.cpp
 --- xilprg-0.5/src/strtable.cpp        2006-08-23 07:38:34.000000000 +0200
-+++ xilprg-new/src/strtable.cpp        2007-04-07 16:56:25.000000000 +0200
++++ xilprg-new/src/strtable.cpp        2007-04-10 10:33:28.000000000 +0200
 @@ -137,7 +137,7 @@
      //STR_CMD_CABLE\r
      "cable\0" \r