| /* |
| * Copyright (c) 2018-2019 PHYTEC Messtechnik GmbH |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /* |
| * This file is based on DAP.c from CMSIS-DAP Source (Revision: V2.0.0) |
| * https://github.com/ARM-software/CMSIS_5/tree/develop/CMSIS/DAP/Firmware |
| * Copyright (c) 2013-2017 ARM Limited. All rights reserved. |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /** |
| * @file |
| * @brief DAP controller private header |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_CMSIS_DAP_H_ |
| #define ZEPHYR_INCLUDE_CMSIS_DAP_H_ |
| |
| #include <zephyr/kernel.h> |
| |
| /* Firmware Version */ |
| #define DAP_FW_VER "2.1.0" |
| |
| /* DAP Command IDs */ |
| #define ID_DAP_INFO 0x00U |
| #define ID_DAP_HOST_STATUS 0x01U |
| #define ID_DAP_CONNECT 0x02U |
| #define ID_DAP_DISCONNECT 0x03U |
| #define ID_DAP_TRANSFER_CONFIGURE 0x04U |
| #define ID_DAP_TRANSFER 0x05U |
| #define ID_DAP_TRANSFER_BLOCK 0x06U |
| #define ID_DAP_TRANSFER_ABORT 0x07U |
| #define ID_DAP_WRITE_ABORT 0x08U |
| #define ID_DAP_DELAY 0x09U |
| #define ID_DAP_RESET_TARGET 0x0AU |
| |
| #define ID_DAP_SWJ_PINS 0x10U |
| #define ID_DAP_SWJ_CLOCK 0x11U |
| #define ID_DAP_SWJ_SEQUENCE 0x12U |
| |
| #define ID_DAP_SWDP_CONFIGURE 0x13U |
| #define ID_DAP_SWDP_SEQUENCE 0x1DU |
| |
| #define ID_DAP_JTAG_SEQUENCE 0x14U |
| #define ID_DAP_JTAG_CONFIGURE 0x15U |
| #define ID_DAP_JTAG_IDCODE 0x16U |
| |
| #define ID_DAP_SWO_TRANSPORT 0x17U |
| #define ID_DAP_SWO_MODE 0x18U |
| #define ID_DAP_SWO_BAUDRATE 0x19U |
| #define ID_DAP_SWO_CONTROL 0x1AU |
| #define ID_DAP_SWO_STATUS 0x1BU |
| #define ID_DAP_SWO_DATA 0x1CU |
| |
| #define ID_DAP_UART_TRANSPORT 0x1FU |
| #define ID_DAP_UART_CONFIGURE 0x20U |
| #define ID_DAP_UART_CONTROL 0x22U |
| #define ID_DAP_UART_STATUS 0x23U |
| #define ID_DAP_UART_TRANSFER 0x21U |
| |
| #define ID_DAP_QUEUE_COMMANDS 0x7EU |
| #define ID_DAP_EXECUTE_COMMANDS 0x7FU |
| |
| /* DAP Vendor Command IDs */ |
| #define ID_DAP_VENDOR0 0x80U |
| #define ID_DAP_VENDOR31 0x9FU |
| #define ID_DAP_INVALID 0xFFU |
| |
| /* DAP Status Code */ |
| #define DAP_OK 0U |
| #define DAP_ERROR 0xFFU |
| |
| /* DAP ID */ |
| #define DAP_ID_VENDOR 0x01U |
| #define DAP_ID_PRODUCT 0x02U |
| #define DAP_ID_SER_NUM 0x03U |
| #define DAP_ID_FW_VER 0x04U |
| #define DAP_ID_DEVICE_VENDOR 0x05U |
| #define DAP_ID_DEVICE_NAME 0x06U |
| #define DAP_ID_BOARD_VENDOR 0x07U |
| #define DAP_ID_BOARD_NAME 0x08U |
| #define DAP_ID_PRODUCT_FW_VER 0x09U |
| #define DAP_ID_CAPABILITIES 0xF0U |
| #define DAP_ID_TIMESTAMP_CLOCK 0xF1U |
| #define DAP_ID_UART_RX_BUFFER_SIZE 0xFBU |
| #define DAP_ID_UART_TX_BUFFER_SIZE 0xFCU |
| #define DAP_ID_SWO_BUFFER_SIZE 0xFDU |
| #define DAP_ID_PACKET_COUNT 0xFEU |
| #define DAP_ID_PACKET_SIZE 0xFFU |
| |
| /* DAP Host Status */ |
| #define DAP_DEBUGGER_CONNECTED 0U |
| #define DAP_TARGET_RUNNING 1U |
| |
| /* DAP Port */ |
| #define DAP_PORT_AUTODETECT 0U |
| #define DAP_PORT_DISABLED 0U |
| #define DAP_PORT_SWD 1U |
| #define DAP_PORT_JTAG 2U |
| |
| /* DAP transfer request bits */ |
| #define DAP_TRANSFER_MATCH_VALUE BIT(4) |
| #define DAP_TRANSFER_MATCH_MASK BIT(5) |
| |
| /* DAP transfer response bits */ |
| #define DAP_TRANSFER_MISMATCH BIT(4) |
| |
| /* DAP controller capabilities */ |
| #define DAP_DP_SUPPORTS_SWD BIT(0) |
| #define DAP_DP_SUPPORTS_JTAG BIT(1) |
| #define DAP_SWO_SUPPORTS_UART BIT(2) |
| #define DAP_SWO_SUPPORTS_MANCHESTER BIT(3) |
| #define DAP_SUPPORTS_ATOMIC_COMMANDS BIT(4) |
| #define DAP_SUPPORTS_TIMESTAMP_CLOCK BIT(5) |
| #define DAP_SWO_SUPPORTS_STREAM BIT(6) |
| |
| /* DP Register (DPv1) */ |
| #define DP_IDCODE 0x00U |
| #define DP_ABORT 0x00U |
| #define DP_CTRL_STAT 0x04U |
| #define DP_SELECT 0x08U |
| #define DP_RESEND 0x08U |
| #define DP_RDBUFF 0x0CU |
| |
| #define DAP_MBMSG_REGISTER_IFACE 0x0U |
| #define DAP_MBMSG_FROM_IFACE 0x1U |
| #define DAP_MBMSG_FROM_CONTROLLER 0x2U |
| |
| /* Keep it internal until an other interface has been implemented. */ |
| int dap_setup(const struct device *const dev); |
| uint32_t dap_execute_cmd(const uint8_t *request, uint8_t *response); |
| |
| #endif /* ZEPHYR_INCLUDE_CMSIS_DAP_H_ */ |