]> git.sur5r.net Git - openocd/blobdiff - src/jtag/aice/aice_usb.c
target: Add 64-bit target address support
[openocd] / src / jtag / aice / aice_usb.c
index 3587721e3dbb0274d420bc36971aac9db2772918..b36e3900cb7fe77a14c7c1e2301b153ea6f8fa7b 100644 (file)
@@ -13,9 +13,7 @@
  *   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, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.           *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -43,9 +41,7 @@ static enum aice_target_endian data_endian;
 
 /* Constants for AICE command format length */
 static const int32_t AICE_FORMAT_HTDA = 3;
-static const int32_t AICE_FORMAT_HTDB  = 6;
 static const int32_t AICE_FORMAT_HTDC  = 7;
-static const int32_t AICE_FORMAT_HTDD  = 10;
 static const int32_t AICE_FORMAT_HTDMA = 4;
 static const int32_t AICE_FORMAT_HTDMB = 8;
 static const int32_t AICE_FORMAT_HTDMC = 8;
@@ -57,26 +53,9 @@ static const int32_t AICE_FORMAT_DTHMB = 4;
 
 /* Constants for AICE command */
 static const uint8_t AICE_CMD_SCAN_CHAIN = 0x00;
-static const uint8_t AICE_CMD_SELECT_TARGET = 0x01;
-static const uint8_t AICE_CMD_READ_DIM = 0x02;
-static const uint8_t AICE_CMD_READ_EDMSR = 0x03;
-static const uint8_t AICE_CMD_READ_DTR = 0x04;
-static const uint8_t AICE_CMD_READ_MEM = 0x05;
-static const uint8_t AICE_CMD_READ_MISC = 0x06;
-static const uint8_t AICE_CMD_FASTREAD_MEM = 0x07;
-static const uint8_t AICE_CMD_WRITE_DIM = 0x08;
-static const uint8_t AICE_CMD_WRITE_EDMSR = 0x09;
-static const uint8_t AICE_CMD_WRITE_DTR = 0x0A;
-static const uint8_t AICE_CMD_WRITE_MEM = 0x0B;
-static const uint8_t AICE_CMD_WRITE_MISC = 0x0C;
-static const uint8_t AICE_CMD_FASTWRITE_MEM    = 0x0D;
-static const uint8_t AICE_CMD_EXECUTE = 0x0E;
-static const uint8_t AICE_CMD_READ_MEM_B = 0x14;
-static const uint8_t AICE_CMD_READ_MEM_H = 0x15;
 static const uint8_t AICE_CMD_T_READ_MISC = 0x20;
 static const uint8_t AICE_CMD_T_READ_EDMSR = 0x21;
 static const uint8_t AICE_CMD_T_READ_DTR = 0x22;
-static const uint8_t AICE_CMD_T_READ_DIM = 0x23;
 static const uint8_t AICE_CMD_T_READ_MEM_B = 0x24;
 static const uint8_t AICE_CMD_T_READ_MEM_H = 0x25;
 static const uint8_t AICE_CMD_T_READ_MEM = 0x26;
@@ -89,11 +68,7 @@ static const uint8_t AICE_CMD_T_WRITE_MEM_B = 0x2C;
 static const uint8_t AICE_CMD_T_WRITE_MEM_H = 0x2D;
 static const uint8_t AICE_CMD_T_WRITE_MEM = 0x2E;
 static const uint8_t AICE_CMD_T_FASTWRITE_MEM = 0x2F;
-static const uint8_t AICE_CMD_T_GET_TRACE_STATUS = 0x36;
 static const uint8_t AICE_CMD_T_EXECUTE = 0x3E;
-static const uint8_t AICE_CMD_AICE_PROGRAM_READ = 0x40;
-static const uint8_t AICE_CMD_AICE_PROGRAM_WRITE = 0x41;
-static const uint8_t AICE_CMD_AICE_PROGRAM_CONTROL = 0x42;
 static const uint8_t AICE_CMD_READ_CTRL = 0x50;
 static const uint8_t AICE_CMD_WRITE_CTRL = 0x51;
 static const uint8_t AICE_CMD_BATCH_BUFFER_READ = 0x60;
@@ -1881,7 +1856,7 @@ static int aice_check_dbger(uint32_t coreid, uint32_t expect_status)
                if ((i % 30) == 0)
                        keep_alive();
 
-               long long then = 0;
+               int64_t then = 0;
                if (i == aice_count_to_check_dbger)
                        then = timeval_ms();
                if (i >= aice_count_to_check_dbger) {
@@ -2122,7 +2097,7 @@ static int aice_usb_open(struct aice_port_param_s *param)
        const uint16_t pids[] = { param->pid, 0 };
        struct jtag_libusb_device_handle *devh;
 
-       if (jtag_libusb_open(vids, pids, &devh) != ERROR_OK)
+       if (jtag_libusb_open(vids, pids, NULL, &devh) != ERROR_OK)
                return ERROR_FAIL;
 
        /* BE ***VERY CAREFUL*** ABOUT MAKING CHANGES IN THIS
@@ -2146,7 +2121,7 @@ static int aice_usb_open(struct aice_port_param_s *param)
        /* reopen jlink after usb_reset
         * on win32 this may take a second or two to re-enumerate */
        int retval;
-       while ((retval = jtag_libusb_open(vids, pids, &devh)) != ERROR_OK) {
+       while ((retval = jtag_libusb_open(vids, pids, NULL, &devh)) != ERROR_OK) {
                usleep(1000);
                timeout--;
                if (!timeout)
@@ -2159,13 +2134,11 @@ static int aice_usb_open(struct aice_port_param_s *param)
 #endif
 
        /* usb_set_configuration required under win32 */
-       struct jtag_libusb_device *udev = jtag_libusb_get_device(devh);
        jtag_libusb_set_configuration(devh, 0);
-       jtag_libusb_claim_interface(devh, 0);
 
        unsigned int aice_read_ep;
        unsigned int aice_write_ep;
-       jtag_libusb_get_endpoints(udev, &aice_read_ep, &aice_write_ep);
+       jtag_libusb_choose_interface(devh, &aice_read_ep, &aice_write_ep, -1, -1, -1);
 
        aice_handler.usb_read_ep = aice_read_ep;
        aice_handler.usb_write_ep = aice_write_ep;
@@ -3024,7 +2997,7 @@ static int aice_usb_step(uint32_t coreid)
                if (AICE_TARGET_HALTED == state)
                        break;
 
-               long long then = 0;
+               int64_t then = 0;
                if (i == 30)
                        then = timeval_ms();
 
@@ -3451,10 +3424,10 @@ static int aice_usb_memory_mode(uint32_t coreid, enum nds_memory_select mem_sele
        return ERROR_OK;
 }
 
-static int aice_usb_read_tlb(uint32_t coreid, uint32_t virtual_address,
-               uint32_t *physical_address)
+static int aice_usb_read_tlb(uint32_t coreid, target_addr_t virtual_address,
+               target_addr_t *physical_address)
 {
-       LOG_DEBUG("aice_usb_read_tlb, virtual address: 0x%08" PRIx32, virtual_address);
+       LOG_DEBUG("aice_usb_read_tlb, virtual address: 0x%08" TARGET_PRIxADDR, virtual_address);
 
        uint32_t instructions[4];
        uint32_t probe_result;