swd.h (1083B)
1 // Copyright 2011-2021, Brian Swetland <swetland@frotz.net> 2 // Licensed under the Apache License, Version 2.0. 3 4 #ifndef _SWDP_H_ 5 #define _SWDP_H_ 6 7 void swd_init(void); 8 void swd_reset(uint32_t kind); 9 int swd_write(uint32_t reg, uint32_t val); 10 int swd_read(uint32_t reg, uint32_t *val); 11 12 unsigned swd_set_clock(unsigned khz); 13 unsigned swo_set_clock(unsigned khz); 14 void swd_hw_reset(int assert); 15 16 void jtag_init(void); 17 int jtag_io(unsigned count, unsigned tms, unsigned tdi, unsigned *tdo); 18 19 // swdp_read/write() register codes 20 21 // Park Stop Parity Addr3 Addr2 RnW APnDP Start 22 23 #define RD_IDCODE 0b10100101 24 #define RD_DPCTRL 0b10001101 25 #define RD_RESEND 0b10010101 26 #define RD_BUFFER 0b10111101 27 28 #define WR_ABORT 0b10000001 29 #define WR_DPCTRL 0b10101001 30 #define WR_SELECT 0b10110001 31 #define WR_BUFFER 0b10011001 32 33 #define RD_AP0 0b10000111 34 #define RD_AP1 0b10101111 35 #define RD_AP2 0b10110111 36 #define RD_AP3 0b10011111 37 38 #define WR_AP0 0b10100011 39 #define WR_AP1 0b10001011 40 #define WR_AP2 0b10010011 41 #define WR_AP3 0b10111011 42 43 #endif 44