From: oharboe at B. <oh...@ma...> - 2009-05-12 08:59:23
|
Author: oharboe Date: 2009-05-12 08:59:21 +0200 (Tue, 12 May 2009) New Revision: 1752 Modified: trunk/src/jtag/jtag.c trunk/src/jtag/jtag.h Log: added jtag_alloc_in_value32 - not used in this commit. Modified: trunk/src/jtag/jtag.c =================================================================== --- trunk/src/jtag/jtag.c 2009-05-12 06:17:22 UTC (rev 1751) +++ trunk/src/jtag/jtag.c 2009-05-12 06:59:21 UTC (rev 1752) @@ -718,7 +718,7 @@ if (fields[i].num_bits<=32) { /* This is enough space and we're executing this synchronously */ - fields[i].in_value=(u8 *)&fields[i].intmp; + fields[i].in_value=fields[i].intmp; } else { fields[i].in_value=(u8 *)malloc(CEIL(fields[i].num_bits, 8)); @@ -3562,4 +3562,12 @@ } #endif // _DEBUG_JTAG_IO_ +#ifndef HAVE_JTAG_MINIDRIVER_H +void jtag_alloc_in_value32(scan_field_t *field) +{ + field->in_value=(u8 *)cmd_queue_alloc(4); +} +#endif + + /*-----</Cable Helper API>--------------------------------------*/ Modified: trunk/src/jtag/jtag.h =================================================================== --- trunk/src/jtag/jtag.h 2009-05-12 06:17:22 UTC (rev 1751) +++ trunk/src/jtag/jtag.h 2009-05-12 06:59:21 UTC (rev 1752) @@ -277,7 +277,7 @@ /* internal work space */ int allocated; /* in_value has been allocated for the queue */ int modified; /* did we modify the in_value? */ - u32 intmp; /* temporary storage for checking synchronously */ + u8 intmp[4]; /* temporary storage for checking synchronously */ } scan_field_t; enum scan_type { @@ -565,6 +565,26 @@ extern int interface_jtag_add_ir_scan(int num_fields, scan_field_t* fields, tap_state_t endstate); extern void jtag_add_dr_scan(int num_fields, scan_field_t* fields, tap_state_t endstate); +/* set in_value to point to 32 bits of memory to scan into. This function + * is a way to handle the case of synchronous and asynchronous + * JTAG queues. + * + * In the event of an asynchronous queue execution the queue buffer + * allocation method is used, for the synchronous case the temporary 32 bits come + * from the input field itself. + */ + +#ifndef HAVE_JTAG_MINIDRIVER_H +extern void jtag_alloc_in_value32(scan_field_t *field); +#else +static __inline__ void jtag_alloc_in_value32(scan_field_t *field) +{ + field->in_value=field->intmp; +} +#endif + + + /* This version of jtag_add_dr_scan() uses the check_value/mask fields */ extern void jtag_add_dr_scan_check(int num_fields, scan_field_t* fields, tap_state_t endstate); extern int interface_jtag_add_dr_scan(int num_fields, scan_field_t* fields, tap_state_t endstate); |