patch-2.2.19 linux/drivers/isdn/eicon/adapter.h

Next file: linux/drivers/isdn/eicon/bri.c
Previous file: linux/drivers/isdn/eicon/Makefile
Back to the patch index
Back to the overall index

diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.18/drivers/isdn/eicon/adapter.h linux/drivers/isdn/eicon/adapter.h
@@ -0,0 +1,262 @@
+
+/*
+ *
+ * Copyright (C) Eicon Technology Corporation, 2000.
+ *
+ * Eicon File Revision :    1.7  
+ *
+ * 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, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY 
+ * 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.
+ *
+ */
+
+
+/* Main internal include file for Diva Server driver */
+
+#if !defined(ADAPTER_H)
+#define ADAPTER_H
+
+#include "sys.h"
+#include "idi.h"
+#include "divas.h"
+#undef ID_MASK
+#include "pc.h"
+
+#define XMOREC 0x1f
+#define XMOREF 0x20
+#define XBUSY  0x40
+#define RMORE  0x80
+
+        /* structure for all information we have to keep on a per   */
+        /* adapater basis                                           */
+
+typedef struct adapter_s ADAPTER;
+
+struct adapter_s {
+  void * io;
+
+  byte IdTable[256];
+  byte ReadyInt;
+
+  byte (* ram_in)(ADAPTER * a, void * adr);
+  word (* ram_inw)(ADAPTER * a, void * adr);
+  void (* ram_in_buffer)(ADAPTER * a, void * adr, void * P, word length);
+  void (* ram_look_ahead)(ADAPTER * a, PBUFFER * RBuffer, ENTITY * e);
+
+  void (* ram_out)(ADAPTER * a, void * adr, byte data);
+  void (* ram_outw)(ADAPTER * a, void * adr, word data);
+  void (* ram_out_buffer)(ADAPTER * a, void * adr, void * P, word length);
+
+  void (* ram_inc)(ADAPTER * a, void * adr);
+};
+
+typedef struct card card_t;
+
+typedef int	card_load_fn_t(card_t *card, dia_load_t *load);
+typedef int	card_config_fn_t(card_t *card, dia_config_t *config);
+typedef int	card_start_fn_t(card_t *card, byte *channels);
+typedef	int	card_reset_fn_t(card_t *card);
+typedef int card_mem_get_fn_t(card_t *card, mem_block_t *mem_block);
+
+#define	MAX_PENTITIES	256		/* Number of entities primary adapter */
+#define MAX_ENTITIES	16		/* Number of entities standard adapter */
+
+typedef struct e_info_s E_INFO;
+
+struct e_info_s
+{
+	ENTITY		*e;				/* entity pointer */
+	byte		next;			/* chaining index */
+	word		assign_ref;		/* assign reference */
+};
+
+/* DIVA card info (details hidden from user) */
+
+typedef struct	ux_diva_card_s ux_diva_card_t;
+
+/* card info */
+
+struct card
+{
+	ADAPTER				a;				/* per-adapter information */
+	dia_card_t			cfg;			/* card configuration */
+	int 				state;			/* State of the adapter */
+	dword 				serial_no;		/* serial number */
+	int 				test_int_pend;	/* set for interrupt testing */
+	ux_diva_card_t		*hw;			/* O/S-specific handle */
+	card_reset_fn_t		*card_reset;	/* call this to reset card */
+	card_load_fn_t		*card_load;		/* call this to load card */
+	card_config_fn_t	*card_config;	/* call this to config card */
+	card_start_fn_t		*card_start;	/* call this to start card */
+	card_mem_get_fn_t	*card_mem_get;	/* call this to get card memory */
+	E_INFO				*e_tbl;			/* table of ENTITY pointers */
+	byte				e_head;			/* list of active ENTITIES */
+	byte				e_tail;			/* list of active ENTITIES */
+	int					e_count;		/* # of active ENTITIES */
+	int					e_max;			/* total # of ENTITIES */
+	byte				assign;			/* assign queue entry */
+	PBUFFER				RBuffer;		/* Copy of receive lookahead buffer */
+	int					log_types;		/* bit-mask of active logs */
+	word				xlog_offset;	/* offset to XLOG buffer on card */
+	void		(*out)(ADAPTER *a);
+	byte		(*dpc)(ADAPTER * a);
+	byte		(*test_int)(ADAPTER * a);
+	void		(*clear_int)(ADAPTER * a);
+	void		(*reset_int)(card_t *c);
+	int  		is_live;
+
+	int		(*card_isr)(card_t *card);
+
+	int 		int_pend;		/* interrupt pending */
+	long		interrupt_reentered;
+	long 		dpc_reentered;
+	int 		set_xlog_request;
+
+} ;
+
+/* card information */
+
+#define	MAX_CARDS	20		/* max number of cards on a system */
+
+extern
+card_t			DivasCards[];
+
+extern
+int				DivasCardNext;
+
+extern
+dia_config_t	DivasCardConfigs[];
+
+extern
+byte 			DivasFlavourConfig[];
+
+/*------------------------------------------------------------------*/
+/* public functions of IDI common code                              */
+/*------------------------------------------------------------------*/
+
+void DivasOut(ADAPTER * a);
+byte DivasDpc(ADAPTER * a);
+byte DivasTestInt(ADAPTER * a);
+void DivasClearInt(ADAPTER * a);
+
+/*------------------------------------------------------------------*/
+/* public functions of configuration platform-specific code         */
+/*------------------------------------------------------------------*/
+
+int DivasConfigGet(dia_card_t *card);
+
+/*------------------------------------------------------------------*/
+/* public functions of LOG related code                             */
+/*------------------------------------------------------------------*/
+
+void	DivasXlogReq(int card_num);
+int		DivasXlogRetrieve(card_t *card);
+void	DivasLog(dia_log_t *log);
+void	DivasLogIdi(card_t *card, ENTITY *e, int request);
+
+/*------------------------------------------------------------------*/
+/* public functions to initialise cards for each type supported     */
+/*------------------------------------------------------------------*/
+
+int		DivasPriInit(card_t *card, dia_card_t *cfg);
+
+int		DivasBriInit(card_t *card, dia_card_t *cfg);
+int		Divas4BriInit(card_t *card, dia_card_t *cfg);
+void 	DivasBriPatch(card_t *card);
+
+/*------------------------------------------------------------------*/
+/* public functions of log common code                              */
+/*------------------------------------------------------------------*/
+
+extern	char	*DivasLogFifoRead(void);
+extern	void	DivasLogFifoWrite(char *entry, int length);
+extern	int		DivasLogFifoEmpty(void);
+extern	int		DivasLogFifoFull(void);
+extern	void    DivasLogAdd(void *buffer, int length);
+
+/*------------------------------------------------------------------*/
+/* public functions of misc. platform-specific code         		*/
+/*------------------------------------------------------------------*/
+
+int		DivasDpcSchedule(void);
+void		DivasDoDpc(void *);
+void		DivasDoRequestDpc(void *pData);
+int		DivasScheduleRequestDpc(void);
+
+/* table of IDI request functions */
+
+extern
+IDI_CALL	DivasIdiRequest[];
+
+/*
+ * intialisation entry point
+ */
+
+int		DivasInit(void);
+
+/*
+ * Get information on the number and type of cards present
+ */
+
+extern
+int 	DivasCardsDiscover(void);
+
+/*
+ * initialise a new card
+ */
+
+int		DivasCardNew(dia_card_t *card);
+
+/*
+ * configure specified card
+ */
+
+int		DivasCardConfig(dia_config_t *config);
+
+/*
+ * load specified binary code onto card
+ */
+
+int		DivasCardLoad(dia_load_t *load);
+
+/*
+ * start specified card running
+ */
+
+int		DivasCardStart(int card_id);
+
+/*
+ * ISR for card
+ * Returns 0 if specified card was interrupting
+ */
+
+int		DivasIsr(void *arg);
+
+/*
+ * Get number of active cards
+ */
+
+int		DivasGetNum(void);
+
+/*
+ * Get list of active cards
+ */
+
+int		DivasGetList(dia_card_list_t *card_list);
+
+/* definitions common to several card types */
+
+#define DIVAS_SHARED_OFFSET     (0x1000)
+
+#endif /* ADAPTER_H */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)