Hi Michael:

sorry for previous one, I forget to make it sorted, please review this
patch and tell me if I miss something.
thank you.

On Fri, Jan 28, 2011 at 6:15 PM, Orasanu Lucian
<[email protected]> wrote:
> 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)
@@ -57,6 +57,7 @@
 _URJ_CABLE(ft2232_oocdlinks)
 _URJ_CABLE(ft2232_signalyzer)
 _URJ_CABLE(ft2232_turtelizer2)
+_URJ_CABLE(ft2232_usbjtagrs232)
 _URJ_CABLE(ft2232_usbscarab2)
 _URJ_CABLE(ft2232_usbtojtagif)
 #endif
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)
@@ -56,6 +56,7 @@
 _URJ_USB_FTDX(oocdlinks)
 _URJ_USB_FTDX(signalyzer)
 _URJ_USB_FTDX(turtelizer2)
+_URJ_USB_FTDX(usbjtagrs232)
 _URJ_USB_FTDX(usbscarab2)
 _URJ_USB_FTDX(usbtojtagif)
 #endif
Index: urjtag/src/tap/cable/ft2232.c
===================================================================
--- urjtag/src/tap/cable/ft2232.c	(revision 1869)
+++ urjtag/src/tap/cable/ft2232.c	(working copy)
@@ -148,6 +148,16 @@
 #define BITMASK_TURTELIZER2_nTX1LED (1 << BIT_TURTELIZER2_nTX1LED)
 #define BITMASK_TURTELIZER2_nRX1LED (1 << BIT_TURTELIZER2_nRX1LED)
 
+/* 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 USB to JTAG Interface */
 #define BIT_USBTOJTAGIF_nTRST   4
 #define BIT_USBTOJTAGIF_RST     6
@@ -631,6 +641,58 @@
 }
 
 
+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_usbtojtagif_init (urj_cable_t *cable)
 {
@@ -1120,6 +1182,48 @@
 }
 
 
+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_usbtojtagif_done (urj_cable_t *cable)
 {
@@ -2173,6 +2277,26 @@
 };
 URJ_DECLARE_FTDX_CABLE(0x0403, 0xBDC8, "-mpsse", "Turtelizer2", turtelizer2)
 
+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_usbtojtagif_driver = {
     "USB-to-JTAG-IF",
     N_("USB to JTAG Interface (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