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