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 <asm/uaccess.h> 57#include <linux/wait.h> 58 59extern int mwave_debug; 60extern int mwave_3780i_irq; 61extern int mwave_3780i_io; 62extern int mwave_uart_irq; 63extern 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 126typedef struct _MWAVE_IPC { 127 unsigned short usIntCount; /* 0=none, 1=first, 2=greater than 1st */ 128 BOOLEAN bIsEnabled; 129 BOOLEAN bIsHere; 130 /* entry spin lock */ 131 wait_queue_head_t ipc_wait_queue; 132} MWAVE_IPC; 133 134typedef 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 BOOLEAN bBDInitialized; 139 BOOLEAN bResourcesClaimed; 140 BOOLEAN bDSPEnabled; 141 BOOLEAN bDSPReset; 142 MWAVE_IPC IPCs[16]; 143 BOOLEAN bMwaveDevRegistered; 144 short sLine; 145 int nr_registered_attrs; 146 int device_registered; 147 148} MWAVE_DEVICE_DATA, *pMWAVE_DEVICE_DATA; 149 150extern MWAVE_DEVICE_DATA mwave_s_mdd; 151 152#endif 153