1*130803f2SJérôme Duval /* 2*130803f2SJérôme Duval * Auich BeOS Driver for Intel Southbridge audio 3*130803f2SJérôme Duval * 4*130803f2SJérôme Duval * Copyright (c) 2003, Jerome Duval (jerome.duval@free.fr) 5*130803f2SJérôme Duval 6*130803f2SJérôme Duval * Original code : BeOS Driver for Intel ICH AC'97 Link interface 7*130803f2SJérôme Duval * Copyright (c) 2002, Marcus Overhagen <marcus@overhagen.de> 8*130803f2SJérôme Duval * 9*130803f2SJérôme Duval * All rights reserved. 10*130803f2SJérôme Duval * Redistribution and use in source and binary forms, with or without modification, 11*130803f2SJérôme Duval * are permitted provided that the following conditions are met: 12*130803f2SJérôme Duval * 13*130803f2SJérôme Duval * - Redistributions of source code must retain the above copyright notice, 14*130803f2SJérôme Duval * this list of conditions and the following disclaimer. 15*130803f2SJérôme Duval * - Redistributions in binary form must reproduce the above copyright notice, 16*130803f2SJérôme Duval * this list of conditions and the following disclaimer in the documentation 17*130803f2SJérôme Duval * and/or other materials provided with the distribution. 18*130803f2SJérôme Duval * 19*130803f2SJérôme Duval * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 20*130803f2SJérôme Duval * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21*130803f2SJérôme Duval * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22*130803f2SJérôme Duval * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 23*130803f2SJérôme Duval * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24*130803f2SJérôme Duval * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 25*130803f2SJérôme Duval * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26*130803f2SJérôme Duval * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 27*130803f2SJérôme Duval * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 28*130803f2SJérôme Duval * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29*130803f2SJérôme Duval * 30*130803f2SJérôme Duval */ 31*130803f2SJérôme Duval 32*130803f2SJérôme Duval #ifndef _AUICHREG_H_ 33*130803f2SJérôme Duval #define _AUICHREG_H_ 34*130803f2SJérôme Duval 35*130803f2SJérôme Duval /* Native Audio Bus Master Control Registers */ 36*130803f2SJérôme Duval enum AUICH_GLOBAL_REGISTER 37*130803f2SJérôme Duval { 38*130803f2SJérôme Duval AUICH_REG_GLOB_CNT = 0x2C, 39*130803f2SJérôme Duval AUICH_REG_GLOB_STA = 0x30, 40*130803f2SJérôme Duval AUICH_REG_ACC_SEMA = 0x34, 41*130803f2SJérôme Duval AUICH_REG_SDM = 0x80 42*130803f2SJérôme Duval }; 43*130803f2SJérôme Duval 44*130803f2SJérôme Duval enum AUICH_X_REGISTER_BASE /* base addresses for the following offsets */ 45*130803f2SJérôme Duval { 46*130803f2SJérôme Duval AUICH_REG_PI_BASE = 0x00, 47*130803f2SJérôme Duval AUICH_REG_PO_BASE = 0x10, 48*130803f2SJérôme Duval AUICH_REG_MC_BASE = 0x20 49*130803f2SJérôme Duval }; 50*130803f2SJérôme Duval 51*130803f2SJérôme Duval enum AUICH_X_REGISTER_OFFSETS /* add base address to get the PI, PO or MC reg */ 52*130803f2SJérôme Duval { 53*130803f2SJérôme Duval AUICH_REG_X_BDBAR = 0x00, 54*130803f2SJérôme Duval AUICH_REG_X_CIV = 0x04, 55*130803f2SJérôme Duval AUICH_REG_X_LVI = 0x05, 56*130803f2SJérôme Duval AUICH_REG_X_SR = 0x06, 57*130803f2SJérôme Duval AUICH_REG_X_PICB = 0x08, 58*130803f2SJérôme Duval AUICH_REG_X_PIV = 0x0A, 59*130803f2SJérôme Duval AUICH_REG_X_CR = 0x0B 60*130803f2SJérôme Duval }; 61*130803f2SJérôme Duval 62*130803f2SJérôme Duval /* AUICH_REG_X_SR (Status Register) Bits */ 63*130803f2SJérôme Duval enum REG_X_SR_BITS 64*130803f2SJérôme Duval { 65*130803f2SJérôme Duval SR_DCH = 0x0001, 66*130803f2SJérôme Duval SR_CELV = 0x0002, 67*130803f2SJérôme Duval SR_LVBCI = 0x0004, 68*130803f2SJérôme Duval SR_BCIS = 0x0008, 69*130803f2SJérôme Duval SR_FIFOE = 0x0010, 70*130803f2SJérôme Duval SR_MASK = SR_FIFOE | SR_BCIS | SR_LVBCI | SR_CELV | SR_DCH //| 0x200 | 0x80 | 0x2 71*130803f2SJérôme Duval }; 72*130803f2SJérôme Duval 73*130803f2SJérôme Duval /* AUICH_REG_X_CR (Control Register) Bits */ 74*130803f2SJérôme Duval enum REG_X_CR_BITS 75*130803f2SJérôme Duval { 76*130803f2SJérôme Duval CR_RPBM = 0x01, 77*130803f2SJérôme Duval CR_RR = 0x02, 78*130803f2SJérôme Duval CR_LVBIE = 0x04, 79*130803f2SJérôme Duval CR_FEIE = 0x08, 80*130803f2SJérôme Duval CR_IOCE = 0x10 81*130803f2SJérôme Duval }; 82*130803f2SJérôme Duval 83*130803f2SJérôme Duval /* AUICH_REG_GLOB_CNT (Global Control Register) Bits */ 84*130803f2SJérôme Duval enum REG_GLOB_CNT_BITS 85*130803f2SJérôme Duval { 86*130803f2SJérôme Duval CNT_GIE = 0x01, 87*130803f2SJérôme Duval CNT_COLD = 0x02, 88*130803f2SJérôme Duval CNT_WARM = 0x04, 89*130803f2SJérôme Duval CNT_SHUT = 0x08, 90*130803f2SJérôme Duval CNT_PRIE = 0x10, 91*130803f2SJérôme Duval CNT_SRIE = 0x20 92*130803f2SJérôme Duval }; 93*130803f2SJérôme Duval 94*130803f2SJérôme Duval /* AUICH_REG_GLOB_STA (Global Status Register) Bits */ 95*130803f2SJérôme Duval enum REG_GLOB_STA_BITS 96*130803f2SJérôme Duval { 97*130803f2SJérôme Duval STA_GSCI = 0x00000001, /* GPI Status Change Interrupt */ 98*130803f2SJérôme Duval STA_MIINT = 0x00000002, /* Modem In Interrupt */ 99*130803f2SJérôme Duval STA_MOINT = 0x00000004, /* Modem Out Interrupt */ 100*130803f2SJérôme Duval STA_PIINT = 0x00000020, /* PCM In Interrupt */ 101*130803f2SJérôme Duval STA_POINT = 0x00000040, /* PCM Out Interrupt */ 102*130803f2SJérôme Duval STA_MINT = 0x00000080, /* Mic In Interrupt */ 103*130803f2SJérôme Duval STA_S0CR = 0x00000100, /* AC_SDIN0 Codec Ready */ 104*130803f2SJérôme Duval STA_S1CR = 0x00000200, /* AC_SDIN1 Codec Ready */ 105*130803f2SJérôme Duval STA_S0RI = 0x00000400, /* AC_SDIN0 Resume Interrupt */ 106*130803f2SJérôme Duval STA_S1RI = 0x00000800, /* AC_SDIN1 Resume Interrupt */ 107*130803f2SJérôme Duval STA_RCS = 0x00008000, /* Read Completition Status */ 108*130803f2SJérôme Duval STA_AD3 = 0x00010000, 109*130803f2SJérôme Duval STA_MD3 = 0x00020000, 110*130803f2SJérôme Duval STA_SAMPLE_CAP = 0x00c00000, /* sampling precision capability */ 111*130803f2SJérôme Duval STA_POM20 = 0x00400000, /* PCM out precision 20bit */ 112*130803f2SJérôme Duval STA_CHAN_CAP = 0x00300000, /* multi-channel capability */ 113*130803f2SJérôme Duval STA_PCM4 = 0x00100000, /* 4ch output */ 114*130803f2SJérôme Duval STA_PCM6 = 0x00200000, /* 6ch output */ 115*130803f2SJérôme Duval STA_M2INT = 0x01000000, /* Microphone 2 In Interrupt */ 116*130803f2SJérôme Duval STA_P2INT = 0x02000000, /* PCM In 2 Interrupt */ 117*130803f2SJérôme Duval STA_SPINT = 0x04000000, /* S/PDIF Interrupt */ 118*130803f2SJérôme Duval STA_BCS = 0x08000000, /* Bit Clock Stopped */ 119*130803f2SJérôme Duval STA_S2CR = 0x10000000, /* AC_SDIN2 Codec Ready */ 120*130803f2SJérôme Duval STA_S2RI = 0x20000000, /* AC_SDIN2 Resume Interrupt */ 121*130803f2SJérôme Duval STA_INTMASK = (STA_MIINT | STA_MOINT | STA_PIINT | STA_POINT | STA_MINT | STA_S0RI | STA_S1RI | STA_M2INT | STA_P2INT | STA_SPINT | STA_S2RI) 122*130803f2SJérôme Duval }; 123*130803f2SJérôme Duval 124*130803f2SJérôme Duval #define ICH4_MMBAR_SIZE 512 125*130803f2SJérôme Duval #define ICH4_MBBAR_SIZE 256 126*130803f2SJérôme Duval 127*130803f2SJérôme Duval #endif /* _AUICHREG_H_ */ 128