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