linux/include/linux/mISDNhw.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 *
 * Author	Karsten Keil <[email protected]>
 *
 *   Basic declarations for the mISDN HW channels
 *
 * Copyright 2008  by Karsten Keil <[email protected]>
 */

#ifndef MISDNHW_H
#define MISDNHW_H
#include <linux/mISDNif.h>
#include <linux/timer.h>

/*
 * HW DEBUG 0xHHHHGGGG
 * H - hardware driver specific bits
 * G - for all drivers
 */

#define DEBUG_HW
#define DEBUG_HW_OPEN
#define DEBUG_HW_DCHANNEL
#define DEBUG_HW_DFIFO
#define DEBUG_HW_BCHANNEL
#define DEBUG_HW_BFIFO

#define MAX_DFRAME_LEN_L1
#define MAX_MON_FRAME
#define MAX_LOG_SPACE
#define MISDN_COPY_SIZE

/* channel->Flags bit field */
#define FLG_TX_BUSY
#define FLG_TX_NEXT
#define FLG_L1_BUSY
#define FLG_L2_ACTIVATED
#define FLG_OPEN
#define FLG_ACTIVE
#define FLG_BUSY_TIMER
/* channel type */
#define FLG_DCHANNEL
#define FLG_BCHANNEL
#define FLG_ECHANNEL
#define FLG_TRANSPARENT
#define FLG_HDLC
#define FLG_L2DATA
#define FLG_ORIGIN
/* channel specific stuff */
#define FLG_FILLEMPTY
/* arcofi specific */
#define FLG_ARCOFI_TIMER
#define FLG_ARCOFI_ERROR
/* isar specific */
#define FLG_INITIALIZED
#define FLG_DLEETX
#define FLG_LASTDLE
#define FLG_FIRST
#define FLG_LASTDATA
#define FLG_NMD_DATA
#define FLG_FTI_RUN
#define FLG_LL_OK
#define FLG_LL_CONN
#define FLG_DTMFSEND
#define FLG_TX_EMPTY
/* stop sending received data upstream */
#define FLG_RX_OFF
/* workq events */
#define FLG_RECVQUEUE
#define FLG_PHCHANGE

#define schedule_event(s, ev)

struct dchannel {};

dchannel_l1callback;
extern int	create_l1(struct dchannel *, dchannel_l1callback *);

/* private L1 commands */
#define INFO0
#define INFO1
#define INFO2
#define INFO3_P8
#define INFO3_P10
#define INFO4_P8
#define INFO4_P10
#define LOSTFRAMING
#define ANYSIGNAL
#define HW_POWERDOWN
#define HW_RESET_REQ
#define HW_POWERUP_REQ
#define HW_DEACT_REQ
#define HW_ACTIVATE_REQ
#define HW_D_NOBLOCKED
#define HW_RESET_IND
#define HW_POWERUP_IND
#define HW_DEACT_IND
#define HW_ACTIVATE_IND
#define HW_DEACT_CNF
#define HW_TESTLOOP
#define HW_TESTRX_RAW
#define HW_TESTRX_HDLC
#define HW_TESTRX_OFF
#define HW_TIMER3_IND
#define HW_TIMER3_VALUE
#define HW_TIMER3_VMASK

struct layer1;
extern int	l1_event(struct layer1 *, u_int);

#define MISDN_BCH_FILL_SIZE

struct bchannel {};

extern int	mISDN_initdchannel(struct dchannel *, int, void *);
extern int	mISDN_initbchannel(struct bchannel *, unsigned short,
				   unsigned short);
extern int	mISDN_freedchannel(struct dchannel *);
extern void	mISDN_clear_bchannel(struct bchannel *);
extern void	mISDN_freebchannel(struct bchannel *);
extern int	mISDN_ctrl_bchannel(struct bchannel *, struct mISDN_ctrl_req *);
extern void	queue_ch_frame(struct mISDNchannel *, u_int,
			int, struct sk_buff *);
extern int	dchannel_senddata(struct dchannel *, struct sk_buff *);
extern int	bchannel_senddata(struct bchannel *, struct sk_buff *);
extern int      bchannel_get_rxbuf(struct bchannel *, int);
extern void	recv_Dchannel(struct dchannel *);
extern void	recv_Echannel(struct dchannel *, struct dchannel *);
extern void	recv_Bchannel(struct bchannel *, unsigned int, bool);
extern void	recv_Dchannel_skb(struct dchannel *, struct sk_buff *);
extern void	recv_Bchannel_skb(struct bchannel *, struct sk_buff *);
extern int	get_next_bframe(struct bchannel *);
extern int	get_next_dframe(struct dchannel *);

#endif