#include "config.h"
#endif
-#include "replacements.h"
-
#include "arm_adi_v5.h"
-#include "jtag.h"
-#include "log.h"
#include "time_support.h"
-#include <stdlib.h>
-#include <string.h>
/*
* Transaction Mode:
fields[0].in_value = ack;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
fields[1].out_value = outvalue;
fields[1].in_value = invalue;
- fields[1].in_handler = NULL;
+
buf_set_u32(&out_addr_buf, 0, 3, ((reg_addr >> 1) & 0x6) | (RnW & 0x1));
fields[0].out_value = &out_addr_buf;
fields[0].in_value = ack;
- fields[0].in_handler = NULL;
+
fields[1].tap = jtag_info->tap;
buf_set_u32(out_value_buf, 0, 32, outvalue);
fields[1].out_value = out_value_buf;
fields[1].in_value = NULL;
- fields[1].in_handler = NULL;
+
if (invalue)
{
- u8 tmp[4];
- fields[1].in_value = tmp;
- jtag_add_dr_scan_now(2, fields, TAP_INVALID);
+ fields[1].in_value = (u8 *)invalue;
+ jtag_add_dr_scan(2, fields, TAP_INVALID);
- *invalue=flip_u32(le_to_h_u32(tmp), 32);
+ jtag_add_callback(arm_le_to_h_u32, (u8 *)invalue);
} else
{
return retval;
}
+/* FIX!!! is this a potential performance bottleneck w.r.t. requiring too many
+ * roundtrips when jtag_execute_queue() has a large overhead(e.g. for USB)s?
+ *
+ * The solution is to arrange for a large out/in scan in this loop and
+ * and convert data afterwards.
+ */
int mem_ap_read_buf_packed_u8(swjdp_common_t *swjdp, u8 *buffer, int count, u32 address)
{
u32 invalue;