1  /*
2  *
3  * mwavedd.h -- declarations for mwave device driver
4  *
5  *
6  * Written By: Mike Sullivan IBM Corporation
7  *
8  * Copyright (C) 1999 IBM Corporation
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * NO WARRANTY
21  * THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
22  * CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT
23  * LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
24  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
25  * solely responsible for determining the appropriateness of using and
26  * distributing the Program and assumes all risks associated with its
27  * exercise of rights under this Agreement, including but not limited to
28  * the risks and costs of program errors, damage to or loss of data,
29  * programs or equipment, and unavailability or interruption of operations.
30  *
31  * DISCLAIMER OF LIABILITY
32  * NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
33  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34  * DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND
35  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
36  * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
37  * USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
38  * HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES
39  *
40  * You should have received a copy of the GNU General Public License
41  * along with this program; if not, write to the Free Software
42  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
43  *
44  *
45  * 10/23/2000 - Alpha Release
46  *	First release to the public
47  */
48  
49  #ifndef _LINUX_MWAVEDD_H
50  #define _LINUX_MWAVEDD_H
51  #include "3780i.h"
52  #include "tp3780i.h"
53  #include "smapi.h"
54  #include "mwavepub.h"
55  #include <linux/ioctl.h>
56  #include <linux/uaccess.h>
57  #include <linux/wait.h>
58  
59  extern int mwave_debug;
60  extern int mwave_3780i_irq;
61  extern int mwave_3780i_io;
62  extern int mwave_uart_irq;
63  extern int mwave_uart_io;
64  
65  #define PRINTK_ERROR printk
66  #define KERN_ERR_MWAVE KERN_ERR "mwave: "
67  
68  #define TRACE_MWAVE     0x0001
69  #define TRACE_SMAPI     0x0002
70  #define TRACE_3780I     0x0004
71  #define TRACE_TP3780I   0x0008
72  
73  #ifdef MW_TRACE
74  #define PRINTK_1(f,s)                       \
75    if (f & (mwave_debug)) {                  \
76      printk(s);                              \
77    }
78  
79  #define PRINTK_2(f,s,v1)                    \
80    if (f & (mwave_debug)) {                  \
81      printk(s,v1);                           \
82    }
83  
84  #define PRINTK_3(f,s,v1,v2)                 \
85    if (f & (mwave_debug)) {                  \
86      printk(s,v1,v2);                        \
87    }
88  
89  #define PRINTK_4(f,s,v1,v2,v3)              \
90    if (f & (mwave_debug)) {                  \
91      printk(s,v1,v2,v3);                     \
92    }
93  
94  #define PRINTK_5(f,s,v1,v2,v3,v4)           \
95    if (f & (mwave_debug)) {                  \
96      printk(s,v1,v2,v3,v4);                  \
97    }
98  
99  #define PRINTK_6(f,s,v1,v2,v3,v4,v5)        \
100    if (f & (mwave_debug)) {                  \
101      printk(s,v1,v2,v3,v4,v5);               \
102    }
103  
104  #define PRINTK_7(f,s,v1,v2,v3,v4,v5,v6)     \
105    if (f & (mwave_debug)) {                  \
106      printk(s,v1,v2,v3,v4,v5,v6);            \
107    }
108  
109  #define PRINTK_8(f,s,v1,v2,v3,v4,v5,v6,v7)  \
110    if (f & (mwave_debug)) {                  \
111      printk(s,v1,v2,v3,v4,v5,v6,v7);         \
112    }
113  
114  #else
115  #define PRINTK_1(f,s)
116  #define PRINTK_2(f,s,v1)
117  #define PRINTK_3(f,s,v1,v2)
118  #define PRINTK_4(f,s,v1,v2,v3)
119  #define PRINTK_5(f,s,v1,v2,v3,v4)
120  #define PRINTK_6(f,s,v1,v2,v3,v4,v5)
121  #define PRINTK_7(f,s,v1,v2,v3,v4,v5,v6)
122  #define PRINTK_8(f,s,v1,v2,v3,v4,v5,v6,v7)
123  #endif
124  
125  
126  typedef struct _MWAVE_IPC {
127  	unsigned short usIntCount;	/* 0=none, 1=first, 2=greater than 1st */
128  	bool bIsEnabled;
129  	bool bIsHere;
130  	/* entry spin lock */
131  	wait_queue_head_t ipc_wait_queue;
132  } MWAVE_IPC;
133  
134  typedef struct _MWAVE_DEVICE_DATA {
135  	THINKPAD_BD_DATA rBDData;	/* board driver's data area */
136  	unsigned long ulIPCSource_ISR;	/* IPC source bits for recently processed intr, set during ISR processing */
137  	unsigned long ulIPCSource_DPC;	/* IPC source bits for recently processed intr, set during DPC processing */
138  	bool bBDInitialized;
139  	bool bResourcesClaimed;
140  	bool bDSPEnabled;
141  	bool bDSPReset;
142  	MWAVE_IPC IPCs[16];
143  	bool bMwaveDevRegistered;
144  	short sLine;
145  	int nr_registered_attrs;
146  	int device_registered;
147  
148  } MWAVE_DEVICE_DATA, *pMWAVE_DEVICE_DATA;
149  
150  extern MWAVE_DEVICE_DATA mwave_s_mdd;
151  
152  #endif
153