X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ccdbg.h;h=a0ef1c86bccdbb22781c5a65e726fe3474c2fe26;hp=8f937bd431e618c89dc649e6ad3f5100008422ee;hb=5df84df7cd6a31527dcfd11030f00ef9d8abf170;hpb=0ffe4ef870b0e564789a1990aeab5b6651868e5b diff --git a/ccdbg.h b/ccdbg.h index 8f937bd4..a0ef1c86 100644 --- a/ccdbg.h +++ b/ccdbg.h @@ -26,19 +26,33 @@ #include #include #include +#include #include #include +#include +#undef USE_KERNEL +#ifdef USE_KERNEL #include - -#define CC_DATA CP2101_GPIO_MASK(0) -#define CC_CLOCK CP2101_GPIO_MASK(1) +#define CC_CLOCK CP2101_GPIO_MASK(0) +#define CC_DATA CP2101_GPIO_MASK(1) #define CC_RESET_N CP2101_GPIO_MASK(2) +#else +#define CC_CLOCK 0x1 +#define CC_DATA 0x2 +#define CC_RESET_N 0x4 +#include +#endif + /* painfully slow for now */ -#define CC_CLOCK_US (2 * 1000) +#define CC_CLOCK_US (1000) struct ccdbg { + usb_dev_handle *usb_dev; + uint8_t gpio; +#ifdef USE_KERNEL int fd; +#endif uint8_t debug_data; int clock; }; @@ -77,4 +91,121 @@ struct ccdbg { #define CC_STEP_REPLACE (0x64|(n)) #define CC_GET_CHIP_ID 0x68 +#define CC_DEBUG_BITBANG 0x00000001 +#define CC_DEBUG_COMMAND 0x00000002 + +/* ccdbg-command.c */ +void +ccdbg_debug_mode(struct ccdbg *dbg); + +void +ccdbg_reset(struct ccdbg *dbg); + +uint8_t +ccdbg_read_status(struct ccdbg *dbg); + +uint8_t +ccdbg_rd_config(struct ccdbg *dbg); + +uint16_t +ccdbg_get_chip_id(struct ccdbg *dbg); + +/* ccdbg-debug.c */ +void +ccdbg_debug(int level, char *format, ...); + +void +ccdbg_add_debug(int level); + +void +ccdbg_clear_debug(int level); + +/* ccdbg-io.c */ +void +ccdbg_quarter_clock(struct ccdbg *dbg); + +void +ccdbg_half_clock(struct ccdbg *dbg); + +int +ccdbg_write(struct ccdbg *dbg, uint8_t mask, uint8_t value); + +uint8_t +ccdbg_read(struct ccdbg *dbg); + +struct ccdbg * +ccdbg_open(char *file); + +void +ccdbg_close(struct ccdbg *dbg); + +void +ccdbg_clock_1_0(struct ccdbg *dbg); + +void +ccdbg_clock_0_1(struct ccdbg *dbg); + +void +ccdbg_write_bit(struct ccdbg *dbg, uint8_t bit); + +void +ccdbg_write_byte(struct ccdbg *dbg, uint8_t byte); + +uint8_t +ccdbg_read_bit(struct ccdbg *dbg); + +uint8_t +ccdbg_read_byte(struct ccdbg *dbg); + +void +ccdbg_cmd_write(struct ccdbg *dbg, uint8_t cmd, uint8_t *data, int len); + +uint8_t +ccdbg_cmd_write_read8(struct ccdbg *dbg, uint8_t cmd, uint8_t *data, int len); + +uint16_t +ccdbg_cmd_write_read16(struct ccdbg *dbg, uint8_t cmd, uint8_t *data, int len); + +void +ccdbg_send(struct ccdbg *dbg, uint8_t mask, uint8_t set); + +void +ccdbg_send_bit(struct ccdbg *dbg, uint8_t bit); + +void +ccdbg_send_byte(struct ccdbg *dbg, uint8_t byte); + +void +ccdbg_send_bytes(struct ccdbg *dbg, uint8_t *bytes, int nbytes); + +uint8_t +ccdbg_recv_bit(struct ccdbg *dbg, int first); + +uint8_t +ccdbg_recv_byte(struct ccdbg *dbg, int first); + +void +ccdbg_recv_bytes(struct ccdbg *dbg, uint8_t *bytes, int nbytes); + +void +ccdbg_print(char *format, uint8_t mask, uint8_t set); + +/* ccdbg-manual.c */ + +void +ccdbg_manual(struct ccdbg *dbg, FILE *input); + +/* cp-usb.c */ +void +cp_usb_init(struct ccdbg *dbg); + +void +cp_usb_fini(struct ccdbg *dbg); + +void +cp_usb_write(struct ccdbg *dbg, uint8_t mask, uint8_t value); + +uint8_t +cp_usb_read(struct ccdbg *dbg); + #endif /* _CCDBG_H_ */