#include "types.h"
#include "binarybuffer.h"
+#include "log.h"
#include "command.h"
/* A list of unambigious single clock state transitions, not
* all drivers can support this, but it is required for e.g.
* XScale and Xilinx support
+ *
+ * Note! TAP_TLR must not be used in the path!
*/
extern int jtag_add_pathmove(int num_states, enum tap_state *path);
extern int interface_jtag_add_pathmove(int num_states, enum tap_state *path);
extern int jtag_add_reset(int trst, int srst);
extern int interface_jtag_add_reset(int trst, int srst);
extern int jtag_add_end_state(enum tap_state endstate);
-extern int inteface_jtag_add_end_state(enum tap_state endstate);
+extern int interface_jtag_add_end_state(enum tap_state endstate);
extern int jtag_add_sleep(u32 us);
extern int interface_jtag_add_sleep(u32 us);
+
+
+
/*
* For software FIFO implementations, the queued commands can be executed
* during this call or earlier. A sw queue might decide to push out
#define ERROR_JTAG_DEVICE_ERROR (-107)
+/* Here a #define MINIDRIVER() and an inline version of hw fifo interface_jtag_add_shift can be defined */
+
+#ifndef MINIDRIVER
+extern int interface_jtag_add_shift(const enum tap_state shift_state, const enum tap_state end_state, int bits, u32 value);
+#endif
+
+/* Enter the shift_state and cycle "bits" times out of that state.
+ *
+ * So if the end_state!=shift_state, then the transition from shift_state to
+ * end_state counts as a transition out of shift_state.
+ *
+ * Legal shift states TAP_SD and TAP_SI
+ *
+ * Legal end state does not include TAP_TLR
+ *
+ * Bits are clocked out from value LSB first.
+ */
+static __inline int jtag_add_shift(const enum tap_state shift_state, const enum tap_state end_state, int bits, u32 value)
+{
+ int retval;
+ retval=interface_jtag_add_shift(shift_state, end_state, bits, value);
+ return retval;
+}
+
+
#endif /* JTAG_H */