X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Fjtag%2Fjtag.h;h=1564ca650c2bdab372170291e8a430337c7f0ba3;hb=f90d8fa45f2d4c9d4b7990f198b232ee55cbb4e1;hp=34a099b8ec593535304381bba24f1b3756eea098;hpb=03803a9d792d613e60fcc0b5e810e68488e17b87;p=openocd.git diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h index 34a099b8ec..1564ca650c 100644 --- a/src/jtag/jtag.h +++ b/src/jtag/jtag.h @@ -62,7 +62,7 @@ */ typedef enum tap_state { -#if BUILD_ECOSBOARD +#if BUILD_ZY1000 /* These are the old numbers. Leave as-is for now... */ TAP_RESET = 0, TAP_IDLE = 8, TAP_DRSELECT = 1, TAP_DRCAPTURE = 2, TAP_DRSHIFT = 3, TAP_DREXIT1 = 4, @@ -123,21 +123,21 @@ typedef struct scan_field_s /// The number of bits this field specifies (up to 32) int num_bits; /// A pointer to value to be scanned into the device - u8* out_value; + uint8_t* out_value; /// A pointer to a 32-bit memory location for data scanned out - u8* in_value; + uint8_t* in_value; /// The value used to check the data scanned out. - u8* check_value; + uint8_t* check_value; /// The mask to go with check_value - u8* check_mask; + uint8_t* check_mask; /// in_value has been allocated for the queue int allocated; /// Indicates we modified the in_value. int modified; /// temporary storage for performing value checks synchronously - u8 intmp[4]; + uint8_t intmp[4]; } scan_field_t; typedef struct jtag_tap_event_action_s jtag_tap_event_action_t; @@ -151,23 +151,25 @@ struct jtag_tap_s const char* tapname; const char* dotted_name; int abs_chain_position; - /// Is this TAP enabled? - int enabled; + /// Is this TAP disabled after JTAG reset? + bool disabled_after_reset; + /// Is this TAP currently enabled? + bool enabled; int ir_length; /**< size of instruction register */ - u32 ir_capture_value; - u8* expected; /**< Capture-IR expected value */ - u32 ir_capture_mask; - u8* expected_mask; /**< Capture-IR expected mask */ - u32 idcode; + uint32_t ir_capture_value; + uint8_t* expected; /**< Capture-IR expected value */ + uint32_t ir_capture_mask; + uint8_t* expected_mask; /**< Capture-IR expected mask */ + uint32_t idcode; /**< device identification code */ /// Array of expected identification codes */ - u32* expected_ids; + uint32_t* expected_ids; /// Number of expected identification codes - u8 expected_ids_cnt; + uint8_t expected_ids_cnt; /// current instruction - u8* cur_instr; + uint8_t* cur_instr; /// Bypass register selected int bypass; @@ -199,19 +201,18 @@ extern unsigned jtag_tap_count(void); * - SRST pulls TRST * - TRST asserted * - **/ + * TAP activation/deactivation is currently implemented outside the core + * using scripted code that understands the specific router type. + */ enum jtag_event { - JTAG_TRST_ASSERTED -}; - -enum jtag_tap_event { + JTAG_TRST_ASSERTED, JTAG_TAP_EVENT_ENABLE, - JTAG_TAP_EVENT_DISABLE + JTAG_TAP_EVENT_DISABLE, }; struct jtag_tap_event_action_s { - enum jtag_tap_event event; + enum jtag_event event; Jim_Obj* body; jtag_tap_event_action_t* next; }; @@ -383,6 +384,11 @@ extern void jtag_add_dr_scan_check(int num_fields, scan_field_t* fields, tap_sta */ extern void jtag_add_plain_dr_scan(int num_fields, const scan_field_t* fields, tap_state_t endstate); +/** + * Defines the type of data passed to the jtag_callback_t interface. + * The underlying type must allow storing an @c int or pointer type. + */ +typedef intptr_t jtag_callback_data_t; /** * Defines a simple JTAG callback that can allow conversions on data @@ -392,17 +398,12 @@ extern void jtag_add_plain_dr_scan(int num_fields, const scan_field_t* fields, t * For conversion types or checks that can fail, use the more complete * variant: jtag_callback_t. */ -typedef void (*jtag_callback1_t)(u8 *in); +typedef void (*jtag_callback1_t)(jtag_callback_data_t data0); /// A simpler version of jtag_add_callback4(). -extern void jtag_add_callback(jtag_callback1_t, u8 *in); +extern void jtag_add_callback(jtag_callback1_t, jtag_callback_data_t data0); -/** - * Defines the type of data passed to the jtag_callback_t interface. - * The underlying type must allow storing an @c int or pointer type. - */ -typedef intptr_t jtag_callback_data_t; /** * Defines the interface of the JTAG callback mechanism. @@ -413,7 +414,7 @@ typedef intptr_t jtag_callback_data_t; * @param data3 An integer big enough to use as an @c int or a pointer. * @returns an error code */ -typedef int (*jtag_callback_t)(u8 *in, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3); +typedef int (*jtag_callback_t)(jtag_callback_data_t data0, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3); /** @@ -444,7 +445,7 @@ typedef int (*jtag_callback_t)(u8 *in, jtag_callback_data_t data1, jtag_callback * @param data3 An integer big enough to use as an @c int or a pointer. * */ -extern void jtag_add_callback4(jtag_callback_t f, u8 *in, +extern void jtag_add_callback4(jtag_callback_t f, jtag_callback_data_t data0, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3); @@ -592,7 +593,7 @@ extern tap_state_t jtag_set_end_state(tap_state_t state); * **/ extern tap_state_t jtag_get_end_state(void); -extern void jtag_add_sleep(u32 us); +extern void jtag_add_sleep(uint32_t us); /** @@ -613,7 +614,7 @@ void jtag_add_clocks(int num_cycles); * matter if the operation was executed *before* jtag_execute_queue(), * jtag_execute_queue() will still return an error code. * - * All jtag_add_xxx() calls that have in_handler!=NULL will have been + * All jtag_add_xxx() calls that have in_handler != NULL will have been * executed when this fn returns, but if what has been queued only * clocks data out, without reading anything back, then JTAG could * be running *after* jtag_execute_queue() returns. The API does @@ -632,7 +633,7 @@ extern void jtag_execute_queue_noclear(void); int jtag_get_flush_queue_count(void); -/* can be implemented by hw+sw */ +/* can be implemented by hw + sw */ extern int jtag_power_dropout(int* dropout); extern int jtag_srst_asserted(int* srst_asserted); @@ -645,9 +646,9 @@ extern int jtag_srst_asserted(int* srst_asserted); * @param mask Pointer to scan mask; may be NULL. * @returns Nothing, but calls jtag_set_error() on any error. */ -extern void jtag_check_value_mask(scan_field_t *field, u8 *value, u8 *mask); +extern void jtag_check_value_mask(scan_field_t *field, uint8_t *value, uint8_t *mask); -extern void jtag_sleep(u32 us); +extern void jtag_sleep(uint32_t us); /* * The JTAG subsystem defines a number of error codes, @@ -690,7 +691,7 @@ extern void jtag_sleep(u32 us); * clocking data back in. Patches gladly accepted! */ extern void jtag_add_dr_out(jtag_tap_t* tap, - int num_fields, const int* num_bits, const u32* value, + int num_fields, const int* num_bits, const uint32_t* value, tap_state_t end_state);