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);