1*1da177e4SLinus Torvalds /* 2*1da177e4SLinus Torvalds * 3*1da177e4SLinus Torvalds * tp3780i.h -- declarations for tp3780i.c 4*1da177e4SLinus Torvalds * 5*1da177e4SLinus Torvalds * 6*1da177e4SLinus Torvalds * Written By: Mike Sullivan IBM Corporation 7*1da177e4SLinus Torvalds * 8*1da177e4SLinus Torvalds * Copyright (C) 1999 IBM Corporation 9*1da177e4SLinus Torvalds * 10*1da177e4SLinus Torvalds * This program is free software; you can redistribute it and/or modify 11*1da177e4SLinus Torvalds * it under the terms of the GNU General Public License as published by 12*1da177e4SLinus Torvalds * the Free Software Foundation; either version 2 of the License, or 13*1da177e4SLinus Torvalds * (at your option) any later version. 14*1da177e4SLinus Torvalds * 15*1da177e4SLinus Torvalds * This program is distributed in the hope that it will be useful, 16*1da177e4SLinus Torvalds * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*1da177e4SLinus Torvalds * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*1da177e4SLinus Torvalds * GNU General Public License for more details. 19*1da177e4SLinus Torvalds * 20*1da177e4SLinus Torvalds * NO WARRANTY 21*1da177e4SLinus Torvalds * THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR 22*1da177e4SLinus Torvalds * CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT 23*1da177e4SLinus Torvalds * LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, 24*1da177e4SLinus Torvalds * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is 25*1da177e4SLinus Torvalds * solely responsible for determining the appropriateness of using and 26*1da177e4SLinus Torvalds * distributing the Program and assumes all risks associated with its 27*1da177e4SLinus Torvalds * exercise of rights under this Agreement, including but not limited to 28*1da177e4SLinus Torvalds * the risks and costs of program errors, damage to or loss of data, 29*1da177e4SLinus Torvalds * programs or equipment, and unavailability or interruption of operations. 30*1da177e4SLinus Torvalds * 31*1da177e4SLinus Torvalds * DISCLAIMER OF LIABILITY 32*1da177e4SLinus Torvalds * NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY 33*1da177e4SLinus Torvalds * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 34*1da177e4SLinus Torvalds * DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND 35*1da177e4SLinus Torvalds * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 36*1da177e4SLinus Torvalds * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 37*1da177e4SLinus Torvalds * USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED 38*1da177e4SLinus Torvalds * HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 39*1da177e4SLinus Torvalds * 40*1da177e4SLinus Torvalds * You should have received a copy of the GNU General Public License 41*1da177e4SLinus Torvalds * along with this program; if not, write to the Free Software 42*1da177e4SLinus Torvalds * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 43*1da177e4SLinus Torvalds * 44*1da177e4SLinus Torvalds * 45*1da177e4SLinus Torvalds * 10/23/2000 - Alpha Release 46*1da177e4SLinus Torvalds * First release to the public 47*1da177e4SLinus Torvalds */ 48*1da177e4SLinus Torvalds 49*1da177e4SLinus Torvalds #ifndef _LINUX_TP3780I_H 50*1da177e4SLinus Torvalds #define _LINUX_TP3780I_H 51*1da177e4SLinus Torvalds 52*1da177e4SLinus Torvalds #include <asm/io.h> 53*1da177e4SLinus Torvalds #include "mwavepub.h" 54*1da177e4SLinus Torvalds 55*1da177e4SLinus Torvalds 56*1da177e4SLinus Torvalds /* DSP abilities constants for 3780i based Thinkpads */ 57*1da177e4SLinus Torvalds #define TP_ABILITIES_INTS_PER_SEC 39160800 58*1da177e4SLinus Torvalds #define TP_ABILITIES_DATA_SIZE 32768 59*1da177e4SLinus Torvalds #define TP_ABILITIES_INST_SIZE 32768 60*1da177e4SLinus Torvalds #define TP_ABILITIES_MWAVEOS_NAME "mwaveos0700.dsp" 61*1da177e4SLinus Torvalds #define TP_ABILITIES_BIOSTASK_NAME "mwbio701.dsp" 62*1da177e4SLinus Torvalds 63*1da177e4SLinus Torvalds 64*1da177e4SLinus Torvalds /* DSP configuration values for 3780i based Thinkpads */ 65*1da177e4SLinus Torvalds #define TP_CFG_NumTransfers 3 /* 16 transfers */ 66*1da177e4SLinus Torvalds #define TP_CFG_RerequestTimer 1 /* 2 usec */ 67*1da177e4SLinus Torvalds #define TP_CFG_MEMCS16 0 /* Disabled, 16-bit memory assumed */ 68*1da177e4SLinus Torvalds #define TP_CFG_IsaMemCmdWidth 3 /* 295 nsec (16-bit) */ 69*1da177e4SLinus Torvalds #define TP_CFG_GateIOCHRDY 0 /* No IOCHRDY gating */ 70*1da177e4SLinus Torvalds #define TP_CFG_EnablePwrMgmt 1 /* Enable low poser suspend/resume */ 71*1da177e4SLinus Torvalds #define TP_CFG_HBusTimerValue 255 /* HBus timer load value */ 72*1da177e4SLinus Torvalds #define TP_CFG_DisableLBusTimeout 0 /* Enable LBus timeout */ 73*1da177e4SLinus Torvalds #define TP_CFG_N_Divisor 32 /* Clock = 39.1608 Mhz */ 74*1da177e4SLinus Torvalds #define TP_CFG_M_Multiplier 37 /* " */ 75*1da177e4SLinus Torvalds #define TP_CFG_PllBypass 0 /* don't bypass */ 76*1da177e4SLinus Torvalds #define TP_CFG_ChipletEnable 0xFFFF /* Enable all chiplets */ 77*1da177e4SLinus Torvalds 78*1da177e4SLinus Torvalds typedef struct { 79*1da177e4SLinus Torvalds int bDSPEnabled; 80*1da177e4SLinus Torvalds int bShareDspIrq; 81*1da177e4SLinus Torvalds int bShareUartIrq; 82*1da177e4SLinus Torvalds DSP_3780I_CONFIG_SETTINGS rDspSettings; 83*1da177e4SLinus Torvalds } THINKPAD_BD_DATA; 84*1da177e4SLinus Torvalds 85*1da177e4SLinus Torvalds int tp3780I_InitializeBoardData(THINKPAD_BD_DATA * pBDData); 86*1da177e4SLinus Torvalds int tp3780I_CalcResources(THINKPAD_BD_DATA * pBDData); 87*1da177e4SLinus Torvalds int tp3780I_ClaimResources(THINKPAD_BD_DATA * pBDData); 88*1da177e4SLinus Torvalds int tp3780I_ReleaseResources(THINKPAD_BD_DATA * pBDData); 89*1da177e4SLinus Torvalds int tp3780I_EnableDSP(THINKPAD_BD_DATA * pBDData); 90*1da177e4SLinus Torvalds int tp3780I_DisableDSP(THINKPAD_BD_DATA * pBDData); 91*1da177e4SLinus Torvalds int tp3780I_ResetDSP(THINKPAD_BD_DATA * pBDData); 92*1da177e4SLinus Torvalds int tp3780I_StartDSP(THINKPAD_BD_DATA * pBDData); 93*1da177e4SLinus Torvalds int tp3780I_QueryAbilities(THINKPAD_BD_DATA * pBDData, MW_ABILITIES * pAbilities); 94*1da177e4SLinus Torvalds int tp3780I_Cleanup(THINKPAD_BD_DATA * pBDData); 95*1da177e4SLinus Torvalds int tp3780I_ReadWriteDspDStore(THINKPAD_BD_DATA * pBDData, unsigned int uOpcode, 96*1da177e4SLinus Torvalds void __user *pvBuffer, unsigned int uCount, 97*1da177e4SLinus Torvalds unsigned long ulDSPAddr); 98*1da177e4SLinus Torvalds int tp3780I_ReadWriteDspIStore(THINKPAD_BD_DATA * pBDData, unsigned int uOpcode, 99*1da177e4SLinus Torvalds void __user *pvBuffer, unsigned int uCount, 100*1da177e4SLinus Torvalds unsigned long ulDSPAddr); 101*1da177e4SLinus Torvalds 102*1da177e4SLinus Torvalds 103*1da177e4SLinus Torvalds #endif 104