OK, here a second version, please let me know if it is ok.

thank you.

On Sun, Jan 16, 2011 at 10:43 PM, Mike Frysinger <[email protected]> wrote:
> please keep the lists in cable_list.h and generic_usbconn_list.h sorted
>
> your ft2232.c changes seem to be against an older version because it is
> copying older styles that have been fixed -- useless casts against the cable-
>>params and useless parens around the cmd_root
>
> please fix & resubmit ... the rest looks fine
> -mike
>
Index: urjtag/src/tap/cable_list.h
===================================================================
--- urjtag/src/tap/cable_list.h	(revision 1869)
+++ urjtag/src/tap/cable_list.h	(working copy)
@@ -55,6 +55,7 @@
 _URJ_CABLE(ft2232_jtagkey)
 _URJ_CABLE(ft2232_milkymist)
 _URJ_CABLE(ft2232_oocdlinks)
+_URJ_CABLE(ft2232_usbjtagrs232)
 _URJ_CABLE(ft2232_signalyzer)
 _URJ_CABLE(ft2232_turtelizer2)
 _URJ_CABLE(ft2232_usbscarab2)
Index: urjtag/src/tap/cable/generic_usbconn_list.h
===================================================================
--- urjtag/src/tap/cable/generic_usbconn_list.h	(revision 1869)
+++ urjtag/src/tap/cable/generic_usbconn_list.h	(working copy)
@@ -54,6 +54,7 @@
 _URJ_USB_FTDX(jtagkey)
 _URJ_USB_FTDX(milkymist)
 _URJ_USB_FTDX(oocdlinks)
+_URJ_USB_FTDX(usbjtagrs232)
 _URJ_USB_FTDX(signalyzer)
 _URJ_USB_FTDX(turtelizer2)
 _URJ_USB_FTDX(usbscarab2)
Index: urjtag/src/tap/cable/ft2232.c
===================================================================
--- urjtag/src/tap/cable/ft2232.c	(revision 1869)
+++ urjtag/src/tap/cable/ft2232.c	(working copy)
@@ -138,6 +138,16 @@
 #define BITMASK_OOCDLINKS_nSRST_nOE (1 << BIT_OOCDLINKS_nSRST_nOE)
 #define BITMASK_OOCDLINKS_nSRST (1 << BIT_OOCDLINKS_nSRST)
 
+/* bit and bitmask definitions for USB<=>JTAG&RS232 */
+#define BIT_USBJTAGRS232_nTRST_nOE 2
+#define BIT_USBJTAGRS232_nTRST     0
+#define BIT_USBJTAGRS232_nSRST_nOE 3
+#define BIT_USBJTAGRS232_nSRST     1
+#define BITMASK_USBJTAGRS232_nTRST_nOE (1 << BIT_USBJTAGRS232_nTRST_nOE)
+#define BITMASK_USBJTAGRS232_nTRST (1 << BIT_USBJTAGRS232_nTRST)
+#define BITMASK_USBJTAGRS232_nSRST_nOE (1 << BIT_USBJTAGRS232_nSRST_nOE)
+#define BITMASK_USBJTAGRS232_nSRST (1 << BIT_USBJTAGRS232_nSRST)
+
 /* bit and bitmask definitions for Turtelizer 2 */
 #define BIT_TURTELIZER2_nJTAGOE 4
 #define BIT_TURTELIZER2_RST     6
@@ -583,6 +593,59 @@
 
 
 static int
+ft2232_usbjtagrs232_init (urj_cable_t *cable)
+{
+    params_t *params = cable->params;
+    urj_tap_cable_cx_cmd_root_t *cmd_root = &params->cmd_root;
+
+    if (urj_tap_usbconn_open (cable->link.usb) != URJ_STATUS_OK)
+        return URJ_STATUS_FAIL;
+
+    /* static low byte value and direction */
+    params->low_byte_value = 0;
+    params->low_byte_dir = 0;
+
+    /* Set Data Bits Low Byte
+       TCK = 0, TMS = 1, TDI = 0 */
+    urj_tap_cable_cx_cmd_queue (cmd_root, 0);
+    urj_tap_cable_cx_cmd_push (cmd_root, SET_BITS_LOW);
+    urj_tap_cable_cx_cmd_push (cmd_root,
+                               params->low_byte_value | BITMASK_TMS);
+    urj_tap_cable_cx_cmd_push (cmd_root,
+                               params->low_byte_dir | BITMASK_TCK
+                               | BITMASK_TDI | BITMASK_TMS);
+
+    /* Set Data Bits High Byte
+       default:
+       TRST = 1
+       TRST buffer enable = 0
+       SRST = 1
+       SRST buffer enable = 0 */
+    params->high_byte_value = BITMASK_USBJTAGRS232_nTRST
+        | BITMASK_USBJTAGRS232_nSRST;
+    params->high_byte_dir = BITMASK_USBJTAGRS232_nTRST
+        | BITMASK_USBJTAGRS232_nTRST_nOE
+        | BITMASK_USBJTAGRS232_nSRST | BITMASK_USBJTAGRS232_nSRST_nOE;
+    urj_tap_cable_cx_cmd_push (cmd_root, SET_BITS_HIGH);
+    urj_tap_cable_cx_cmd_push (cmd_root, params->high_byte_value);
+    urj_tap_cable_cx_cmd_push (cmd_root, 0);
+    urj_tap_cable_cx_cmd_push (cmd_root, SET_BITS_HIGH);
+    urj_tap_cable_cx_cmd_push (cmd_root, params->high_byte_value);
+    urj_tap_cable_cx_cmd_push (cmd_root, params->high_byte_dir);
+
+    ft2232_set_frequency (cable, FT2232_MAX_TCK_FREQ);
+
+    params->bit_trst = BIT_USBJTAGRS232_nTRST + 8; /* member of HIGH byte */
+    params->bit_reset = BIT_USBJTAGRS232_nSRST + 8;        /* member of HIGH byte */
+
+    params->last_tdo_valid = 0;
+    params->signals = URJ_POD_CS_TRST | URJ_POD_CS_RESET;
+
+    return URJ_STATUS_OK;
+}
+
+
+static int
 ft2232_turtelizer2_init (urj_cable_t *cable)
 {
     params_t *params = cable->params;
@@ -1080,6 +1143,49 @@
 
 
 static void
+ft2232_usbjtagrs232_done (urj_cable_t *cable)
+{
+    params_t *params = cable->params;
+    urj_tap_cable_cx_cmd_root_t *cmd_root = &params->cmd_root;
+
+    /* Set Data Bits Low Byte
+       set all to input */
+    urj_tap_cable_cx_cmd_queue (cmd_root, 0);
+    urj_tap_cable_cx_cmd_push (cmd_root, SET_BITS_LOW);
+    urj_tap_cable_cx_cmd_push (cmd_root, 0);
+    urj_tap_cable_cx_cmd_push (cmd_root, 0);
+
+    /* Set Data Bits High Byte
+       disable output drivers */
+    urj_tap_cable_cx_cmd_push (cmd_root, SET_BITS_HIGH);
+    urj_tap_cable_cx_cmd_push (cmd_root,
+                               BITMASK_USBJTAGRS232_nTRST
+                               | BITMASK_USBJTAGRS232_nTRST_nOE
+                               | BITMASK_USBJTAGRS232_nSRST |
+                               BITMASK_USBJTAGRS232_nSRST_nOE);
+    urj_tap_cable_cx_cmd_push (cmd_root,
+                               BITMASK_USBJTAGRS232_nTRST |
+                               BITMASK_USBJTAGRS232_nTRST_nOE |
+                               BITMASK_USBJTAGRS232_nSRST |
+                               BITMASK_USBJTAGRS232_nSRST_nOE);
+
+    /* Set Data Bits High Byte
+       set all to input */
+    urj_tap_cable_cx_cmd_push (cmd_root, SET_BITS_HIGH);
+    urj_tap_cable_cx_cmd_push (cmd_root,
+                               BITMASK_USBJTAGRS232_nTRST
+                               | BITMASK_USBJTAGRS232_nTRST_nOE
+                               | BITMASK_USBJTAGRS232_nSRST |
+                               BITMASK_USBJTAGRS232_nSRST_nOE);
+    urj_tap_cable_cx_cmd_push (cmd_root, 0);
+    urj_tap_cable_cx_xfer (cmd_root, &imm_cmd, cable,
+                           URJ_TAP_CABLE_COMPLETELY);
+
+    urj_tap_cable_generic_usbconn_done (cable);
+}
+
+
+static void
 ft2232_turtelizer2_done (urj_cable_t *cable)
 {
     params_t *params = cable->params;
@@ -2153,6 +2259,26 @@
 };
 URJ_DECLARE_FTDX_CABLE(0x0403, 0xbaf8, "-mpsse", "OOCDLink-s", oocdlinks)
 
+const urj_cable_driver_t urj_tap_cable_ft2232_usbjtagrs232_driver = {
+    "USB<=>JTAG&RS232",
+    N_("USB<=>JTAG&RS232 (FT2232) Cable (EXPERIMENTAL)"),
+    URJ_CABLE_DEVICE_USB,
+    { .usb = ft2232_connect, },
+    urj_tap_cable_generic_disconnect,
+    ft2232_cable_free,
+    ft2232_usbjtagrs232_init,
+    ft2232_usbjtagrs232_done,
+    ft2232_set_frequency,
+    ft2232_clock,
+    ft2232_get_tdo,
+    ft2232_transfer,
+    ft2232_set_signal,
+    urj_tap_cable_generic_get_signal,
+    ft2232_flush,
+    ftdx_usbcable_help
+};
+URJ_DECLARE_FTDX_CABLE(0x1457, 0x5118, "-mpsse", "USB<=>JTAG&RS232", usbjtagrs232)
+
 const urj_cable_driver_t urj_tap_cable_ft2232_turtelizer2_driver = {
     "Turtelizer2",
     N_("Turtelizer 2 Rev. B (FT2232) Cable (EXPERIMENTAL)"),
------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
UrJTAG-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/urjtag-development

Reply via email to