Blame view

kernel/linux-rt-4.4.41/drivers/isdn/hardware/eicon/di.h 3.78 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  
  /*
   *
   Copyright (c) Eicon Networks, 2002.
   *
   This source file is supplied for the use with
   Eicon Networks range of DIVA Server Adapters.
   *
   Eicon File Revision :    2.1
   *
   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.
   *
   */
  /*
   *  some macros for detailed trace management
   */
  #include "di_dbg.h"
  /*****************************************************************************/
  #define XMOREC 0x1f
  #define XMOREF 0x20
  #define XBUSY  0x40
  #define RMORE  0x80
  #define DIVA_MISC_FLAGS_REMOVE_PENDING    0x01
  #define DIVA_MISC_FLAGS_NO_RC_CANCELLING  0x02
  #define DIVA_MISC_FLAGS_RX_DMA            0x04
  /* 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 IdTypeTable[256];
  	byte FlowControlIdTable[256];
  	byte FlowControlSkipTable[256];
  	byte ReadyInt;
  	byte RcExtensionSupported;
  	byte misc_flags_table[256];
  	dword protocol_capabilities;
  	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);
  #if defined(DIVA_ISTREAM)
  	dword rx_stream[256];
  	dword tx_stream[256];
  	word tx_pos[256];
  	word rx_pos[256];
  	byte stream_buffer[2512];
  	dword (*ram_offset)(ADAPTER *a);
  	void (*ram_out_dw)(ADAPTER *a,
  			   void *addr,
  			   const dword *data,
  			   int dwords);
  	void (*ram_in_dw)(ADAPTER *a,
  			  void *addr,
  			  dword *data,
  			  int dwords);
  	void (*istream_wakeup)(ADAPTER *a);
  #else
  	byte stream_buffer[4];
  #endif
  };
  /*------------------------------------------------------------------*/
  /* public functions of IDI common code                              */
  /*------------------------------------------------------------------*/
  void pr_out(ADAPTER *a);
  byte pr_dpc(ADAPTER *a);
  byte scom_test_int(ADAPTER *a);
  void scom_clear_int(ADAPTER *a);
  /*------------------------------------------------------------------*/
  /* OS specific functions used by IDI common code                    */
  /*------------------------------------------------------------------*/
  void free_entity(ADAPTER *a, byte e_no);
  void assign_queue(ADAPTER *a, byte e_no, word ref);
  byte get_assign(ADAPTER *a, word ref);
  void req_queue(ADAPTER *a, byte e_no);
  byte look_req(ADAPTER *a);
  void next_req(ADAPTER *a);
  ENTITY *entity_ptr(ADAPTER *a, byte e_no);
  #if defined(DIVA_ISTREAM)
  struct _diva_xdi_stream_interface;
  void diva_xdi_provide_istream_info(ADAPTER *a,
  				   struct _diva_xdi_stream_interface *pI);
  void pr_stream(ADAPTER *a);
  int diva_istream_write(void *context,
  		       int Id,
  		       void *data,
  		       int length,
  		       int final,
  		       byte usr1,
  		       byte usr2);
  int diva_istream_read(void *context,
  		      int Id,
  		      void *data,
  		      int max_length,
  		      int *final,
  		      byte *usr1,
  		      byte *usr2);
  #if defined(DIVA_IDI_RX_DMA)
  #include "diva_dma.h"
  #endif
  #endif