xref: /plan9-contrib/sys/src/cmd/jtagfs/mpsse.h (revision dedb130315e7b691e306ee069395ee1f0b18e4d4)
1 typedef struct Mpsse Mpsse;
2 
3 enum {
4 	KHz = 1000,
5 	FtdiHSpeedClk = 30*KHz,		/* 2232H 4232H */
6 	FtdiMaxClk = 60*KHz,		/* 2232C */
7 	FtdiReqTck = -1,
8 };
9 
10 enum{
11 	isPushPull,
12 	notPushPull,
13 	isOpenDrain,
14 	notOpenDrain,
15 };
16 
17 enum{
18 	MpsseBufSz	= 131072,	/* from openocd, noone knows why */
19 	MaxNbitsT	= 7,			/* maximum bits per state transition */
20 	MaxNbitsS	= 7,			/* maximum bits of data clocked */
21 
22 	nOE = 0,
23 	TDI,
24 	TDO,
25 	TMS,
26 	TCK,
27 
28 	TRSTnOE = 0,
29 	TRST,
30 	SRSTnOE,
31 	SRST,
32 
33 	Sheeva = 0,
34 	GuruDisp = 1,
35 };
36 
37 
38 struct Mpsse{
39 	int nread;	/* bytes left to read */
40 	int nbits;	/* length of bits left to process */
41 	uchar *rb;	/* current point of buf processing */
42 	int rbits;	/* offset in the last bit to process counting from LSB */
43 	int lastbit;
44 	int motherb;
45 	int jtagfd;
46 	Biobufhdr bout;
47 	uchar bp[Bungetsize+MpsseBufSz];
48 };
49 
50 int	mpsseflush(void *mdata);	/* internal, for ma.c */
51 
52 /* from ma.c */
53 extern int	pushcmd(Mpsse *mpsse, char *ln);
54 extern int	pushcmdwdata(Mpsse *mpsse, char *ln, uchar *buf, int buflen);
55 
56 /* from mpsse.c */
57 extern JMedium *	initmpsse(int fd, int motherb);
58 extern JMedium *	newmpsse(int fd, int motherb);
59 extern JMedium *	resetmpsse(JMedium *jmed);
60