iwb 657 drivers/staging/isdn/gigaset/gigaset.h void gigaset_isowbuf_init(struct isowbuf_t *iwb, unsigned char idle); iwb 660 drivers/staging/isdn/gigaset/gigaset.h int gigaset_isowbuf_getbytes(struct isowbuf_t *iwb, int size); iwb 21 drivers/staging/isdn/gigaset/isocdata.c void gigaset_isowbuf_init(struct isowbuf_t *iwb, unsigned char idle) iwb 23 drivers/staging/isdn/gigaset/isocdata.c iwb->read = 0; iwb 24 drivers/staging/isdn/gigaset/isocdata.c iwb->nextread = 0; iwb 25 drivers/staging/isdn/gigaset/isocdata.c iwb->write = 0; iwb 26 drivers/staging/isdn/gigaset/isocdata.c atomic_set(&iwb->writesem, 1); iwb 27 drivers/staging/isdn/gigaset/isocdata.c iwb->wbits = 0; iwb 28 drivers/staging/isdn/gigaset/isocdata.c iwb->idle = idle; iwb 29 drivers/staging/isdn/gigaset/isocdata.c memset(iwb->data + BAS_OUTBUFSIZE, idle, BAS_OUTBUFPAD); iwb 35 drivers/staging/isdn/gigaset/isocdata.c static inline int isowbuf_freebytes(struct isowbuf_t *iwb) iwb 39 drivers/staging/isdn/gigaset/isocdata.c read = iwb->read; iwb 40 drivers/staging/isdn/gigaset/isocdata.c write = iwb->write; iwb 58 drivers/staging/isdn/gigaset/isocdata.c static inline int isowbuf_startwrite(struct isowbuf_t *iwb) iwb 60 drivers/staging/isdn/gigaset/isocdata.c if (!atomic_dec_and_test(&iwb->writesem)) { iwb 61 drivers/staging/isdn/gigaset/isocdata.c atomic_inc(&iwb->writesem); iwb 68 drivers/staging/isdn/gigaset/isocdata.c __func__, iwb->data[iwb->write], iwb->wbits); iwb 76 drivers/staging/isdn/gigaset/isocdata.c static inline int isowbuf_donewrite(struct isowbuf_t *iwb) iwb 78 drivers/staging/isdn/gigaset/isocdata.c int write = iwb->write; iwb 79 drivers/staging/isdn/gigaset/isocdata.c atomic_inc(&iwb->writesem); iwb 90 drivers/staging/isdn/gigaset/isocdata.c static inline void isowbuf_putbits(struct isowbuf_t *iwb, u32 data, int nbits) iwb 92 drivers/staging/isdn/gigaset/isocdata.c int write = iwb->write; iwb 93 drivers/staging/isdn/gigaset/isocdata.c data <<= iwb->wbits; iwb 94 drivers/staging/isdn/gigaset/isocdata.c data |= iwb->data[write]; iwb 95 drivers/staging/isdn/gigaset/isocdata.c nbits += iwb->wbits; iwb 97 drivers/staging/isdn/gigaset/isocdata.c iwb->data[write++] = data & 0xff; iwb 102 drivers/staging/isdn/gigaset/isocdata.c iwb->wbits = nbits; iwb 103 drivers/staging/isdn/gigaset/isocdata.c iwb->data[write] = data & 0xff; iwb 104 drivers/staging/isdn/gigaset/isocdata.c iwb->write = write; iwb 111 drivers/staging/isdn/gigaset/isocdata.c static inline void isowbuf_putflag(struct isowbuf_t *iwb) iwb 116 drivers/staging/isdn/gigaset/isocdata.c isowbuf_putbits(iwb, 0x7e7e, 8); iwb 118 drivers/staging/isdn/gigaset/isocdata.c write = iwb->write; iwb 119 drivers/staging/isdn/gigaset/isocdata.c iwb->idle = iwb->data[write]; iwb 120 drivers/staging/isdn/gigaset/isocdata.c gig_dbg(DEBUG_ISO, "idle fill byte %02x", iwb->idle); iwb 122 drivers/staging/isdn/gigaset/isocdata.c iwb->data[write] &= (1 << iwb->wbits) - 1; iwb 131 drivers/staging/isdn/gigaset/isocdata.c int gigaset_isowbuf_getbytes(struct isowbuf_t *iwb, int size) iwb 136 drivers/staging/isdn/gigaset/isocdata.c read = iwb->nextread; iwb 137 drivers/staging/isdn/gigaset/isocdata.c write = iwb->write; iwb 158 drivers/staging/isdn/gigaset/isocdata.c if (isowbuf_startwrite(iwb) < 0) iwb 161 drivers/staging/isdn/gigaset/isocdata.c write = iwb->write; iwb 163 drivers/staging/isdn/gigaset/isocdata.c pbyte = iwb->data[write]; /* save iwb 168 drivers/staging/isdn/gigaset/isocdata.c __func__, write, limit, iwb->idle); iwb 170 drivers/staging/isdn/gigaset/isocdata.c memset(iwb->data + write, iwb->idle, iwb 174 drivers/staging/isdn/gigaset/isocdata.c memset(iwb->data + write, iwb->idle, iwb 182 drivers/staging/isdn/gigaset/isocdata.c iwb->data[limit] = pbyte; /* restore iwb 184 drivers/staging/isdn/gigaset/isocdata.c iwb->write = limit; iwb 186 drivers/staging/isdn/gigaset/isocdata.c isowbuf_donewrite(iwb); iwb 195 drivers/staging/isdn/gigaset/isocdata.c iwb->data[dst++] = iwb->data[src++]; iwb 198 drivers/staging/isdn/gigaset/isocdata.c memset(iwb->data + dst, iwb->idle, iwb 204 drivers/staging/isdn/gigaset/isocdata.c iwb->nextread = limit; iwb 351 drivers/staging/isdn/gigaset/isocdata.c static inline int hdlc_bitstuff_byte(struct isowbuf_t *iwb, unsigned char cin, iwb 368 drivers/staging/isdn/gigaset/isocdata.c isowbuf_putbits(iwb, stuff, 8 + shiftinc); iwb 394 drivers/staging/isdn/gigaset/isocdata.c static inline int hdlc_buildframe(struct isowbuf_t *iwb, iwb 402 drivers/staging/isdn/gigaset/isocdata.c if (isowbuf_freebytes(iwb) < count + count / 5 + 6 || iwb 403 drivers/staging/isdn/gigaset/isocdata.c isowbuf_startwrite(iwb) < 0) { iwb 405 drivers/staging/isdn/gigaset/isocdata.c __func__, isowbuf_freebytes(iwb)); iwb 416 drivers/staging/isdn/gigaset/isocdata.c ones = hdlc_bitstuff_byte(iwb, c, ones); iwb 423 drivers/staging/isdn/gigaset/isocdata.c ones = hdlc_bitstuff_byte(iwb, fcs & 0x00ff, ones); iwb 424 drivers/staging/isdn/gigaset/isocdata.c ones = hdlc_bitstuff_byte(iwb, (fcs >> 8) & 0x00ff, ones); iwb 427 drivers/staging/isdn/gigaset/isocdata.c isowbuf_putflag(iwb); iwb 428 drivers/staging/isdn/gigaset/isocdata.c end = isowbuf_donewrite(iwb); iwb 447 drivers/staging/isdn/gigaset/isocdata.c static inline int trans_buildframe(struct isowbuf_t *iwb, iwb 454 drivers/staging/isdn/gigaset/isocdata.c return iwb->write; iwb 456 drivers/staging/isdn/gigaset/isocdata.c if (isowbuf_freebytes(iwb) < count || iwb 457 drivers/staging/isdn/gigaset/isocdata.c isowbuf_startwrite(iwb) < 0) { iwb 465 drivers/staging/isdn/gigaset/isocdata.c write = iwb->write; iwb 468 drivers/staging/isdn/gigaset/isocdata.c iwb->data[write++] = c; iwb 471 drivers/staging/isdn/gigaset/isocdata.c iwb->write = write; iwb 472 drivers/staging/isdn/gigaset/isocdata.c iwb->idle = c; iwb 474 drivers/staging/isdn/gigaset/isocdata.c return isowbuf_donewrite(iwb);