text: /***************************************************************************
   *   Copyright (C) 2007-2008 by Øyvind Harboe                              *
   *                                                                         *
   *   This program is free software; you can redistribute it and/or modify  *
   *   it under the terms of the GNU General Public License as published by  *
   *   the Free Software Foundation; either version 2 of the License, or     *
   *   (at your option) any later version.                                   *
   *                                                                         *
   *   This program is distributed in the hope that it will be useful,       *
   *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
   *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
   *   GNU General Public License for more details.                          *
   *                                                                         *
   *   You should have received a copy of the GNU General Public License     *
   *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
   ***************************************************************************/
  
  #ifdef HAVE_CONFIG_H
  #include "config.h"
  #endif
  
  #include <jtag/jtag.h>
  #include <target/embeddedice.h>
  #include <jtag/minidriver.h>
  #include <jtag/interface.h>
  
  struct jtag_interface minidummy_interface = {
  	.name = "minidummy",
  	.execute_queue = NULL,
  	.speed = NULL,
  	.commands = NULL,
  	.init = NULL,
  	.quit = NULL,
  	.khz = NULL,
  	.speed_div = NULL,
  	.power_dropout = NULL,
  	.srst_asserted = NULL,
  };
  
  int interface_jtag_execute_queue(void)
  {
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  int interface_jtag_add_ir_scan(struct jtag_tap *active, const struct scan_field *fields,
  		tap_state_t state)
  {
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  int interface_jtag_add_plain_ir_scan(int num_bits, const uint8_t *out_bits,
  		uint8_t *in_bits, tap_state_t state)
  {
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  int interface_jtag_add_dr_scan(struct jtag_tap *active, int num_fields,
  		const struct scan_field *fields, tap_state_t state)
  {
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  int interface_jtag_add_plain_dr_scan(int num_bits, const uint8_t *out_bits,
  		uint8_t *in_bits, tap_state_t state)
  {
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  int interface_jtag_add_tlr()
  {
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  int interface_jtag_add_reset(int req_trst, int req_srst)
  {
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  int interface_jtag_add_runtest(int num_cycles, tap_state_t state)
  {
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  int interface_jtag_add_clocks(int num_cycles)
  {
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  int interface_jtag_add_sleep(uint32_t us)
  {
  	jtag_sleep(us);
  	return ERROR_OK;
  }
  
  int interface_jtag_add_pathmove(int num_states, const tap_state_t *path)
  {
  	int state_count;
  	int tms = 0;
  
  	state_count = 0;
  
  	tap_state_t cur_state = cmd_queue_cur_state;
  
  	while (num_states) {
  		if (tap_state_transition(cur_state, false) == path[state_count])
  			tms = 0;
  		else if (tap_state_transition(cur_state, true) == path[state_count])
  			tms = 1;
  		else {
  			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition",
  					tap_state_name(cur_state), tap_state_name(path[state_count]));
  			exit(-1);
  		}
  
  		/* synchronously do the operation here */
  
  		cur_state = path[state_count];
  		state_count++;
  		num_states--;
  	}
  
  
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  int interface_add_tms_seq(unsigned num_bits, const uint8_t *seq, enum tap_state state)
  {
  	/* synchronously do the operation here */
  
  	return ERROR_OK;
  }
  
  void embeddedice_write_dcc(struct jtag_tap *tap, int reg_addr, const uint8_t *buffer,
  		int little, int count)
  {
  	int i;
  	for (i = 0; i < count; i++) {
  		embeddedice_write_reg_inner(tap, reg_addr, fast_target_buffer_get_u32(buffer, little));
  		buffer += 4;
  	}
  }
  
  int arm11_run_instr_data_to_core_noack_inner(struct jtag_tap *tap, uint32_t opcode,
  		uint32_t *data, size_t count)
  {
  	int arm11_run_instr_data_to_core_noack_inner_default(struct jtag_tap *tap, \
  			uint32_t opcode, uint32_t *data, size_t count);
  	return arm11_run_instr_data_to_core_noack_inner_default(tap, opcode, data, count);
  }
  