X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Ffpga.git;a=blobdiff_plain;f=fx2%2Fcypress_fx2_xilprg.patch;fp=fx2%2Fcypress_fx2_xilprg.patch;h=96d9eab1032bc7886914ce1d31f3b2367ee0ecfa;hp=0000000000000000000000000000000000000000;hb=377aec2d8eaacb1f970ae36154f36a7f2554b7c7;hpb=6b7ac2a1220c38d01b25fb8a3c9ec649e9398fda diff --git a/fx2/cypress_fx2_xilprg.patch b/fx2/cypress_fx2_xilprg.patch new file mode 100644 index 0000000..96d9eab --- /dev/null +++ b/fx2/cypress_fx2_xilprg.patch @@ -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 \ + $(SRC_DIR)/chip.cpp \ + $(SRC_DIR)/parport.cpp \ ++ $(SRC_DIR)/onbusb.cpp \ + $(SRC_DIR)/cable.cpp \ + $(SRC_DIR)/digilent.cpp \ + $(SRC_DIR)/xilinx.cpp +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" + #include "cmdline.h" + #include "digilent.h" ++#include "onbusb.h" + #include "parport.h" + + cable::cable() +@@ -587,6 +588,9 @@ + if (stricmp(argv[0], "dusb") == 0) + cbl = new digilent; + else ++ if (stricmp(argv[0], "ousb") ==0) ++ cbl = new onbusb; ++ else + { + msgf(STR_INVALID_CABLE_DEF); + return NULL; +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 @@ ++/* ++ * onboard usb ++ * ++ * author: till & frank zirkelbach ++ * ++ */ ++ ++#include "xilprg.h" ++#include "utils.h" ++#include "onbusb.h" ++ ++onbusb::onbusb() ++{ ++ handle=NULL; ++} ++ ++onbusb::~onbusb() ++{ ++} ++ ++int onbusb::open() ++{ ++ ++ struct usb_bus *bus; ++ ++ usb_init(); ++ usb_find_busses(); ++ usb_find_devices(); ++ ++ bus=usb_get_busses(); ++ while(bus) { ++ dev=bus->devices; ++ while(dev) { ++ if(dev->descriptor.idVendor==USB_VENDOR_ID && ++ dev->descriptor.idProduct==USB_PRODUCT_ID) ++ /* found the device */ ++ return 0; ++ dev=dev->next; ++ } ++ bus=bus->next; ++ } ++ ++ return -1; ++ ++ handle=usb_open(dev); ++ if(handle==NULL) ++ goto cleanup; ++ ++ if(usb_set_configuration(handle,1)<0) ++ goto cleanup; ++ ++ if(usb_claim_interface(handle,0)<0) ++ goto cleanup; ++ ++ if(usb_set_altinterface(handle,1)<0) ++ goto cleanup; ++ ++ data = 0x10; ++ ++ reset_tap_state(); ++ ++ return 0; ++ ++cleanup: ++ ++ close(); ++ ++ return 1; ++ ++} ++ ++int onbusb::close() ++{ ++ ++ usb_close(handle); ++ ++ return 0; ++} ++ ++int onbusb::get_description(string& desc) ++{ ++ char s[256]; ++ sprintf(s, "onboard usb bitbanging"); ++ desc = s; ++ return 0; ++} ++ ++void onbusb::set_tdi(int bit) ++{ ++ if (bit) data |= 0x04; else data &= ~0x04; ++ data|=0xa0; ++ usb_bulk_write(handle,0x01,&data,1,0); ++} ++ ++void onbusb::set_tck(int bit) ++{ ++ if (bit) data |= 0x10; else data &= ~0x10; ++ data|=0xa0; ++ usb_bulk_write(handle,0x01,&data,1,0); ++} ++ ++void onbusb::set_tms(int bit) ++{ ++ if (bit) data |= 0x08; else data &= ~0x08; ++ data|=0xa0; ++ usb_bulk_write(handle,0x01,&data,1,0); ++} ++ ++int onbusb::get_tdo() ++{ ++ usb_bulk_read(handle,0x81,&data,1,0); ++ return data & 0x01 ? 1 : 0; ++} +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 @@ ++/* ++ * onboard usb ++ * ++ * author: till & frank zirkelbach ++ * ++ */ ++ ++#ifndef _ONBUSB_H_INCLUDED_ ++#define _ONBUSB_H_INCLUDED_ ++ ++#include "cable.h" ++ ++#include ++ ++class onbusb : public cable ++{ ++public: ++ onbusb(); ++ virtual ~onbusb(); ++ ++ enum ++ { ++ USB_VENDOR_ID = 0x04b4, ++ USB_PRODUCT_ID = 0x8613 ++ }; ++ ++ virtual int open(); ++ virtual int close(); ++ ++ virtual int get_description(string&); ++ ++ virtual void set_tdi(int); ++ virtual void set_tck(int); ++ virtual void set_tms(int); ++ virtual int get_tdo(); ++ ++protected: ++ char data; ++ struct usb_device *dev; ++ usb_dev_handle *handle; ++}; ++ ++#endif +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 + "cable\0" + "Sets programmer cable\0" +- "cable {xil3 [ioaddr]|dusb}\0", ++ "cable {xil3 [ioaddr]|dusb|ousb}\0", + //STR_CMD_CHIPS + "chips\0" + "Prints supported devices\0"