mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-14 03:46:07 +07:00
74ba9207e1
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 675 mass ave cambridge ma 02139 usa extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 441 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Reviewed-by: Richard Fontana <rfontana@redhat.com> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190520071858.739733335@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
70 lines
1.7 KiB
C
70 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* hdlc.h -- General purpose ISDN HDLC decoder.
|
|
*
|
|
* Implementation of a HDLC decoder/encoder in software.
|
|
* Necessary because some ISDN devices don't have HDLC
|
|
* controllers.
|
|
*
|
|
* Copyright (C)
|
|
* 2009 Karsten Keil <keil@b1-systems.de>
|
|
* 2002 Wolfgang Mües <wolfgang@iksw-muees.de>
|
|
* 2001 Frode Isaksen <fisaksen@bewan.com>
|
|
* 2001 Kai Germaschewski <kai.germaschewski@gmx.de>
|
|
*/
|
|
|
|
#ifndef __ISDNHDLC_H__
|
|
#define __ISDNHDLC_H__
|
|
|
|
struct isdnhdlc_vars {
|
|
int bit_shift;
|
|
int hdlc_bits1;
|
|
int data_bits;
|
|
int ffbit_shift; /* encoding only */
|
|
int state;
|
|
int dstpos;
|
|
|
|
u16 crc;
|
|
|
|
u8 cbin;
|
|
u8 shift_reg;
|
|
u8 ffvalue;
|
|
|
|
/* set if transferring data */
|
|
u32 data_received:1;
|
|
/* set if D channel (send idle instead of flags) */
|
|
u32 dchannel:1;
|
|
/* set if 56K adaptation */
|
|
u32 do_adapt56:1;
|
|
/* set if in closing phase (need to send CRC + flag) */
|
|
u32 do_closing:1;
|
|
/* set if data is bitreverse */
|
|
u32 do_bitreverse:1;
|
|
};
|
|
|
|
/* Feature Flags */
|
|
#define HDLC_56KBIT 0x01
|
|
#define HDLC_DCHANNEL 0x02
|
|
#define HDLC_BITREVERSE 0x04
|
|
|
|
/*
|
|
The return value from isdnhdlc_decode is
|
|
the frame length, 0 if no complete frame was decoded,
|
|
or a negative error number
|
|
*/
|
|
#define HDLC_FRAMING_ERROR 1
|
|
#define HDLC_CRC_ERROR 2
|
|
#define HDLC_LENGTH_ERROR 3
|
|
|
|
extern void isdnhdlc_rcv_init(struct isdnhdlc_vars *hdlc, u32 features);
|
|
|
|
extern int isdnhdlc_decode(struct isdnhdlc_vars *hdlc, const u8 *src,
|
|
int slen, int *count, u8 *dst, int dsize);
|
|
|
|
extern void isdnhdlc_out_init(struct isdnhdlc_vars *hdlc, u32 features);
|
|
|
|
extern int isdnhdlc_encode(struct isdnhdlc_vars *hdlc, const u8 *src,
|
|
u16 slen, int *count, u8 *dst, int dsize);
|
|
|
|
#endif /* __ISDNHDLC_H__ */
|