1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun #ifndef __SOUND_CS46XX_H 3*4882a593Smuzhiyun #define __SOUND_CS46XX_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun /* 6*4882a593Smuzhiyun * Copyright (c) by Jaroslav Kysela <perex@perex.cz>, 7*4882a593Smuzhiyun * Cirrus Logic, Inc. 8*4882a593Smuzhiyun * Definitions for Cirrus Logic CS46xx chips 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <sound/pcm.h> 12*4882a593Smuzhiyun #include <sound/pcm-indirect.h> 13*4882a593Smuzhiyun #include <sound/rawmidi.h> 14*4882a593Smuzhiyun #include <sound/ac97_codec.h> 15*4882a593Smuzhiyun #include "cs46xx_dsp_spos.h" 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /* 18*4882a593Smuzhiyun * Direct registers 19*4882a593Smuzhiyun */ 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /* 22*4882a593Smuzhiyun * The following define the offsets of the registers accessed via base address 23*4882a593Smuzhiyun * register zero on the CS46xx part. 24*4882a593Smuzhiyun */ 25*4882a593Smuzhiyun #define BA0_HISR 0x00000000 26*4882a593Smuzhiyun #define BA0_HSR0 0x00000004 27*4882a593Smuzhiyun #define BA0_HICR 0x00000008 28*4882a593Smuzhiyun #define BA0_DMSR 0x00000100 29*4882a593Smuzhiyun #define BA0_HSAR 0x00000110 30*4882a593Smuzhiyun #define BA0_HDAR 0x00000114 31*4882a593Smuzhiyun #define BA0_HDMR 0x00000118 32*4882a593Smuzhiyun #define BA0_HDCR 0x0000011C 33*4882a593Smuzhiyun #define BA0_PFMC 0x00000200 34*4882a593Smuzhiyun #define BA0_PFCV1 0x00000204 35*4882a593Smuzhiyun #define BA0_PFCV2 0x00000208 36*4882a593Smuzhiyun #define BA0_PCICFG00 0x00000300 37*4882a593Smuzhiyun #define BA0_PCICFG04 0x00000304 38*4882a593Smuzhiyun #define BA0_PCICFG08 0x00000308 39*4882a593Smuzhiyun #define BA0_PCICFG0C 0x0000030C 40*4882a593Smuzhiyun #define BA0_PCICFG10 0x00000310 41*4882a593Smuzhiyun #define BA0_PCICFG14 0x00000314 42*4882a593Smuzhiyun #define BA0_PCICFG18 0x00000318 43*4882a593Smuzhiyun #define BA0_PCICFG1C 0x0000031C 44*4882a593Smuzhiyun #define BA0_PCICFG20 0x00000320 45*4882a593Smuzhiyun #define BA0_PCICFG24 0x00000324 46*4882a593Smuzhiyun #define BA0_PCICFG28 0x00000328 47*4882a593Smuzhiyun #define BA0_PCICFG2C 0x0000032C 48*4882a593Smuzhiyun #define BA0_PCICFG30 0x00000330 49*4882a593Smuzhiyun #define BA0_PCICFG34 0x00000334 50*4882a593Smuzhiyun #define BA0_PCICFG38 0x00000338 51*4882a593Smuzhiyun #define BA0_PCICFG3C 0x0000033C 52*4882a593Smuzhiyun #define BA0_CLKCR1 0x00000400 53*4882a593Smuzhiyun #define BA0_CLKCR2 0x00000404 54*4882a593Smuzhiyun #define BA0_PLLM 0x00000408 55*4882a593Smuzhiyun #define BA0_PLLCC 0x0000040C 56*4882a593Smuzhiyun #define BA0_FRR 0x00000410 57*4882a593Smuzhiyun #define BA0_CFL1 0x00000414 58*4882a593Smuzhiyun #define BA0_CFL2 0x00000418 59*4882a593Smuzhiyun #define BA0_SERMC1 0x00000420 60*4882a593Smuzhiyun #define BA0_SERMC2 0x00000424 61*4882a593Smuzhiyun #define BA0_SERC1 0x00000428 62*4882a593Smuzhiyun #define BA0_SERC2 0x0000042C 63*4882a593Smuzhiyun #define BA0_SERC3 0x00000430 64*4882a593Smuzhiyun #define BA0_SERC4 0x00000434 65*4882a593Smuzhiyun #define BA0_SERC5 0x00000438 66*4882a593Smuzhiyun #define BA0_SERBSP 0x0000043C 67*4882a593Smuzhiyun #define BA0_SERBST 0x00000440 68*4882a593Smuzhiyun #define BA0_SERBCM 0x00000444 69*4882a593Smuzhiyun #define BA0_SERBAD 0x00000448 70*4882a593Smuzhiyun #define BA0_SERBCF 0x0000044C 71*4882a593Smuzhiyun #define BA0_SERBWP 0x00000450 72*4882a593Smuzhiyun #define BA0_SERBRP 0x00000454 73*4882a593Smuzhiyun #ifndef NO_CS4612 74*4882a593Smuzhiyun #define BA0_ASER_FADDR 0x00000458 75*4882a593Smuzhiyun #endif 76*4882a593Smuzhiyun #define BA0_ACCTL 0x00000460 77*4882a593Smuzhiyun #define BA0_ACSTS 0x00000464 78*4882a593Smuzhiyun #define BA0_ACOSV 0x00000468 79*4882a593Smuzhiyun #define BA0_ACCAD 0x0000046C 80*4882a593Smuzhiyun #define BA0_ACCDA 0x00000470 81*4882a593Smuzhiyun #define BA0_ACISV 0x00000474 82*4882a593Smuzhiyun #define BA0_ACSAD 0x00000478 83*4882a593Smuzhiyun #define BA0_ACSDA 0x0000047C 84*4882a593Smuzhiyun #define BA0_JSPT 0x00000480 85*4882a593Smuzhiyun #define BA0_JSCTL 0x00000484 86*4882a593Smuzhiyun #define BA0_JSC1 0x00000488 87*4882a593Smuzhiyun #define BA0_JSC2 0x0000048C 88*4882a593Smuzhiyun #define BA0_MIDCR 0x00000490 89*4882a593Smuzhiyun #define BA0_MIDSR 0x00000494 90*4882a593Smuzhiyun #define BA0_MIDWP 0x00000498 91*4882a593Smuzhiyun #define BA0_MIDRP 0x0000049C 92*4882a593Smuzhiyun #define BA0_JSIO 0x000004A0 93*4882a593Smuzhiyun #ifndef NO_CS4612 94*4882a593Smuzhiyun #define BA0_ASER_MASTER 0x000004A4 95*4882a593Smuzhiyun #endif 96*4882a593Smuzhiyun #define BA0_CFGI 0x000004B0 97*4882a593Smuzhiyun #define BA0_SSVID 0x000004B4 98*4882a593Smuzhiyun #define BA0_GPIOR 0x000004B8 99*4882a593Smuzhiyun #ifndef NO_CS4612 100*4882a593Smuzhiyun #define BA0_EGPIODR 0x000004BC 101*4882a593Smuzhiyun #define BA0_EGPIOPTR 0x000004C0 102*4882a593Smuzhiyun #define BA0_EGPIOTR 0x000004C4 103*4882a593Smuzhiyun #define BA0_EGPIOWR 0x000004C8 104*4882a593Smuzhiyun #define BA0_EGPIOSR 0x000004CC 105*4882a593Smuzhiyun #define BA0_SERC6 0x000004D0 106*4882a593Smuzhiyun #define BA0_SERC7 0x000004D4 107*4882a593Smuzhiyun #define BA0_SERACC 0x000004D8 108*4882a593Smuzhiyun #define BA0_ACCTL2 0x000004E0 109*4882a593Smuzhiyun #define BA0_ACSTS2 0x000004E4 110*4882a593Smuzhiyun #define BA0_ACOSV2 0x000004E8 111*4882a593Smuzhiyun #define BA0_ACCAD2 0x000004EC 112*4882a593Smuzhiyun #define BA0_ACCDA2 0x000004F0 113*4882a593Smuzhiyun #define BA0_ACISV2 0x000004F4 114*4882a593Smuzhiyun #define BA0_ACSAD2 0x000004F8 115*4882a593Smuzhiyun #define BA0_ACSDA2 0x000004FC 116*4882a593Smuzhiyun #define BA0_IOTAC0 0x00000500 117*4882a593Smuzhiyun #define BA0_IOTAC1 0x00000504 118*4882a593Smuzhiyun #define BA0_IOTAC2 0x00000508 119*4882a593Smuzhiyun #define BA0_IOTAC3 0x0000050C 120*4882a593Smuzhiyun #define BA0_IOTAC4 0x00000510 121*4882a593Smuzhiyun #define BA0_IOTAC5 0x00000514 122*4882a593Smuzhiyun #define BA0_IOTAC6 0x00000518 123*4882a593Smuzhiyun #define BA0_IOTAC7 0x0000051C 124*4882a593Smuzhiyun #define BA0_IOTAC8 0x00000520 125*4882a593Smuzhiyun #define BA0_IOTAC9 0x00000524 126*4882a593Smuzhiyun #define BA0_IOTAC10 0x00000528 127*4882a593Smuzhiyun #define BA0_IOTAC11 0x0000052C 128*4882a593Smuzhiyun #define BA0_IOTFR0 0x00000540 129*4882a593Smuzhiyun #define BA0_IOTFR1 0x00000544 130*4882a593Smuzhiyun #define BA0_IOTFR2 0x00000548 131*4882a593Smuzhiyun #define BA0_IOTFR3 0x0000054C 132*4882a593Smuzhiyun #define BA0_IOTFR4 0x00000550 133*4882a593Smuzhiyun #define BA0_IOTFR5 0x00000554 134*4882a593Smuzhiyun #define BA0_IOTFR6 0x00000558 135*4882a593Smuzhiyun #define BA0_IOTFR7 0x0000055C 136*4882a593Smuzhiyun #define BA0_IOTFIFO 0x00000580 137*4882a593Smuzhiyun #define BA0_IOTRRD 0x00000584 138*4882a593Smuzhiyun #define BA0_IOTFP 0x00000588 139*4882a593Smuzhiyun #define BA0_IOTCR 0x0000058C 140*4882a593Smuzhiyun #define BA0_DPCID 0x00000590 141*4882a593Smuzhiyun #define BA0_DPCIA 0x00000594 142*4882a593Smuzhiyun #define BA0_DPCIC 0x00000598 143*4882a593Smuzhiyun #define BA0_PCPCIR 0x00000600 144*4882a593Smuzhiyun #define BA0_PCPCIG 0x00000604 145*4882a593Smuzhiyun #define BA0_PCPCIEN 0x00000608 146*4882a593Smuzhiyun #define BA0_EPCIPMC 0x00000610 147*4882a593Smuzhiyun #endif 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun /* 150*4882a593Smuzhiyun * The following define the offsets of the registers and memories accessed via 151*4882a593Smuzhiyun * base address register one on the CS46xx part. 152*4882a593Smuzhiyun */ 153*4882a593Smuzhiyun #define BA1_SP_DMEM0 0x00000000 154*4882a593Smuzhiyun #define BA1_SP_DMEM1 0x00010000 155*4882a593Smuzhiyun #define BA1_SP_PMEM 0x00020000 156*4882a593Smuzhiyun #define BA1_SP_REG 0x00030000 157*4882a593Smuzhiyun #define BA1_SPCR 0x00030000 158*4882a593Smuzhiyun #define BA1_DREG 0x00030004 159*4882a593Smuzhiyun #define BA1_DSRWP 0x00030008 160*4882a593Smuzhiyun #define BA1_TWPR 0x0003000C 161*4882a593Smuzhiyun #define BA1_SPWR 0x00030010 162*4882a593Smuzhiyun #define BA1_SPIR 0x00030014 163*4882a593Smuzhiyun #define BA1_FGR1 0x00030020 164*4882a593Smuzhiyun #define BA1_SPCS 0x00030028 165*4882a593Smuzhiyun #define BA1_SDSR 0x0003002C 166*4882a593Smuzhiyun #define BA1_FRMT 0x00030030 167*4882a593Smuzhiyun #define BA1_FRCC 0x00030034 168*4882a593Smuzhiyun #define BA1_FRSC 0x00030038 169*4882a593Smuzhiyun #define BA1_OMNI_MEM 0x000E0000 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun /* 173*4882a593Smuzhiyun * The following defines are for the flags in the host interrupt status 174*4882a593Smuzhiyun * register. 175*4882a593Smuzhiyun */ 176*4882a593Smuzhiyun #define HISR_VC_MASK 0x0000FFFF 177*4882a593Smuzhiyun #define HISR_VC0 0x00000001 178*4882a593Smuzhiyun #define HISR_VC1 0x00000002 179*4882a593Smuzhiyun #define HISR_VC2 0x00000004 180*4882a593Smuzhiyun #define HISR_VC3 0x00000008 181*4882a593Smuzhiyun #define HISR_VC4 0x00000010 182*4882a593Smuzhiyun #define HISR_VC5 0x00000020 183*4882a593Smuzhiyun #define HISR_VC6 0x00000040 184*4882a593Smuzhiyun #define HISR_VC7 0x00000080 185*4882a593Smuzhiyun #define HISR_VC8 0x00000100 186*4882a593Smuzhiyun #define HISR_VC9 0x00000200 187*4882a593Smuzhiyun #define HISR_VC10 0x00000400 188*4882a593Smuzhiyun #define HISR_VC11 0x00000800 189*4882a593Smuzhiyun #define HISR_VC12 0x00001000 190*4882a593Smuzhiyun #define HISR_VC13 0x00002000 191*4882a593Smuzhiyun #define HISR_VC14 0x00004000 192*4882a593Smuzhiyun #define HISR_VC15 0x00008000 193*4882a593Smuzhiyun #define HISR_INT0 0x00010000 194*4882a593Smuzhiyun #define HISR_INT1 0x00020000 195*4882a593Smuzhiyun #define HISR_DMAI 0x00040000 196*4882a593Smuzhiyun #define HISR_FROVR 0x00080000 197*4882a593Smuzhiyun #define HISR_MIDI 0x00100000 198*4882a593Smuzhiyun #ifdef NO_CS4612 199*4882a593Smuzhiyun #define HISR_RESERVED 0x0FE00000 200*4882a593Smuzhiyun #else 201*4882a593Smuzhiyun #define HISR_SBINT 0x00200000 202*4882a593Smuzhiyun #define HISR_RESERVED 0x0FC00000 203*4882a593Smuzhiyun #endif 204*4882a593Smuzhiyun #define HISR_H0P 0x40000000 205*4882a593Smuzhiyun #define HISR_INTENA 0x80000000 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun /* 208*4882a593Smuzhiyun * The following defines are for the flags in the host signal register 0. 209*4882a593Smuzhiyun */ 210*4882a593Smuzhiyun #define HSR0_VC_MASK 0xFFFFFFFF 211*4882a593Smuzhiyun #define HSR0_VC16 0x00000001 212*4882a593Smuzhiyun #define HSR0_VC17 0x00000002 213*4882a593Smuzhiyun #define HSR0_VC18 0x00000004 214*4882a593Smuzhiyun #define HSR0_VC19 0x00000008 215*4882a593Smuzhiyun #define HSR0_VC20 0x00000010 216*4882a593Smuzhiyun #define HSR0_VC21 0x00000020 217*4882a593Smuzhiyun #define HSR0_VC22 0x00000040 218*4882a593Smuzhiyun #define HSR0_VC23 0x00000080 219*4882a593Smuzhiyun #define HSR0_VC24 0x00000100 220*4882a593Smuzhiyun #define HSR0_VC25 0x00000200 221*4882a593Smuzhiyun #define HSR0_VC26 0x00000400 222*4882a593Smuzhiyun #define HSR0_VC27 0x00000800 223*4882a593Smuzhiyun #define HSR0_VC28 0x00001000 224*4882a593Smuzhiyun #define HSR0_VC29 0x00002000 225*4882a593Smuzhiyun #define HSR0_VC30 0x00004000 226*4882a593Smuzhiyun #define HSR0_VC31 0x00008000 227*4882a593Smuzhiyun #define HSR0_VC32 0x00010000 228*4882a593Smuzhiyun #define HSR0_VC33 0x00020000 229*4882a593Smuzhiyun #define HSR0_VC34 0x00040000 230*4882a593Smuzhiyun #define HSR0_VC35 0x00080000 231*4882a593Smuzhiyun #define HSR0_VC36 0x00100000 232*4882a593Smuzhiyun #define HSR0_VC37 0x00200000 233*4882a593Smuzhiyun #define HSR0_VC38 0x00400000 234*4882a593Smuzhiyun #define HSR0_VC39 0x00800000 235*4882a593Smuzhiyun #define HSR0_VC40 0x01000000 236*4882a593Smuzhiyun #define HSR0_VC41 0x02000000 237*4882a593Smuzhiyun #define HSR0_VC42 0x04000000 238*4882a593Smuzhiyun #define HSR0_VC43 0x08000000 239*4882a593Smuzhiyun #define HSR0_VC44 0x10000000 240*4882a593Smuzhiyun #define HSR0_VC45 0x20000000 241*4882a593Smuzhiyun #define HSR0_VC46 0x40000000 242*4882a593Smuzhiyun #define HSR0_VC47 0x80000000 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun /* 245*4882a593Smuzhiyun * The following defines are for the flags in the host interrupt control 246*4882a593Smuzhiyun * register. 247*4882a593Smuzhiyun */ 248*4882a593Smuzhiyun #define HICR_IEV 0x00000001 249*4882a593Smuzhiyun #define HICR_CHGM 0x00000002 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun /* 252*4882a593Smuzhiyun * The following defines are for the flags in the DMA status register. 253*4882a593Smuzhiyun */ 254*4882a593Smuzhiyun #define DMSR_HP 0x00000001 255*4882a593Smuzhiyun #define DMSR_HR 0x00000002 256*4882a593Smuzhiyun #define DMSR_SP 0x00000004 257*4882a593Smuzhiyun #define DMSR_SR 0x00000008 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun /* 260*4882a593Smuzhiyun * The following defines are for the flags in the host DMA source address 261*4882a593Smuzhiyun * register. 262*4882a593Smuzhiyun */ 263*4882a593Smuzhiyun #define HSAR_HOST_ADDR_MASK 0xFFFFFFFF 264*4882a593Smuzhiyun #define HSAR_DSP_ADDR_MASK 0x0000FFFF 265*4882a593Smuzhiyun #define HSAR_MEMID_MASK 0x000F0000 266*4882a593Smuzhiyun #define HSAR_MEMID_SP_DMEM0 0x00000000 267*4882a593Smuzhiyun #define HSAR_MEMID_SP_DMEM1 0x00010000 268*4882a593Smuzhiyun #define HSAR_MEMID_SP_PMEM 0x00020000 269*4882a593Smuzhiyun #define HSAR_MEMID_SP_DEBUG 0x00030000 270*4882a593Smuzhiyun #define HSAR_MEMID_OMNI_MEM 0x000E0000 271*4882a593Smuzhiyun #define HSAR_END 0x40000000 272*4882a593Smuzhiyun #define HSAR_ERR 0x80000000 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun /* 275*4882a593Smuzhiyun * The following defines are for the flags in the host DMA destination address 276*4882a593Smuzhiyun * register. 277*4882a593Smuzhiyun */ 278*4882a593Smuzhiyun #define HDAR_HOST_ADDR_MASK 0xFFFFFFFF 279*4882a593Smuzhiyun #define HDAR_DSP_ADDR_MASK 0x0000FFFF 280*4882a593Smuzhiyun #define HDAR_MEMID_MASK 0x000F0000 281*4882a593Smuzhiyun #define HDAR_MEMID_SP_DMEM0 0x00000000 282*4882a593Smuzhiyun #define HDAR_MEMID_SP_DMEM1 0x00010000 283*4882a593Smuzhiyun #define HDAR_MEMID_SP_PMEM 0x00020000 284*4882a593Smuzhiyun #define HDAR_MEMID_SP_DEBUG 0x00030000 285*4882a593Smuzhiyun #define HDAR_MEMID_OMNI_MEM 0x000E0000 286*4882a593Smuzhiyun #define HDAR_END 0x40000000 287*4882a593Smuzhiyun #define HDAR_ERR 0x80000000 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun /* 290*4882a593Smuzhiyun * The following defines are for the flags in the host DMA control register. 291*4882a593Smuzhiyun */ 292*4882a593Smuzhiyun #define HDMR_AC_MASK 0x0000F000 293*4882a593Smuzhiyun #define HDMR_AC_8_16 0x00001000 294*4882a593Smuzhiyun #define HDMR_AC_M_S 0x00002000 295*4882a593Smuzhiyun #define HDMR_AC_B_L 0x00004000 296*4882a593Smuzhiyun #define HDMR_AC_S_U 0x00008000 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun /* 299*4882a593Smuzhiyun * The following defines are for the flags in the host DMA control register. 300*4882a593Smuzhiyun */ 301*4882a593Smuzhiyun #define HDCR_COUNT_MASK 0x000003FF 302*4882a593Smuzhiyun #define HDCR_DONE 0x00004000 303*4882a593Smuzhiyun #define HDCR_OPT 0x00008000 304*4882a593Smuzhiyun #define HDCR_WBD 0x00400000 305*4882a593Smuzhiyun #define HDCR_WBS 0x00800000 306*4882a593Smuzhiyun #define HDCR_DMS_MASK 0x07000000 307*4882a593Smuzhiyun #define HDCR_DMS_LINEAR 0x00000000 308*4882a593Smuzhiyun #define HDCR_DMS_16_DWORDS 0x01000000 309*4882a593Smuzhiyun #define HDCR_DMS_32_DWORDS 0x02000000 310*4882a593Smuzhiyun #define HDCR_DMS_64_DWORDS 0x03000000 311*4882a593Smuzhiyun #define HDCR_DMS_128_DWORDS 0x04000000 312*4882a593Smuzhiyun #define HDCR_DMS_256_DWORDS 0x05000000 313*4882a593Smuzhiyun #define HDCR_DMS_512_DWORDS 0x06000000 314*4882a593Smuzhiyun #define HDCR_DMS_1024_DWORDS 0x07000000 315*4882a593Smuzhiyun #define HDCR_DH 0x08000000 316*4882a593Smuzhiyun #define HDCR_SMS_MASK 0x70000000 317*4882a593Smuzhiyun #define HDCR_SMS_LINEAR 0x00000000 318*4882a593Smuzhiyun #define HDCR_SMS_16_DWORDS 0x10000000 319*4882a593Smuzhiyun #define HDCR_SMS_32_DWORDS 0x20000000 320*4882a593Smuzhiyun #define HDCR_SMS_64_DWORDS 0x30000000 321*4882a593Smuzhiyun #define HDCR_SMS_128_DWORDS 0x40000000 322*4882a593Smuzhiyun #define HDCR_SMS_256_DWORDS 0x50000000 323*4882a593Smuzhiyun #define HDCR_SMS_512_DWORDS 0x60000000 324*4882a593Smuzhiyun #define HDCR_SMS_1024_DWORDS 0x70000000 325*4882a593Smuzhiyun #define HDCR_SH 0x80000000 326*4882a593Smuzhiyun #define HDCR_COUNT_SHIFT 0 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun /* 329*4882a593Smuzhiyun * The following defines are for the flags in the performance monitor control 330*4882a593Smuzhiyun * register. 331*4882a593Smuzhiyun */ 332*4882a593Smuzhiyun #define PFMC_C1SS_MASK 0x0000001F 333*4882a593Smuzhiyun #define PFMC_C1EV 0x00000020 334*4882a593Smuzhiyun #define PFMC_C1RS 0x00008000 335*4882a593Smuzhiyun #define PFMC_C2SS_MASK 0x001F0000 336*4882a593Smuzhiyun #define PFMC_C2EV 0x00200000 337*4882a593Smuzhiyun #define PFMC_C2RS 0x80000000 338*4882a593Smuzhiyun #define PFMC_C1SS_SHIFT 0 339*4882a593Smuzhiyun #define PFMC_C2SS_SHIFT 16 340*4882a593Smuzhiyun #define PFMC_BUS_GRANT 0 341*4882a593Smuzhiyun #define PFMC_GRANT_AFTER_REQ 1 342*4882a593Smuzhiyun #define PFMC_TRANSACTION 2 343*4882a593Smuzhiyun #define PFMC_DWORD_TRANSFER 3 344*4882a593Smuzhiyun #define PFMC_SLAVE_READ 4 345*4882a593Smuzhiyun #define PFMC_SLAVE_WRITE 5 346*4882a593Smuzhiyun #define PFMC_PREEMPTION 6 347*4882a593Smuzhiyun #define PFMC_DISCONNECT_RETRY 7 348*4882a593Smuzhiyun #define PFMC_INTERRUPT 8 349*4882a593Smuzhiyun #define PFMC_BUS_OWNERSHIP 9 350*4882a593Smuzhiyun #define PFMC_TRANSACTION_LAG 10 351*4882a593Smuzhiyun #define PFMC_PCI_CLOCK 11 352*4882a593Smuzhiyun #define PFMC_SERIAL_CLOCK 12 353*4882a593Smuzhiyun #define PFMC_SP_CLOCK 13 354*4882a593Smuzhiyun 355*4882a593Smuzhiyun /* 356*4882a593Smuzhiyun * The following defines are for the flags in the performance counter value 1 357*4882a593Smuzhiyun * register. 358*4882a593Smuzhiyun */ 359*4882a593Smuzhiyun #define PFCV1_PC1V_MASK 0xFFFFFFFF 360*4882a593Smuzhiyun #define PFCV1_PC1V_SHIFT 0 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun /* 363*4882a593Smuzhiyun * The following defines are for the flags in the performance counter value 2 364*4882a593Smuzhiyun * register. 365*4882a593Smuzhiyun */ 366*4882a593Smuzhiyun #define PFCV2_PC2V_MASK 0xFFFFFFFF 367*4882a593Smuzhiyun #define PFCV2_PC2V_SHIFT 0 368*4882a593Smuzhiyun 369*4882a593Smuzhiyun /* 370*4882a593Smuzhiyun * The following defines are for the flags in the clock control register 1. 371*4882a593Smuzhiyun */ 372*4882a593Smuzhiyun #define CLKCR1_OSCS 0x00000001 373*4882a593Smuzhiyun #define CLKCR1_OSCP 0x00000002 374*4882a593Smuzhiyun #define CLKCR1_PLLSS_MASK 0x0000000C 375*4882a593Smuzhiyun #define CLKCR1_PLLSS_SERIAL 0x00000000 376*4882a593Smuzhiyun #define CLKCR1_PLLSS_CRYSTAL 0x00000004 377*4882a593Smuzhiyun #define CLKCR1_PLLSS_PCI 0x00000008 378*4882a593Smuzhiyun #define CLKCR1_PLLSS_RESERVED 0x0000000C 379*4882a593Smuzhiyun #define CLKCR1_PLLP 0x00000010 380*4882a593Smuzhiyun #define CLKCR1_SWCE 0x00000020 381*4882a593Smuzhiyun #define CLKCR1_PLLOS 0x00000040 382*4882a593Smuzhiyun 383*4882a593Smuzhiyun /* 384*4882a593Smuzhiyun * The following defines are for the flags in the clock control register 2. 385*4882a593Smuzhiyun */ 386*4882a593Smuzhiyun #define CLKCR2_PDIVS_MASK 0x0000000F 387*4882a593Smuzhiyun #define CLKCR2_PDIVS_1 0x00000001 388*4882a593Smuzhiyun #define CLKCR2_PDIVS_2 0x00000002 389*4882a593Smuzhiyun #define CLKCR2_PDIVS_4 0x00000004 390*4882a593Smuzhiyun #define CLKCR2_PDIVS_7 0x00000007 391*4882a593Smuzhiyun #define CLKCR2_PDIVS_8 0x00000008 392*4882a593Smuzhiyun #define CLKCR2_PDIVS_16 0x00000000 393*4882a593Smuzhiyun 394*4882a593Smuzhiyun /* 395*4882a593Smuzhiyun * The following defines are for the flags in the PLL multiplier register. 396*4882a593Smuzhiyun */ 397*4882a593Smuzhiyun #define PLLM_MASK 0x000000FF 398*4882a593Smuzhiyun #define PLLM_SHIFT 0 399*4882a593Smuzhiyun 400*4882a593Smuzhiyun /* 401*4882a593Smuzhiyun * The following defines are for the flags in the PLL capacitor coefficient 402*4882a593Smuzhiyun * register. 403*4882a593Smuzhiyun */ 404*4882a593Smuzhiyun #define PLLCC_CDR_MASK 0x00000007 405*4882a593Smuzhiyun #ifndef NO_CS4610 406*4882a593Smuzhiyun #define PLLCC_CDR_240_350_MHZ 0x00000000 407*4882a593Smuzhiyun #define PLLCC_CDR_184_265_MHZ 0x00000001 408*4882a593Smuzhiyun #define PLLCC_CDR_144_205_MHZ 0x00000002 409*4882a593Smuzhiyun #define PLLCC_CDR_111_160_MHZ 0x00000003 410*4882a593Smuzhiyun #define PLLCC_CDR_87_123_MHZ 0x00000004 411*4882a593Smuzhiyun #define PLLCC_CDR_67_96_MHZ 0x00000005 412*4882a593Smuzhiyun #define PLLCC_CDR_52_74_MHZ 0x00000006 413*4882a593Smuzhiyun #define PLLCC_CDR_45_58_MHZ 0x00000007 414*4882a593Smuzhiyun #endif 415*4882a593Smuzhiyun #ifndef NO_CS4612 416*4882a593Smuzhiyun #define PLLCC_CDR_271_398_MHZ 0x00000000 417*4882a593Smuzhiyun #define PLLCC_CDR_227_330_MHZ 0x00000001 418*4882a593Smuzhiyun #define PLLCC_CDR_167_239_MHZ 0x00000002 419*4882a593Smuzhiyun #define PLLCC_CDR_150_215_MHZ 0x00000003 420*4882a593Smuzhiyun #define PLLCC_CDR_107_154_MHZ 0x00000004 421*4882a593Smuzhiyun #define PLLCC_CDR_98_140_MHZ 0x00000005 422*4882a593Smuzhiyun #define PLLCC_CDR_73_104_MHZ 0x00000006 423*4882a593Smuzhiyun #define PLLCC_CDR_63_90_MHZ 0x00000007 424*4882a593Smuzhiyun #endif 425*4882a593Smuzhiyun #define PLLCC_LPF_MASK 0x000000F8 426*4882a593Smuzhiyun #ifndef NO_CS4610 427*4882a593Smuzhiyun #define PLLCC_LPF_23850_60000_KHZ 0x00000000 428*4882a593Smuzhiyun #define PLLCC_LPF_7960_26290_KHZ 0x00000008 429*4882a593Smuzhiyun #define PLLCC_LPF_4160_10980_KHZ 0x00000018 430*4882a593Smuzhiyun #define PLLCC_LPF_1740_4580_KHZ 0x00000038 431*4882a593Smuzhiyun #define PLLCC_LPF_724_1910_KHZ 0x00000078 432*4882a593Smuzhiyun #define PLLCC_LPF_317_798_KHZ 0x000000F8 433*4882a593Smuzhiyun #endif 434*4882a593Smuzhiyun #ifndef NO_CS4612 435*4882a593Smuzhiyun #define PLLCC_LPF_25580_64530_KHZ 0x00000000 436*4882a593Smuzhiyun #define PLLCC_LPF_14360_37270_KHZ 0x00000008 437*4882a593Smuzhiyun #define PLLCC_LPF_6100_16020_KHZ 0x00000018 438*4882a593Smuzhiyun #define PLLCC_LPF_2540_6690_KHZ 0x00000038 439*4882a593Smuzhiyun #define PLLCC_LPF_1050_2780_KHZ 0x00000078 440*4882a593Smuzhiyun #define PLLCC_LPF_450_1160_KHZ 0x000000F8 441*4882a593Smuzhiyun #endif 442*4882a593Smuzhiyun 443*4882a593Smuzhiyun /* 444*4882a593Smuzhiyun * The following defines are for the flags in the feature reporting register. 445*4882a593Smuzhiyun */ 446*4882a593Smuzhiyun #define FRR_FAB_MASK 0x00000003 447*4882a593Smuzhiyun #define FRR_MASK_MASK 0x0000001C 448*4882a593Smuzhiyun #ifdef NO_CS4612 449*4882a593Smuzhiyun #define FRR_CFOP_MASK 0x000000E0 450*4882a593Smuzhiyun #else 451*4882a593Smuzhiyun #define FRR_CFOP_MASK 0x00000FE0 452*4882a593Smuzhiyun #endif 453*4882a593Smuzhiyun #define FRR_CFOP_NOT_DVD 0x00000020 454*4882a593Smuzhiyun #define FRR_CFOP_A3D 0x00000040 455*4882a593Smuzhiyun #define FRR_CFOP_128_PIN 0x00000080 456*4882a593Smuzhiyun #ifndef NO_CS4612 457*4882a593Smuzhiyun #define FRR_CFOP_CS4280 0x00000800 458*4882a593Smuzhiyun #endif 459*4882a593Smuzhiyun #define FRR_FAB_SHIFT 0 460*4882a593Smuzhiyun #define FRR_MASK_SHIFT 2 461*4882a593Smuzhiyun #define FRR_CFOP_SHIFT 5 462*4882a593Smuzhiyun 463*4882a593Smuzhiyun /* 464*4882a593Smuzhiyun * The following defines are for the flags in the configuration load 1 465*4882a593Smuzhiyun * register. 466*4882a593Smuzhiyun */ 467*4882a593Smuzhiyun #define CFL1_CLOCK_SOURCE_MASK 0x00000003 468*4882a593Smuzhiyun #define CFL1_CLOCK_SOURCE_CS423X 0x00000000 469*4882a593Smuzhiyun #define CFL1_CLOCK_SOURCE_AC97 0x00000001 470*4882a593Smuzhiyun #define CFL1_CLOCK_SOURCE_CRYSTAL 0x00000002 471*4882a593Smuzhiyun #define CFL1_CLOCK_SOURCE_DUAL_AC97 0x00000003 472*4882a593Smuzhiyun #define CFL1_VALID_DATA_MASK 0x000000FF 473*4882a593Smuzhiyun 474*4882a593Smuzhiyun /* 475*4882a593Smuzhiyun * The following defines are for the flags in the configuration load 2 476*4882a593Smuzhiyun * register. 477*4882a593Smuzhiyun */ 478*4882a593Smuzhiyun #define CFL2_VALID_DATA_MASK 0x000000FF 479*4882a593Smuzhiyun 480*4882a593Smuzhiyun /* 481*4882a593Smuzhiyun * The following defines are for the flags in the serial port master control 482*4882a593Smuzhiyun * register 1. 483*4882a593Smuzhiyun */ 484*4882a593Smuzhiyun #define SERMC1_MSPE 0x00000001 485*4882a593Smuzhiyun #define SERMC1_PTC_MASK 0x0000000E 486*4882a593Smuzhiyun #define SERMC1_PTC_CS423X 0x00000000 487*4882a593Smuzhiyun #define SERMC1_PTC_AC97 0x00000002 488*4882a593Smuzhiyun #define SERMC1_PTC_DAC 0x00000004 489*4882a593Smuzhiyun #define SERMC1_PLB 0x00000010 490*4882a593Smuzhiyun #define SERMC1_XLB 0x00000020 491*4882a593Smuzhiyun 492*4882a593Smuzhiyun /* 493*4882a593Smuzhiyun * The following defines are for the flags in the serial port master control 494*4882a593Smuzhiyun * register 2. 495*4882a593Smuzhiyun */ 496*4882a593Smuzhiyun #define SERMC2_LROE 0x00000001 497*4882a593Smuzhiyun #define SERMC2_MCOE 0x00000002 498*4882a593Smuzhiyun #define SERMC2_MCDIV 0x00000004 499*4882a593Smuzhiyun 500*4882a593Smuzhiyun /* 501*4882a593Smuzhiyun * The following defines are for the flags in the serial port 1 configuration 502*4882a593Smuzhiyun * register. 503*4882a593Smuzhiyun */ 504*4882a593Smuzhiyun #define SERC1_SO1EN 0x00000001 505*4882a593Smuzhiyun #define SERC1_SO1F_MASK 0x0000000E 506*4882a593Smuzhiyun #define SERC1_SO1F_CS423X 0x00000000 507*4882a593Smuzhiyun #define SERC1_SO1F_AC97 0x00000002 508*4882a593Smuzhiyun #define SERC1_SO1F_DAC 0x00000004 509*4882a593Smuzhiyun #define SERC1_SO1F_SPDIF 0x00000006 510*4882a593Smuzhiyun 511*4882a593Smuzhiyun /* 512*4882a593Smuzhiyun * The following defines are for the flags in the serial port 2 configuration 513*4882a593Smuzhiyun * register. 514*4882a593Smuzhiyun */ 515*4882a593Smuzhiyun #define SERC2_SI1EN 0x00000001 516*4882a593Smuzhiyun #define SERC2_SI1F_MASK 0x0000000E 517*4882a593Smuzhiyun #define SERC2_SI1F_CS423X 0x00000000 518*4882a593Smuzhiyun #define SERC2_SI1F_AC97 0x00000002 519*4882a593Smuzhiyun #define SERC2_SI1F_ADC 0x00000004 520*4882a593Smuzhiyun #define SERC2_SI1F_SPDIF 0x00000006 521*4882a593Smuzhiyun 522*4882a593Smuzhiyun /* 523*4882a593Smuzhiyun * The following defines are for the flags in the serial port 3 configuration 524*4882a593Smuzhiyun * register. 525*4882a593Smuzhiyun */ 526*4882a593Smuzhiyun #define SERC3_SO2EN 0x00000001 527*4882a593Smuzhiyun #define SERC3_SO2F_MASK 0x00000006 528*4882a593Smuzhiyun #define SERC3_SO2F_DAC 0x00000000 529*4882a593Smuzhiyun #define SERC3_SO2F_SPDIF 0x00000002 530*4882a593Smuzhiyun 531*4882a593Smuzhiyun /* 532*4882a593Smuzhiyun * The following defines are for the flags in the serial port 4 configuration 533*4882a593Smuzhiyun * register. 534*4882a593Smuzhiyun */ 535*4882a593Smuzhiyun #define SERC4_SO3EN 0x00000001 536*4882a593Smuzhiyun #define SERC4_SO3F_MASK 0x00000006 537*4882a593Smuzhiyun #define SERC4_SO3F_DAC 0x00000000 538*4882a593Smuzhiyun #define SERC4_SO3F_SPDIF 0x00000002 539*4882a593Smuzhiyun 540*4882a593Smuzhiyun /* 541*4882a593Smuzhiyun * The following defines are for the flags in the serial port 5 configuration 542*4882a593Smuzhiyun * register. 543*4882a593Smuzhiyun */ 544*4882a593Smuzhiyun #define SERC5_SI2EN 0x00000001 545*4882a593Smuzhiyun #define SERC5_SI2F_MASK 0x00000006 546*4882a593Smuzhiyun #define SERC5_SI2F_ADC 0x00000000 547*4882a593Smuzhiyun #define SERC5_SI2F_SPDIF 0x00000002 548*4882a593Smuzhiyun 549*4882a593Smuzhiyun /* 550*4882a593Smuzhiyun * The following defines are for the flags in the serial port backdoor sample 551*4882a593Smuzhiyun * pointer register. 552*4882a593Smuzhiyun */ 553*4882a593Smuzhiyun #define SERBSP_FSP_MASK 0x0000000F 554*4882a593Smuzhiyun #define SERBSP_FSP_SHIFT 0 555*4882a593Smuzhiyun 556*4882a593Smuzhiyun /* 557*4882a593Smuzhiyun * The following defines are for the flags in the serial port backdoor status 558*4882a593Smuzhiyun * register. 559*4882a593Smuzhiyun */ 560*4882a593Smuzhiyun #define SERBST_RRDY 0x00000001 561*4882a593Smuzhiyun #define SERBST_WBSY 0x00000002 562*4882a593Smuzhiyun 563*4882a593Smuzhiyun /* 564*4882a593Smuzhiyun * The following defines are for the flags in the serial port backdoor command 565*4882a593Smuzhiyun * register. 566*4882a593Smuzhiyun */ 567*4882a593Smuzhiyun #define SERBCM_RDC 0x00000001 568*4882a593Smuzhiyun #define SERBCM_WRC 0x00000002 569*4882a593Smuzhiyun 570*4882a593Smuzhiyun /* 571*4882a593Smuzhiyun * The following defines are for the flags in the serial port backdoor address 572*4882a593Smuzhiyun * register. 573*4882a593Smuzhiyun */ 574*4882a593Smuzhiyun #ifdef NO_CS4612 575*4882a593Smuzhiyun #define SERBAD_FAD_MASK 0x000000FF 576*4882a593Smuzhiyun #else 577*4882a593Smuzhiyun #define SERBAD_FAD_MASK 0x000001FF 578*4882a593Smuzhiyun #endif 579*4882a593Smuzhiyun #define SERBAD_FAD_SHIFT 0 580*4882a593Smuzhiyun 581*4882a593Smuzhiyun /* 582*4882a593Smuzhiyun * The following defines are for the flags in the serial port backdoor 583*4882a593Smuzhiyun * configuration register. 584*4882a593Smuzhiyun */ 585*4882a593Smuzhiyun #define SERBCF_HBP 0x00000001 586*4882a593Smuzhiyun 587*4882a593Smuzhiyun /* 588*4882a593Smuzhiyun * The following defines are for the flags in the serial port backdoor write 589*4882a593Smuzhiyun * port register. 590*4882a593Smuzhiyun */ 591*4882a593Smuzhiyun #define SERBWP_FWD_MASK 0x000FFFFF 592*4882a593Smuzhiyun #define SERBWP_FWD_SHIFT 0 593*4882a593Smuzhiyun 594*4882a593Smuzhiyun /* 595*4882a593Smuzhiyun * The following defines are for the flags in the serial port backdoor read 596*4882a593Smuzhiyun * port register. 597*4882a593Smuzhiyun */ 598*4882a593Smuzhiyun #define SERBRP_FRD_MASK 0x000FFFFF 599*4882a593Smuzhiyun #define SERBRP_FRD_SHIFT 0 600*4882a593Smuzhiyun 601*4882a593Smuzhiyun /* 602*4882a593Smuzhiyun * The following defines are for the flags in the async FIFO address register. 603*4882a593Smuzhiyun */ 604*4882a593Smuzhiyun #ifndef NO_CS4612 605*4882a593Smuzhiyun #define ASER_FADDR_A1_MASK 0x000001FF 606*4882a593Smuzhiyun #define ASER_FADDR_EN1 0x00008000 607*4882a593Smuzhiyun #define ASER_FADDR_A2_MASK 0x01FF0000 608*4882a593Smuzhiyun #define ASER_FADDR_EN2 0x80000000 609*4882a593Smuzhiyun #define ASER_FADDR_A1_SHIFT 0 610*4882a593Smuzhiyun #define ASER_FADDR_A2_SHIFT 16 611*4882a593Smuzhiyun #endif 612*4882a593Smuzhiyun 613*4882a593Smuzhiyun /* 614*4882a593Smuzhiyun * The following defines are for the flags in the AC97 control register. 615*4882a593Smuzhiyun */ 616*4882a593Smuzhiyun #define ACCTL_RSTN 0x00000001 617*4882a593Smuzhiyun #define ACCTL_ESYN 0x00000002 618*4882a593Smuzhiyun #define ACCTL_VFRM 0x00000004 619*4882a593Smuzhiyun #define ACCTL_DCV 0x00000008 620*4882a593Smuzhiyun #define ACCTL_CRW 0x00000010 621*4882a593Smuzhiyun #define ACCTL_ASYN 0x00000020 622*4882a593Smuzhiyun #ifndef NO_CS4612 623*4882a593Smuzhiyun #define ACCTL_TC 0x00000040 624*4882a593Smuzhiyun #endif 625*4882a593Smuzhiyun 626*4882a593Smuzhiyun /* 627*4882a593Smuzhiyun * The following defines are for the flags in the AC97 status register. 628*4882a593Smuzhiyun */ 629*4882a593Smuzhiyun #define ACSTS_CRDY 0x00000001 630*4882a593Smuzhiyun #define ACSTS_VSTS 0x00000002 631*4882a593Smuzhiyun #ifndef NO_CS4612 632*4882a593Smuzhiyun #define ACSTS_WKUP 0x00000004 633*4882a593Smuzhiyun #endif 634*4882a593Smuzhiyun 635*4882a593Smuzhiyun /* 636*4882a593Smuzhiyun * The following defines are for the flags in the AC97 output slot valid 637*4882a593Smuzhiyun * register. 638*4882a593Smuzhiyun */ 639*4882a593Smuzhiyun #define ACOSV_SLV3 0x00000001 640*4882a593Smuzhiyun #define ACOSV_SLV4 0x00000002 641*4882a593Smuzhiyun #define ACOSV_SLV5 0x00000004 642*4882a593Smuzhiyun #define ACOSV_SLV6 0x00000008 643*4882a593Smuzhiyun #define ACOSV_SLV7 0x00000010 644*4882a593Smuzhiyun #define ACOSV_SLV8 0x00000020 645*4882a593Smuzhiyun #define ACOSV_SLV9 0x00000040 646*4882a593Smuzhiyun #define ACOSV_SLV10 0x00000080 647*4882a593Smuzhiyun #define ACOSV_SLV11 0x00000100 648*4882a593Smuzhiyun #define ACOSV_SLV12 0x00000200 649*4882a593Smuzhiyun 650*4882a593Smuzhiyun /* 651*4882a593Smuzhiyun * The following defines are for the flags in the AC97 command address 652*4882a593Smuzhiyun * register. 653*4882a593Smuzhiyun */ 654*4882a593Smuzhiyun #define ACCAD_CI_MASK 0x0000007F 655*4882a593Smuzhiyun #define ACCAD_CI_SHIFT 0 656*4882a593Smuzhiyun 657*4882a593Smuzhiyun /* 658*4882a593Smuzhiyun * The following defines are for the flags in the AC97 command data register. 659*4882a593Smuzhiyun */ 660*4882a593Smuzhiyun #define ACCDA_CD_MASK 0x0000FFFF 661*4882a593Smuzhiyun #define ACCDA_CD_SHIFT 0 662*4882a593Smuzhiyun 663*4882a593Smuzhiyun /* 664*4882a593Smuzhiyun * The following defines are for the flags in the AC97 input slot valid 665*4882a593Smuzhiyun * register. 666*4882a593Smuzhiyun */ 667*4882a593Smuzhiyun #define ACISV_ISV3 0x00000001 668*4882a593Smuzhiyun #define ACISV_ISV4 0x00000002 669*4882a593Smuzhiyun #define ACISV_ISV5 0x00000004 670*4882a593Smuzhiyun #define ACISV_ISV6 0x00000008 671*4882a593Smuzhiyun #define ACISV_ISV7 0x00000010 672*4882a593Smuzhiyun #define ACISV_ISV8 0x00000020 673*4882a593Smuzhiyun #define ACISV_ISV9 0x00000040 674*4882a593Smuzhiyun #define ACISV_ISV10 0x00000080 675*4882a593Smuzhiyun #define ACISV_ISV11 0x00000100 676*4882a593Smuzhiyun #define ACISV_ISV12 0x00000200 677*4882a593Smuzhiyun 678*4882a593Smuzhiyun /* 679*4882a593Smuzhiyun * The following defines are for the flags in the AC97 status address 680*4882a593Smuzhiyun * register. 681*4882a593Smuzhiyun */ 682*4882a593Smuzhiyun #define ACSAD_SI_MASK 0x0000007F 683*4882a593Smuzhiyun #define ACSAD_SI_SHIFT 0 684*4882a593Smuzhiyun 685*4882a593Smuzhiyun /* 686*4882a593Smuzhiyun * The following defines are for the flags in the AC97 status data register. 687*4882a593Smuzhiyun */ 688*4882a593Smuzhiyun #define ACSDA_SD_MASK 0x0000FFFF 689*4882a593Smuzhiyun #define ACSDA_SD_SHIFT 0 690*4882a593Smuzhiyun 691*4882a593Smuzhiyun /* 692*4882a593Smuzhiyun * The following defines are for the flags in the joystick poll/trigger 693*4882a593Smuzhiyun * register. 694*4882a593Smuzhiyun */ 695*4882a593Smuzhiyun #define JSPT_CAX 0x00000001 696*4882a593Smuzhiyun #define JSPT_CAY 0x00000002 697*4882a593Smuzhiyun #define JSPT_CBX 0x00000004 698*4882a593Smuzhiyun #define JSPT_CBY 0x00000008 699*4882a593Smuzhiyun #define JSPT_BA1 0x00000010 700*4882a593Smuzhiyun #define JSPT_BA2 0x00000020 701*4882a593Smuzhiyun #define JSPT_BB1 0x00000040 702*4882a593Smuzhiyun #define JSPT_BB2 0x00000080 703*4882a593Smuzhiyun 704*4882a593Smuzhiyun /* 705*4882a593Smuzhiyun * The following defines are for the flags in the joystick control register. 706*4882a593Smuzhiyun */ 707*4882a593Smuzhiyun #define JSCTL_SP_MASK 0x00000003 708*4882a593Smuzhiyun #define JSCTL_SP_SLOW 0x00000000 709*4882a593Smuzhiyun #define JSCTL_SP_MEDIUM_SLOW 0x00000001 710*4882a593Smuzhiyun #define JSCTL_SP_MEDIUM_FAST 0x00000002 711*4882a593Smuzhiyun #define JSCTL_SP_FAST 0x00000003 712*4882a593Smuzhiyun #define JSCTL_ARE 0x00000004 713*4882a593Smuzhiyun 714*4882a593Smuzhiyun /* 715*4882a593Smuzhiyun * The following defines are for the flags in the joystick coordinate pair 1 716*4882a593Smuzhiyun * readback register. 717*4882a593Smuzhiyun */ 718*4882a593Smuzhiyun #define JSC1_Y1V_MASK 0x0000FFFF 719*4882a593Smuzhiyun #define JSC1_X1V_MASK 0xFFFF0000 720*4882a593Smuzhiyun #define JSC1_Y1V_SHIFT 0 721*4882a593Smuzhiyun #define JSC1_X1V_SHIFT 16 722*4882a593Smuzhiyun 723*4882a593Smuzhiyun /* 724*4882a593Smuzhiyun * The following defines are for the flags in the joystick coordinate pair 2 725*4882a593Smuzhiyun * readback register. 726*4882a593Smuzhiyun */ 727*4882a593Smuzhiyun #define JSC2_Y2V_MASK 0x0000FFFF 728*4882a593Smuzhiyun #define JSC2_X2V_MASK 0xFFFF0000 729*4882a593Smuzhiyun #define JSC2_Y2V_SHIFT 0 730*4882a593Smuzhiyun #define JSC2_X2V_SHIFT 16 731*4882a593Smuzhiyun 732*4882a593Smuzhiyun /* 733*4882a593Smuzhiyun * The following defines are for the flags in the MIDI control register. 734*4882a593Smuzhiyun */ 735*4882a593Smuzhiyun #define MIDCR_TXE 0x00000001 /* Enable transmitting. */ 736*4882a593Smuzhiyun #define MIDCR_RXE 0x00000002 /* Enable receiving. */ 737*4882a593Smuzhiyun #define MIDCR_RIE 0x00000004 /* Interrupt upon tx ready. */ 738*4882a593Smuzhiyun #define MIDCR_TIE 0x00000008 /* Interrupt upon rx ready. */ 739*4882a593Smuzhiyun #define MIDCR_MLB 0x00000010 /* Enable midi loopback. */ 740*4882a593Smuzhiyun #define MIDCR_MRST 0x00000020 /* Reset interface. */ 741*4882a593Smuzhiyun 742*4882a593Smuzhiyun /* 743*4882a593Smuzhiyun * The following defines are for the flags in the MIDI status register. 744*4882a593Smuzhiyun */ 745*4882a593Smuzhiyun #define MIDSR_TBF 0x00000001 /* Tx FIFO is full. */ 746*4882a593Smuzhiyun #define MIDSR_RBE 0x00000002 /* Rx FIFO is empty. */ 747*4882a593Smuzhiyun 748*4882a593Smuzhiyun /* 749*4882a593Smuzhiyun * The following defines are for the flags in the MIDI write port register. 750*4882a593Smuzhiyun */ 751*4882a593Smuzhiyun #define MIDWP_MWD_MASK 0x000000FF 752*4882a593Smuzhiyun #define MIDWP_MWD_SHIFT 0 753*4882a593Smuzhiyun 754*4882a593Smuzhiyun /* 755*4882a593Smuzhiyun * The following defines are for the flags in the MIDI read port register. 756*4882a593Smuzhiyun */ 757*4882a593Smuzhiyun #define MIDRP_MRD_MASK 0x000000FF 758*4882a593Smuzhiyun #define MIDRP_MRD_SHIFT 0 759*4882a593Smuzhiyun 760*4882a593Smuzhiyun /* 761*4882a593Smuzhiyun * The following defines are for the flags in the joystick GPIO register. 762*4882a593Smuzhiyun */ 763*4882a593Smuzhiyun #define JSIO_DAX 0x00000001 764*4882a593Smuzhiyun #define JSIO_DAY 0x00000002 765*4882a593Smuzhiyun #define JSIO_DBX 0x00000004 766*4882a593Smuzhiyun #define JSIO_DBY 0x00000008 767*4882a593Smuzhiyun #define JSIO_AXOE 0x00000010 768*4882a593Smuzhiyun #define JSIO_AYOE 0x00000020 769*4882a593Smuzhiyun #define JSIO_BXOE 0x00000040 770*4882a593Smuzhiyun #define JSIO_BYOE 0x00000080 771*4882a593Smuzhiyun 772*4882a593Smuzhiyun /* 773*4882a593Smuzhiyun * The following defines are for the flags in the master async/sync serial 774*4882a593Smuzhiyun * port enable register. 775*4882a593Smuzhiyun */ 776*4882a593Smuzhiyun #ifndef NO_CS4612 777*4882a593Smuzhiyun #define ASER_MASTER_ME 0x00000001 778*4882a593Smuzhiyun #endif 779*4882a593Smuzhiyun 780*4882a593Smuzhiyun /* 781*4882a593Smuzhiyun * The following defines are for the flags in the configuration interface 782*4882a593Smuzhiyun * register. 783*4882a593Smuzhiyun */ 784*4882a593Smuzhiyun #define CFGI_CLK 0x00000001 785*4882a593Smuzhiyun #define CFGI_DOUT 0x00000002 786*4882a593Smuzhiyun #define CFGI_DIN_EEN 0x00000004 787*4882a593Smuzhiyun #define CFGI_EELD 0x00000008 788*4882a593Smuzhiyun 789*4882a593Smuzhiyun /* 790*4882a593Smuzhiyun * The following defines are for the flags in the subsystem ID and vendor ID 791*4882a593Smuzhiyun * register. 792*4882a593Smuzhiyun */ 793*4882a593Smuzhiyun #define SSVID_VID_MASK 0x0000FFFF 794*4882a593Smuzhiyun #define SSVID_SID_MASK 0xFFFF0000 795*4882a593Smuzhiyun #define SSVID_VID_SHIFT 0 796*4882a593Smuzhiyun #define SSVID_SID_SHIFT 16 797*4882a593Smuzhiyun 798*4882a593Smuzhiyun /* 799*4882a593Smuzhiyun * The following defines are for the flags in the GPIO pin interface register. 800*4882a593Smuzhiyun */ 801*4882a593Smuzhiyun #define GPIOR_VOLDN 0x00000001 802*4882a593Smuzhiyun #define GPIOR_VOLUP 0x00000002 803*4882a593Smuzhiyun #define GPIOR_SI2D 0x00000004 804*4882a593Smuzhiyun #define GPIOR_SI2OE 0x00000008 805*4882a593Smuzhiyun 806*4882a593Smuzhiyun /* 807*4882a593Smuzhiyun * The following defines are for the flags in the extended GPIO pin direction 808*4882a593Smuzhiyun * register. 809*4882a593Smuzhiyun */ 810*4882a593Smuzhiyun #ifndef NO_CS4612 811*4882a593Smuzhiyun #define EGPIODR_GPOE0 0x00000001 812*4882a593Smuzhiyun #define EGPIODR_GPOE1 0x00000002 813*4882a593Smuzhiyun #define EGPIODR_GPOE2 0x00000004 814*4882a593Smuzhiyun #define EGPIODR_GPOE3 0x00000008 815*4882a593Smuzhiyun #define EGPIODR_GPOE4 0x00000010 816*4882a593Smuzhiyun #define EGPIODR_GPOE5 0x00000020 817*4882a593Smuzhiyun #define EGPIODR_GPOE6 0x00000040 818*4882a593Smuzhiyun #define EGPIODR_GPOE7 0x00000080 819*4882a593Smuzhiyun #define EGPIODR_GPOE8 0x00000100 820*4882a593Smuzhiyun #endif 821*4882a593Smuzhiyun 822*4882a593Smuzhiyun /* 823*4882a593Smuzhiyun * The following defines are for the flags in the extended GPIO pin polarity/ 824*4882a593Smuzhiyun * type register. 825*4882a593Smuzhiyun */ 826*4882a593Smuzhiyun #ifndef NO_CS4612 827*4882a593Smuzhiyun #define EGPIOPTR_GPPT0 0x00000001 828*4882a593Smuzhiyun #define EGPIOPTR_GPPT1 0x00000002 829*4882a593Smuzhiyun #define EGPIOPTR_GPPT2 0x00000004 830*4882a593Smuzhiyun #define EGPIOPTR_GPPT3 0x00000008 831*4882a593Smuzhiyun #define EGPIOPTR_GPPT4 0x00000010 832*4882a593Smuzhiyun #define EGPIOPTR_GPPT5 0x00000020 833*4882a593Smuzhiyun #define EGPIOPTR_GPPT6 0x00000040 834*4882a593Smuzhiyun #define EGPIOPTR_GPPT7 0x00000080 835*4882a593Smuzhiyun #define EGPIOPTR_GPPT8 0x00000100 836*4882a593Smuzhiyun #endif 837*4882a593Smuzhiyun 838*4882a593Smuzhiyun /* 839*4882a593Smuzhiyun * The following defines are for the flags in the extended GPIO pin sticky 840*4882a593Smuzhiyun * register. 841*4882a593Smuzhiyun */ 842*4882a593Smuzhiyun #ifndef NO_CS4612 843*4882a593Smuzhiyun #define EGPIOTR_GPS0 0x00000001 844*4882a593Smuzhiyun #define EGPIOTR_GPS1 0x00000002 845*4882a593Smuzhiyun #define EGPIOTR_GPS2 0x00000004 846*4882a593Smuzhiyun #define EGPIOTR_GPS3 0x00000008 847*4882a593Smuzhiyun #define EGPIOTR_GPS4 0x00000010 848*4882a593Smuzhiyun #define EGPIOTR_GPS5 0x00000020 849*4882a593Smuzhiyun #define EGPIOTR_GPS6 0x00000040 850*4882a593Smuzhiyun #define EGPIOTR_GPS7 0x00000080 851*4882a593Smuzhiyun #define EGPIOTR_GPS8 0x00000100 852*4882a593Smuzhiyun #endif 853*4882a593Smuzhiyun 854*4882a593Smuzhiyun /* 855*4882a593Smuzhiyun * The following defines are for the flags in the extended GPIO ping wakeup 856*4882a593Smuzhiyun * register. 857*4882a593Smuzhiyun */ 858*4882a593Smuzhiyun #ifndef NO_CS4612 859*4882a593Smuzhiyun #define EGPIOWR_GPW0 0x00000001 860*4882a593Smuzhiyun #define EGPIOWR_GPW1 0x00000002 861*4882a593Smuzhiyun #define EGPIOWR_GPW2 0x00000004 862*4882a593Smuzhiyun #define EGPIOWR_GPW3 0x00000008 863*4882a593Smuzhiyun #define EGPIOWR_GPW4 0x00000010 864*4882a593Smuzhiyun #define EGPIOWR_GPW5 0x00000020 865*4882a593Smuzhiyun #define EGPIOWR_GPW6 0x00000040 866*4882a593Smuzhiyun #define EGPIOWR_GPW7 0x00000080 867*4882a593Smuzhiyun #define EGPIOWR_GPW8 0x00000100 868*4882a593Smuzhiyun #endif 869*4882a593Smuzhiyun 870*4882a593Smuzhiyun /* 871*4882a593Smuzhiyun * The following defines are for the flags in the extended GPIO pin status 872*4882a593Smuzhiyun * register. 873*4882a593Smuzhiyun */ 874*4882a593Smuzhiyun #ifndef NO_CS4612 875*4882a593Smuzhiyun #define EGPIOSR_GPS0 0x00000001 876*4882a593Smuzhiyun #define EGPIOSR_GPS1 0x00000002 877*4882a593Smuzhiyun #define EGPIOSR_GPS2 0x00000004 878*4882a593Smuzhiyun #define EGPIOSR_GPS3 0x00000008 879*4882a593Smuzhiyun #define EGPIOSR_GPS4 0x00000010 880*4882a593Smuzhiyun #define EGPIOSR_GPS5 0x00000020 881*4882a593Smuzhiyun #define EGPIOSR_GPS6 0x00000040 882*4882a593Smuzhiyun #define EGPIOSR_GPS7 0x00000080 883*4882a593Smuzhiyun #define EGPIOSR_GPS8 0x00000100 884*4882a593Smuzhiyun #endif 885*4882a593Smuzhiyun 886*4882a593Smuzhiyun /* 887*4882a593Smuzhiyun * The following defines are for the flags in the serial port 6 configuration 888*4882a593Smuzhiyun * register. 889*4882a593Smuzhiyun */ 890*4882a593Smuzhiyun #ifndef NO_CS4612 891*4882a593Smuzhiyun #define SERC6_ASDO2EN 0x00000001 892*4882a593Smuzhiyun #endif 893*4882a593Smuzhiyun 894*4882a593Smuzhiyun /* 895*4882a593Smuzhiyun * The following defines are for the flags in the serial port 7 configuration 896*4882a593Smuzhiyun * register. 897*4882a593Smuzhiyun */ 898*4882a593Smuzhiyun #ifndef NO_CS4612 899*4882a593Smuzhiyun #define SERC7_ASDI2EN 0x00000001 900*4882a593Smuzhiyun #define SERC7_POSILB 0x00000002 901*4882a593Smuzhiyun #define SERC7_SIPOLB 0x00000004 902*4882a593Smuzhiyun #define SERC7_SOSILB 0x00000008 903*4882a593Smuzhiyun #define SERC7_SISOLB 0x00000010 904*4882a593Smuzhiyun #endif 905*4882a593Smuzhiyun 906*4882a593Smuzhiyun /* 907*4882a593Smuzhiyun * The following defines are for the flags in the serial port AC link 908*4882a593Smuzhiyun * configuration register. 909*4882a593Smuzhiyun */ 910*4882a593Smuzhiyun #ifndef NO_CS4612 911*4882a593Smuzhiyun #define SERACC_CHIP_TYPE_MASK 0x00000001 912*4882a593Smuzhiyun #define SERACC_CHIP_TYPE_1_03 0x00000000 913*4882a593Smuzhiyun #define SERACC_CHIP_TYPE_2_0 0x00000001 914*4882a593Smuzhiyun #define SERACC_TWO_CODECS 0x00000002 915*4882a593Smuzhiyun #define SERACC_MDM 0x00000004 916*4882a593Smuzhiyun #define SERACC_HSP 0x00000008 917*4882a593Smuzhiyun #define SERACC_ODT 0x00000010 /* only CS4630 */ 918*4882a593Smuzhiyun #endif 919*4882a593Smuzhiyun 920*4882a593Smuzhiyun /* 921*4882a593Smuzhiyun * The following defines are for the flags in the AC97 control register 2. 922*4882a593Smuzhiyun */ 923*4882a593Smuzhiyun #ifndef NO_CS4612 924*4882a593Smuzhiyun #define ACCTL2_RSTN 0x00000001 925*4882a593Smuzhiyun #define ACCTL2_ESYN 0x00000002 926*4882a593Smuzhiyun #define ACCTL2_VFRM 0x00000004 927*4882a593Smuzhiyun #define ACCTL2_DCV 0x00000008 928*4882a593Smuzhiyun #define ACCTL2_CRW 0x00000010 929*4882a593Smuzhiyun #define ACCTL2_ASYN 0x00000020 930*4882a593Smuzhiyun #endif 931*4882a593Smuzhiyun 932*4882a593Smuzhiyun /* 933*4882a593Smuzhiyun * The following defines are for the flags in the AC97 status register 2. 934*4882a593Smuzhiyun */ 935*4882a593Smuzhiyun #ifndef NO_CS4612 936*4882a593Smuzhiyun #define ACSTS2_CRDY 0x00000001 937*4882a593Smuzhiyun #define ACSTS2_VSTS 0x00000002 938*4882a593Smuzhiyun #endif 939*4882a593Smuzhiyun 940*4882a593Smuzhiyun /* 941*4882a593Smuzhiyun * The following defines are for the flags in the AC97 output slot valid 942*4882a593Smuzhiyun * register 2. 943*4882a593Smuzhiyun */ 944*4882a593Smuzhiyun #ifndef NO_CS4612 945*4882a593Smuzhiyun #define ACOSV2_SLV3 0x00000001 946*4882a593Smuzhiyun #define ACOSV2_SLV4 0x00000002 947*4882a593Smuzhiyun #define ACOSV2_SLV5 0x00000004 948*4882a593Smuzhiyun #define ACOSV2_SLV6 0x00000008 949*4882a593Smuzhiyun #define ACOSV2_SLV7 0x00000010 950*4882a593Smuzhiyun #define ACOSV2_SLV8 0x00000020 951*4882a593Smuzhiyun #define ACOSV2_SLV9 0x00000040 952*4882a593Smuzhiyun #define ACOSV2_SLV10 0x00000080 953*4882a593Smuzhiyun #define ACOSV2_SLV11 0x00000100 954*4882a593Smuzhiyun #define ACOSV2_SLV12 0x00000200 955*4882a593Smuzhiyun #endif 956*4882a593Smuzhiyun 957*4882a593Smuzhiyun /* 958*4882a593Smuzhiyun * The following defines are for the flags in the AC97 command address 959*4882a593Smuzhiyun * register 2. 960*4882a593Smuzhiyun */ 961*4882a593Smuzhiyun #ifndef NO_CS4612 962*4882a593Smuzhiyun #define ACCAD2_CI_MASK 0x0000007F 963*4882a593Smuzhiyun #define ACCAD2_CI_SHIFT 0 964*4882a593Smuzhiyun #endif 965*4882a593Smuzhiyun 966*4882a593Smuzhiyun /* 967*4882a593Smuzhiyun * The following defines are for the flags in the AC97 command data register 968*4882a593Smuzhiyun * 2. 969*4882a593Smuzhiyun */ 970*4882a593Smuzhiyun #ifndef NO_CS4612 971*4882a593Smuzhiyun #define ACCDA2_CD_MASK 0x0000FFFF 972*4882a593Smuzhiyun #define ACCDA2_CD_SHIFT 0 973*4882a593Smuzhiyun #endif 974*4882a593Smuzhiyun 975*4882a593Smuzhiyun /* 976*4882a593Smuzhiyun * The following defines are for the flags in the AC97 input slot valid 977*4882a593Smuzhiyun * register 2. 978*4882a593Smuzhiyun */ 979*4882a593Smuzhiyun #ifndef NO_CS4612 980*4882a593Smuzhiyun #define ACISV2_ISV3 0x00000001 981*4882a593Smuzhiyun #define ACISV2_ISV4 0x00000002 982*4882a593Smuzhiyun #define ACISV2_ISV5 0x00000004 983*4882a593Smuzhiyun #define ACISV2_ISV6 0x00000008 984*4882a593Smuzhiyun #define ACISV2_ISV7 0x00000010 985*4882a593Smuzhiyun #define ACISV2_ISV8 0x00000020 986*4882a593Smuzhiyun #define ACISV2_ISV9 0x00000040 987*4882a593Smuzhiyun #define ACISV2_ISV10 0x00000080 988*4882a593Smuzhiyun #define ACISV2_ISV11 0x00000100 989*4882a593Smuzhiyun #define ACISV2_ISV12 0x00000200 990*4882a593Smuzhiyun #endif 991*4882a593Smuzhiyun 992*4882a593Smuzhiyun /* 993*4882a593Smuzhiyun * The following defines are for the flags in the AC97 status address 994*4882a593Smuzhiyun * register 2. 995*4882a593Smuzhiyun */ 996*4882a593Smuzhiyun #ifndef NO_CS4612 997*4882a593Smuzhiyun #define ACSAD2_SI_MASK 0x0000007F 998*4882a593Smuzhiyun #define ACSAD2_SI_SHIFT 0 999*4882a593Smuzhiyun #endif 1000*4882a593Smuzhiyun 1001*4882a593Smuzhiyun /* 1002*4882a593Smuzhiyun * The following defines are for the flags in the AC97 status data register 2. 1003*4882a593Smuzhiyun */ 1004*4882a593Smuzhiyun #ifndef NO_CS4612 1005*4882a593Smuzhiyun #define ACSDA2_SD_MASK 0x0000FFFF 1006*4882a593Smuzhiyun #define ACSDA2_SD_SHIFT 0 1007*4882a593Smuzhiyun #endif 1008*4882a593Smuzhiyun 1009*4882a593Smuzhiyun /* 1010*4882a593Smuzhiyun * The following defines are for the flags in the I/O trap address and control 1011*4882a593Smuzhiyun * registers (all 12). 1012*4882a593Smuzhiyun */ 1013*4882a593Smuzhiyun #ifndef NO_CS4612 1014*4882a593Smuzhiyun #define IOTAC_SA_MASK 0x0000FFFF 1015*4882a593Smuzhiyun #define IOTAC_MSK_MASK 0x000F0000 1016*4882a593Smuzhiyun #define IOTAC_IODC_MASK 0x06000000 1017*4882a593Smuzhiyun #define IOTAC_IODC_16_BIT 0x00000000 1018*4882a593Smuzhiyun #define IOTAC_IODC_10_BIT 0x02000000 1019*4882a593Smuzhiyun #define IOTAC_IODC_12_BIT 0x04000000 1020*4882a593Smuzhiyun #define IOTAC_WSPI 0x08000000 1021*4882a593Smuzhiyun #define IOTAC_RSPI 0x10000000 1022*4882a593Smuzhiyun #define IOTAC_WSE 0x20000000 1023*4882a593Smuzhiyun #define IOTAC_WE 0x40000000 1024*4882a593Smuzhiyun #define IOTAC_RE 0x80000000 1025*4882a593Smuzhiyun #define IOTAC_SA_SHIFT 0 1026*4882a593Smuzhiyun #define IOTAC_MSK_SHIFT 16 1027*4882a593Smuzhiyun #endif 1028*4882a593Smuzhiyun 1029*4882a593Smuzhiyun /* 1030*4882a593Smuzhiyun * The following defines are for the flags in the I/O trap fast read registers 1031*4882a593Smuzhiyun * (all 8). 1032*4882a593Smuzhiyun */ 1033*4882a593Smuzhiyun #ifndef NO_CS4612 1034*4882a593Smuzhiyun #define IOTFR_D_MASK 0x0000FFFF 1035*4882a593Smuzhiyun #define IOTFR_A_MASK 0x000F0000 1036*4882a593Smuzhiyun #define IOTFR_R_MASK 0x0F000000 1037*4882a593Smuzhiyun #define IOTFR_ALL 0x40000000 1038*4882a593Smuzhiyun #define IOTFR_VL 0x80000000 1039*4882a593Smuzhiyun #define IOTFR_D_SHIFT 0 1040*4882a593Smuzhiyun #define IOTFR_A_SHIFT 16 1041*4882a593Smuzhiyun #define IOTFR_R_SHIFT 24 1042*4882a593Smuzhiyun #endif 1043*4882a593Smuzhiyun 1044*4882a593Smuzhiyun /* 1045*4882a593Smuzhiyun * The following defines are for the flags in the I/O trap FIFO register. 1046*4882a593Smuzhiyun */ 1047*4882a593Smuzhiyun #ifndef NO_CS4612 1048*4882a593Smuzhiyun #define IOTFIFO_BA_MASK 0x00003FFF 1049*4882a593Smuzhiyun #define IOTFIFO_S_MASK 0x00FF0000 1050*4882a593Smuzhiyun #define IOTFIFO_OF 0x40000000 1051*4882a593Smuzhiyun #define IOTFIFO_SPIOF 0x80000000 1052*4882a593Smuzhiyun #define IOTFIFO_BA_SHIFT 0 1053*4882a593Smuzhiyun #define IOTFIFO_S_SHIFT 16 1054*4882a593Smuzhiyun #endif 1055*4882a593Smuzhiyun 1056*4882a593Smuzhiyun /* 1057*4882a593Smuzhiyun * The following defines are for the flags in the I/O trap retry read data 1058*4882a593Smuzhiyun * register. 1059*4882a593Smuzhiyun */ 1060*4882a593Smuzhiyun #ifndef NO_CS4612 1061*4882a593Smuzhiyun #define IOTRRD_D_MASK 0x0000FFFF 1062*4882a593Smuzhiyun #define IOTRRD_RDV 0x80000000 1063*4882a593Smuzhiyun #define IOTRRD_D_SHIFT 0 1064*4882a593Smuzhiyun #endif 1065*4882a593Smuzhiyun 1066*4882a593Smuzhiyun /* 1067*4882a593Smuzhiyun * The following defines are for the flags in the I/O trap FIFO pointer 1068*4882a593Smuzhiyun * register. 1069*4882a593Smuzhiyun */ 1070*4882a593Smuzhiyun #ifndef NO_CS4612 1071*4882a593Smuzhiyun #define IOTFP_CA_MASK 0x00003FFF 1072*4882a593Smuzhiyun #define IOTFP_PA_MASK 0x3FFF0000 1073*4882a593Smuzhiyun #define IOTFP_CA_SHIFT 0 1074*4882a593Smuzhiyun #define IOTFP_PA_SHIFT 16 1075*4882a593Smuzhiyun #endif 1076*4882a593Smuzhiyun 1077*4882a593Smuzhiyun /* 1078*4882a593Smuzhiyun * The following defines are for the flags in the I/O trap control register. 1079*4882a593Smuzhiyun */ 1080*4882a593Smuzhiyun #ifndef NO_CS4612 1081*4882a593Smuzhiyun #define IOTCR_ITD 0x00000001 1082*4882a593Smuzhiyun #define IOTCR_HRV 0x00000002 1083*4882a593Smuzhiyun #define IOTCR_SRV 0x00000004 1084*4882a593Smuzhiyun #define IOTCR_DTI 0x00000008 1085*4882a593Smuzhiyun #define IOTCR_DFI 0x00000010 1086*4882a593Smuzhiyun #define IOTCR_DDP 0x00000020 1087*4882a593Smuzhiyun #define IOTCR_JTE 0x00000040 1088*4882a593Smuzhiyun #define IOTCR_PPE 0x00000080 1089*4882a593Smuzhiyun #endif 1090*4882a593Smuzhiyun 1091*4882a593Smuzhiyun /* 1092*4882a593Smuzhiyun * The following defines are for the flags in the direct PCI data register. 1093*4882a593Smuzhiyun */ 1094*4882a593Smuzhiyun #ifndef NO_CS4612 1095*4882a593Smuzhiyun #define DPCID_D_MASK 0xFFFFFFFF 1096*4882a593Smuzhiyun #define DPCID_D_SHIFT 0 1097*4882a593Smuzhiyun #endif 1098*4882a593Smuzhiyun 1099*4882a593Smuzhiyun /* 1100*4882a593Smuzhiyun * The following defines are for the flags in the direct PCI address register. 1101*4882a593Smuzhiyun */ 1102*4882a593Smuzhiyun #ifndef NO_CS4612 1103*4882a593Smuzhiyun #define DPCIA_A_MASK 0xFFFFFFFF 1104*4882a593Smuzhiyun #define DPCIA_A_SHIFT 0 1105*4882a593Smuzhiyun #endif 1106*4882a593Smuzhiyun 1107*4882a593Smuzhiyun /* 1108*4882a593Smuzhiyun * The following defines are for the flags in the direct PCI command register. 1109*4882a593Smuzhiyun */ 1110*4882a593Smuzhiyun #ifndef NO_CS4612 1111*4882a593Smuzhiyun #define DPCIC_C_MASK 0x0000000F 1112*4882a593Smuzhiyun #define DPCIC_C_IOREAD 0x00000002 1113*4882a593Smuzhiyun #define DPCIC_C_IOWRITE 0x00000003 1114*4882a593Smuzhiyun #define DPCIC_BE_MASK 0x000000F0 1115*4882a593Smuzhiyun #endif 1116*4882a593Smuzhiyun 1117*4882a593Smuzhiyun /* 1118*4882a593Smuzhiyun * The following defines are for the flags in the PC/PCI request register. 1119*4882a593Smuzhiyun */ 1120*4882a593Smuzhiyun #ifndef NO_CS4612 1121*4882a593Smuzhiyun #define PCPCIR_RDC_MASK 0x00000007 1122*4882a593Smuzhiyun #define PCPCIR_C_MASK 0x00007000 1123*4882a593Smuzhiyun #define PCPCIR_REQ 0x00008000 1124*4882a593Smuzhiyun #define PCPCIR_RDC_SHIFT 0 1125*4882a593Smuzhiyun #define PCPCIR_C_SHIFT 12 1126*4882a593Smuzhiyun #endif 1127*4882a593Smuzhiyun 1128*4882a593Smuzhiyun /* 1129*4882a593Smuzhiyun * The following defines are for the flags in the PC/PCI grant register. 1130*4882a593Smuzhiyun */ 1131*4882a593Smuzhiyun #ifndef NO_CS4612 1132*4882a593Smuzhiyun #define PCPCIG_GDC_MASK 0x00000007 1133*4882a593Smuzhiyun #define PCPCIG_VL 0x00008000 1134*4882a593Smuzhiyun #define PCPCIG_GDC_SHIFT 0 1135*4882a593Smuzhiyun #endif 1136*4882a593Smuzhiyun 1137*4882a593Smuzhiyun /* 1138*4882a593Smuzhiyun * The following defines are for the flags in the PC/PCI master enable 1139*4882a593Smuzhiyun * register. 1140*4882a593Smuzhiyun */ 1141*4882a593Smuzhiyun #ifndef NO_CS4612 1142*4882a593Smuzhiyun #define PCPCIEN_EN 0x00000001 1143*4882a593Smuzhiyun #endif 1144*4882a593Smuzhiyun 1145*4882a593Smuzhiyun /* 1146*4882a593Smuzhiyun * The following defines are for the flags in the extended PCI power 1147*4882a593Smuzhiyun * management control register. 1148*4882a593Smuzhiyun */ 1149*4882a593Smuzhiyun #ifndef NO_CS4612 1150*4882a593Smuzhiyun #define EPCIPMC_GWU 0x00000001 1151*4882a593Smuzhiyun #define EPCIPMC_FSPC 0x00000002 1152*4882a593Smuzhiyun #endif 1153*4882a593Smuzhiyun 1154*4882a593Smuzhiyun /* 1155*4882a593Smuzhiyun * The following defines are for the flags in the SP control register. 1156*4882a593Smuzhiyun */ 1157*4882a593Smuzhiyun #define SPCR_RUN 0x00000001 1158*4882a593Smuzhiyun #define SPCR_STPFR 0x00000002 1159*4882a593Smuzhiyun #define SPCR_RUNFR 0x00000004 1160*4882a593Smuzhiyun #define SPCR_TICK 0x00000008 1161*4882a593Smuzhiyun #define SPCR_DRQEN 0x00000020 1162*4882a593Smuzhiyun #define SPCR_RSTSP 0x00000040 1163*4882a593Smuzhiyun #define SPCR_OREN 0x00000080 1164*4882a593Smuzhiyun #ifndef NO_CS4612 1165*4882a593Smuzhiyun #define SPCR_PCIINT 0x00000100 1166*4882a593Smuzhiyun #define SPCR_OINTD 0x00000200 1167*4882a593Smuzhiyun #define SPCR_CRE 0x00008000 1168*4882a593Smuzhiyun #endif 1169*4882a593Smuzhiyun 1170*4882a593Smuzhiyun /* 1171*4882a593Smuzhiyun * The following defines are for the flags in the debug index register. 1172*4882a593Smuzhiyun */ 1173*4882a593Smuzhiyun #define DREG_REGID_MASK 0x0000007F 1174*4882a593Smuzhiyun #define DREG_DEBUG 0x00000080 1175*4882a593Smuzhiyun #define DREG_RGBK_MASK 0x00000700 1176*4882a593Smuzhiyun #define DREG_TRAP 0x00000800 1177*4882a593Smuzhiyun #if !defined(NO_CS4612) 1178*4882a593Smuzhiyun #if !defined(NO_CS4615) 1179*4882a593Smuzhiyun #define DREG_TRAPX 0x00001000 1180*4882a593Smuzhiyun #endif 1181*4882a593Smuzhiyun #endif 1182*4882a593Smuzhiyun #define DREG_REGID_SHIFT 0 1183*4882a593Smuzhiyun #define DREG_RGBK_SHIFT 8 1184*4882a593Smuzhiyun #define DREG_RGBK_REGID_MASK 0x0000077F 1185*4882a593Smuzhiyun #define DREG_REGID_R0 0x00000010 1186*4882a593Smuzhiyun #define DREG_REGID_R1 0x00000011 1187*4882a593Smuzhiyun #define DREG_REGID_R2 0x00000012 1188*4882a593Smuzhiyun #define DREG_REGID_R3 0x00000013 1189*4882a593Smuzhiyun #define DREG_REGID_R4 0x00000014 1190*4882a593Smuzhiyun #define DREG_REGID_R5 0x00000015 1191*4882a593Smuzhiyun #define DREG_REGID_R6 0x00000016 1192*4882a593Smuzhiyun #define DREG_REGID_R7 0x00000017 1193*4882a593Smuzhiyun #define DREG_REGID_R8 0x00000018 1194*4882a593Smuzhiyun #define DREG_REGID_R9 0x00000019 1195*4882a593Smuzhiyun #define DREG_REGID_RA 0x0000001A 1196*4882a593Smuzhiyun #define DREG_REGID_RB 0x0000001B 1197*4882a593Smuzhiyun #define DREG_REGID_RC 0x0000001C 1198*4882a593Smuzhiyun #define DREG_REGID_RD 0x0000001D 1199*4882a593Smuzhiyun #define DREG_REGID_RE 0x0000001E 1200*4882a593Smuzhiyun #define DREG_REGID_RF 0x0000001F 1201*4882a593Smuzhiyun #define DREG_REGID_RA_BUS_LOW 0x00000020 1202*4882a593Smuzhiyun #define DREG_REGID_RA_BUS_HIGH 0x00000038 1203*4882a593Smuzhiyun #define DREG_REGID_YBUS_LOW 0x00000050 1204*4882a593Smuzhiyun #define DREG_REGID_YBUS_HIGH 0x00000058 1205*4882a593Smuzhiyun #define DREG_REGID_TRAP_0 0x00000100 1206*4882a593Smuzhiyun #define DREG_REGID_TRAP_1 0x00000101 1207*4882a593Smuzhiyun #define DREG_REGID_TRAP_2 0x00000102 1208*4882a593Smuzhiyun #define DREG_REGID_TRAP_3 0x00000103 1209*4882a593Smuzhiyun #define DREG_REGID_TRAP_4 0x00000104 1210*4882a593Smuzhiyun #define DREG_REGID_TRAP_5 0x00000105 1211*4882a593Smuzhiyun #define DREG_REGID_TRAP_6 0x00000106 1212*4882a593Smuzhiyun #define DREG_REGID_TRAP_7 0x00000107 1213*4882a593Smuzhiyun #define DREG_REGID_INDIRECT_ADDRESS 0x0000010E 1214*4882a593Smuzhiyun #define DREG_REGID_TOP_OF_STACK 0x0000010F 1215*4882a593Smuzhiyun #if !defined(NO_CS4612) 1216*4882a593Smuzhiyun #if !defined(NO_CS4615) 1217*4882a593Smuzhiyun #define DREG_REGID_TRAP_8 0x00000110 1218*4882a593Smuzhiyun #define DREG_REGID_TRAP_9 0x00000111 1219*4882a593Smuzhiyun #define DREG_REGID_TRAP_10 0x00000112 1220*4882a593Smuzhiyun #define DREG_REGID_TRAP_11 0x00000113 1221*4882a593Smuzhiyun #define DREG_REGID_TRAP_12 0x00000114 1222*4882a593Smuzhiyun #define DREG_REGID_TRAP_13 0x00000115 1223*4882a593Smuzhiyun #define DREG_REGID_TRAP_14 0x00000116 1224*4882a593Smuzhiyun #define DREG_REGID_TRAP_15 0x00000117 1225*4882a593Smuzhiyun #define DREG_REGID_TRAP_16 0x00000118 1226*4882a593Smuzhiyun #define DREG_REGID_TRAP_17 0x00000119 1227*4882a593Smuzhiyun #define DREG_REGID_TRAP_18 0x0000011A 1228*4882a593Smuzhiyun #define DREG_REGID_TRAP_19 0x0000011B 1229*4882a593Smuzhiyun #define DREG_REGID_TRAP_20 0x0000011C 1230*4882a593Smuzhiyun #define DREG_REGID_TRAP_21 0x0000011D 1231*4882a593Smuzhiyun #define DREG_REGID_TRAP_22 0x0000011E 1232*4882a593Smuzhiyun #define DREG_REGID_TRAP_23 0x0000011F 1233*4882a593Smuzhiyun #endif 1234*4882a593Smuzhiyun #endif 1235*4882a593Smuzhiyun #define DREG_REGID_RSA0_LOW 0x00000200 1236*4882a593Smuzhiyun #define DREG_REGID_RSA0_HIGH 0x00000201 1237*4882a593Smuzhiyun #define DREG_REGID_RSA1_LOW 0x00000202 1238*4882a593Smuzhiyun #define DREG_REGID_RSA1_HIGH 0x00000203 1239*4882a593Smuzhiyun #define DREG_REGID_RSA2 0x00000204 1240*4882a593Smuzhiyun #define DREG_REGID_RSA3 0x00000205 1241*4882a593Smuzhiyun #define DREG_REGID_RSI0_LOW 0x00000206 1242*4882a593Smuzhiyun #define DREG_REGID_RSI0_HIGH 0x00000207 1243*4882a593Smuzhiyun #define DREG_REGID_RSI1 0x00000208 1244*4882a593Smuzhiyun #define DREG_REGID_RSI2 0x00000209 1245*4882a593Smuzhiyun #define DREG_REGID_SAGUSTATUS 0x0000020A 1246*4882a593Smuzhiyun #define DREG_REGID_RSCONFIG01_LOW 0x0000020B 1247*4882a593Smuzhiyun #define DREG_REGID_RSCONFIG01_HIGH 0x0000020C 1248*4882a593Smuzhiyun #define DREG_REGID_RSCONFIG23_LOW 0x0000020D 1249*4882a593Smuzhiyun #define DREG_REGID_RSCONFIG23_HIGH 0x0000020E 1250*4882a593Smuzhiyun #define DREG_REGID_RSDMA01E 0x0000020F 1251*4882a593Smuzhiyun #define DREG_REGID_RSDMA23E 0x00000210 1252*4882a593Smuzhiyun #define DREG_REGID_RSD0_LOW 0x00000211 1253*4882a593Smuzhiyun #define DREG_REGID_RSD0_HIGH 0x00000212 1254*4882a593Smuzhiyun #define DREG_REGID_RSD1_LOW 0x00000213 1255*4882a593Smuzhiyun #define DREG_REGID_RSD1_HIGH 0x00000214 1256*4882a593Smuzhiyun #define DREG_REGID_RSD2_LOW 0x00000215 1257*4882a593Smuzhiyun #define DREG_REGID_RSD2_HIGH 0x00000216 1258*4882a593Smuzhiyun #define DREG_REGID_RSD3_LOW 0x00000217 1259*4882a593Smuzhiyun #define DREG_REGID_RSD3_HIGH 0x00000218 1260*4882a593Smuzhiyun #define DREG_REGID_SRAR_HIGH 0x0000021A 1261*4882a593Smuzhiyun #define DREG_REGID_SRAR_LOW 0x0000021B 1262*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE 0x0000021C 1263*4882a593Smuzhiyun #define DREG_REGID_CURRENT_DMA_STREAM 0x0000021D 1264*4882a593Smuzhiyun #define DREG_REGID_NEXT_DMA_STREAM 0x0000021E 1265*4882a593Smuzhiyun #define DREG_REGID_CPU_STATUS 0x00000300 1266*4882a593Smuzhiyun #define DREG_REGID_MAC_MODE 0x00000301 1267*4882a593Smuzhiyun #define DREG_REGID_STACK_AND_REPEAT 0x00000302 1268*4882a593Smuzhiyun #define DREG_REGID_INDEX0 0x00000304 1269*4882a593Smuzhiyun #define DREG_REGID_INDEX1 0x00000305 1270*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_0_3 0x00000400 1271*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_4_7 0x00000404 1272*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_8_11 0x00000408 1273*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_12_15 0x0000040C 1274*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_16_19 0x00000410 1275*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_20_23 0x00000414 1276*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_24_27 0x00000418 1277*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_28_31 0x0000041C 1278*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_32_35 0x00000420 1279*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_36_39 0x00000424 1280*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_40_43 0x00000428 1281*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_44_47 0x0000042C 1282*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_48_51 0x00000430 1283*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_52_55 0x00000434 1284*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_56_59 0x00000438 1285*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_60_63 0x0000043C 1286*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_64_67 0x00000440 1287*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_68_71 0x00000444 1288*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_72_75 0x00000448 1289*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_76_79 0x0000044C 1290*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_80_83 0x00000450 1291*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_84_87 0x00000454 1292*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_88_91 0x00000458 1293*4882a593Smuzhiyun #define DREG_REGID_DMA_STATE_92_95 0x0000045C 1294*4882a593Smuzhiyun #define DREG_REGID_TRAP_SELECT 0x00000500 1295*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_0 0x00000500 1296*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_1 0x00000501 1297*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_2 0x00000502 1298*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_3 0x00000503 1299*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_4 0x00000504 1300*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_5 0x00000505 1301*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_6 0x00000506 1302*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_7 0x00000507 1303*4882a593Smuzhiyun #if !defined(NO_CS4612) 1304*4882a593Smuzhiyun #if !defined(NO_CS4615) 1305*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_8 0x00000510 1306*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_9 0x00000511 1307*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_10 0x00000512 1308*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_11 0x00000513 1309*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_12 0x00000514 1310*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_13 0x00000515 1311*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_14 0x00000516 1312*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_15 0x00000517 1313*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_16 0x00000518 1314*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_17 0x00000519 1315*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_18 0x0000051A 1316*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_19 0x0000051B 1317*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_20 0x0000051C 1318*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_21 0x0000051D 1319*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_22 0x0000051E 1320*4882a593Smuzhiyun #define DREG_REGID_TRAP_WRITE_23 0x0000051F 1321*4882a593Smuzhiyun #endif 1322*4882a593Smuzhiyun #endif 1323*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC0_LOW 0x00000600 1324*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC1_LOW 0x00000601 1325*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC2_LOW 0x00000602 1326*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC3_LOW 0x00000603 1327*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC0_LOW 0x00000604 1328*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC1_LOW 0x00000605 1329*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC2_LOW 0x00000606 1330*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC3_LOW 0x00000607 1331*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC0_MID 0x00000608 1332*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC1_MID 0x00000609 1333*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC2_MID 0x0000060A 1334*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC3_MID 0x0000060B 1335*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC0_MID 0x0000060C 1336*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC1_MID 0x0000060D 1337*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC2_MID 0x0000060E 1338*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC3_MID 0x0000060F 1339*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC0_HIGH 0x00000610 1340*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC1_HIGH 0x00000611 1341*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC2_HIGH 0x00000612 1342*4882a593Smuzhiyun #define DREG_REGID_MAC0_ACC3_HIGH 0x00000613 1343*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC0_HIGH 0x00000614 1344*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC1_HIGH 0x00000615 1345*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC2_HIGH 0x00000616 1346*4882a593Smuzhiyun #define DREG_REGID_MAC1_ACC3_HIGH 0x00000617 1347*4882a593Smuzhiyun #define DREG_REGID_RSHOUT_LOW 0x00000620 1348*4882a593Smuzhiyun #define DREG_REGID_RSHOUT_MID 0x00000628 1349*4882a593Smuzhiyun #define DREG_REGID_RSHOUT_HIGH 0x00000630 1350*4882a593Smuzhiyun 1351*4882a593Smuzhiyun /* 1352*4882a593Smuzhiyun * The following defines are for the flags in the DMA stream requestor write 1353*4882a593Smuzhiyun */ 1354*4882a593Smuzhiyun #define DSRWP_DSR_MASK 0x0000000F 1355*4882a593Smuzhiyun #define DSRWP_DSR_BG_RQ 0x00000001 1356*4882a593Smuzhiyun #define DSRWP_DSR_PRIORITY_MASK 0x00000006 1357*4882a593Smuzhiyun #define DSRWP_DSR_PRIORITY_0 0x00000000 1358*4882a593Smuzhiyun #define DSRWP_DSR_PRIORITY_1 0x00000002 1359*4882a593Smuzhiyun #define DSRWP_DSR_PRIORITY_2 0x00000004 1360*4882a593Smuzhiyun #define DSRWP_DSR_PRIORITY_3 0x00000006 1361*4882a593Smuzhiyun #define DSRWP_DSR_RQ_PENDING 0x00000008 1362*4882a593Smuzhiyun 1363*4882a593Smuzhiyun /* 1364*4882a593Smuzhiyun * The following defines are for the flags in the trap write port register. 1365*4882a593Smuzhiyun */ 1366*4882a593Smuzhiyun #define TWPR_TW_MASK 0x0000FFFF 1367*4882a593Smuzhiyun #define TWPR_TW_SHIFT 0 1368*4882a593Smuzhiyun 1369*4882a593Smuzhiyun /* 1370*4882a593Smuzhiyun * The following defines are for the flags in the stack pointer write 1371*4882a593Smuzhiyun * register. 1372*4882a593Smuzhiyun */ 1373*4882a593Smuzhiyun #define SPWR_STKP_MASK 0x0000000F 1374*4882a593Smuzhiyun #define SPWR_STKP_SHIFT 0 1375*4882a593Smuzhiyun 1376*4882a593Smuzhiyun /* 1377*4882a593Smuzhiyun * The following defines are for the flags in the SP interrupt register. 1378*4882a593Smuzhiyun */ 1379*4882a593Smuzhiyun #define SPIR_FRI 0x00000001 1380*4882a593Smuzhiyun #define SPIR_DOI 0x00000002 1381*4882a593Smuzhiyun #define SPIR_GPI2 0x00000004 1382*4882a593Smuzhiyun #define SPIR_GPI3 0x00000008 1383*4882a593Smuzhiyun #define SPIR_IP0 0x00000010 1384*4882a593Smuzhiyun #define SPIR_IP1 0x00000020 1385*4882a593Smuzhiyun #define SPIR_IP2 0x00000040 1386*4882a593Smuzhiyun #define SPIR_IP3 0x00000080 1387*4882a593Smuzhiyun 1388*4882a593Smuzhiyun /* 1389*4882a593Smuzhiyun * The following defines are for the flags in the functional group 1 register. 1390*4882a593Smuzhiyun */ 1391*4882a593Smuzhiyun #define FGR1_F1S_MASK 0x0000FFFF 1392*4882a593Smuzhiyun #define FGR1_F1S_SHIFT 0 1393*4882a593Smuzhiyun 1394*4882a593Smuzhiyun /* 1395*4882a593Smuzhiyun * The following defines are for the flags in the SP clock status register. 1396*4882a593Smuzhiyun */ 1397*4882a593Smuzhiyun #define SPCS_FRI 0x00000001 1398*4882a593Smuzhiyun #define SPCS_DOI 0x00000002 1399*4882a593Smuzhiyun #define SPCS_GPI2 0x00000004 1400*4882a593Smuzhiyun #define SPCS_GPI3 0x00000008 1401*4882a593Smuzhiyun #define SPCS_IP0 0x00000010 1402*4882a593Smuzhiyun #define SPCS_IP1 0x00000020 1403*4882a593Smuzhiyun #define SPCS_IP2 0x00000040 1404*4882a593Smuzhiyun #define SPCS_IP3 0x00000080 1405*4882a593Smuzhiyun #define SPCS_SPRUN 0x00000100 1406*4882a593Smuzhiyun #define SPCS_SLEEP 0x00000200 1407*4882a593Smuzhiyun #define SPCS_FG 0x00000400 1408*4882a593Smuzhiyun #define SPCS_ORUN 0x00000800 1409*4882a593Smuzhiyun #define SPCS_IRQ 0x00001000 1410*4882a593Smuzhiyun #define SPCS_FGN_MASK 0x0000E000 1411*4882a593Smuzhiyun #define SPCS_FGN_SHIFT 13 1412*4882a593Smuzhiyun 1413*4882a593Smuzhiyun /* 1414*4882a593Smuzhiyun * The following defines are for the flags in the SP DMA requestor status 1415*4882a593Smuzhiyun * register. 1416*4882a593Smuzhiyun */ 1417*4882a593Smuzhiyun #define SDSR_DCS_MASK 0x000000FF 1418*4882a593Smuzhiyun #define SDSR_DCS_SHIFT 0 1419*4882a593Smuzhiyun #define SDSR_DCS_NONE 0x00000007 1420*4882a593Smuzhiyun 1421*4882a593Smuzhiyun /* 1422*4882a593Smuzhiyun * The following defines are for the flags in the frame timer register. 1423*4882a593Smuzhiyun */ 1424*4882a593Smuzhiyun #define FRMT_FTV_MASK 0x0000FFFF 1425*4882a593Smuzhiyun #define FRMT_FTV_SHIFT 0 1426*4882a593Smuzhiyun 1427*4882a593Smuzhiyun /* 1428*4882a593Smuzhiyun * The following defines are for the flags in the frame timer current count 1429*4882a593Smuzhiyun * register. 1430*4882a593Smuzhiyun */ 1431*4882a593Smuzhiyun #define FRCC_FCC_MASK 0x0000FFFF 1432*4882a593Smuzhiyun #define FRCC_FCC_SHIFT 0 1433*4882a593Smuzhiyun 1434*4882a593Smuzhiyun /* 1435*4882a593Smuzhiyun * The following defines are for the flags in the frame timer save count 1436*4882a593Smuzhiyun * register. 1437*4882a593Smuzhiyun */ 1438*4882a593Smuzhiyun #define FRSC_FCS_MASK 0x0000FFFF 1439*4882a593Smuzhiyun #define FRSC_FCS_SHIFT 0 1440*4882a593Smuzhiyun 1441*4882a593Smuzhiyun /* 1442*4882a593Smuzhiyun * The following define the various flags stored in the scatter/gather 1443*4882a593Smuzhiyun * descriptors. 1444*4882a593Smuzhiyun */ 1445*4882a593Smuzhiyun #define DMA_SG_NEXT_ENTRY_MASK 0x00000FF8 1446*4882a593Smuzhiyun #define DMA_SG_SAMPLE_END_MASK 0x0FFF0000 1447*4882a593Smuzhiyun #define DMA_SG_SAMPLE_END_FLAG 0x10000000 1448*4882a593Smuzhiyun #define DMA_SG_LOOP_END_FLAG 0x20000000 1449*4882a593Smuzhiyun #define DMA_SG_SIGNAL_END_FLAG 0x40000000 1450*4882a593Smuzhiyun #define DMA_SG_SIGNAL_PAGE_FLAG 0x80000000 1451*4882a593Smuzhiyun #define DMA_SG_NEXT_ENTRY_SHIFT 3 1452*4882a593Smuzhiyun #define DMA_SG_SAMPLE_END_SHIFT 16 1453*4882a593Smuzhiyun 1454*4882a593Smuzhiyun /* 1455*4882a593Smuzhiyun * The following define the offsets of the fields within the on-chip generic 1456*4882a593Smuzhiyun * DMA requestor. 1457*4882a593Smuzhiyun */ 1458*4882a593Smuzhiyun #define DMA_RQ_CONTROL1 0x00000000 1459*4882a593Smuzhiyun #define DMA_RQ_CONTROL2 0x00000004 1460*4882a593Smuzhiyun #define DMA_RQ_SOURCE_ADDR 0x00000008 1461*4882a593Smuzhiyun #define DMA_RQ_DESTINATION_ADDR 0x0000000C 1462*4882a593Smuzhiyun #define DMA_RQ_NEXT_PAGE_ADDR 0x00000010 1463*4882a593Smuzhiyun #define DMA_RQ_NEXT_PAGE_SGDESC 0x00000014 1464*4882a593Smuzhiyun #define DMA_RQ_LOOP_START_ADDR 0x00000018 1465*4882a593Smuzhiyun #define DMA_RQ_POST_LOOP_ADDR 0x0000001C 1466*4882a593Smuzhiyun #define DMA_RQ_PAGE_MAP_ADDR 0x00000020 1467*4882a593Smuzhiyun 1468*4882a593Smuzhiyun /* 1469*4882a593Smuzhiyun * The following defines are for the flags in the first control word of the 1470*4882a593Smuzhiyun * on-chip generic DMA requestor. 1471*4882a593Smuzhiyun */ 1472*4882a593Smuzhiyun #define DMA_RQ_C1_COUNT_MASK 0x000003FF 1473*4882a593Smuzhiyun #define DMA_RQ_C1_DESTINATION_SCATTER 0x00001000 1474*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_GATHER 0x00002000 1475*4882a593Smuzhiyun #define DMA_RQ_C1_DONE_FLAG 0x00004000 1476*4882a593Smuzhiyun #define DMA_RQ_C1_OPTIMIZE_STATE 0x00008000 1477*4882a593Smuzhiyun #define DMA_RQ_C1_SAMPLE_END_STATE_MASK 0x00030000 1478*4882a593Smuzhiyun #define DMA_RQ_C1_FULL_PAGE 0x00000000 1479*4882a593Smuzhiyun #define DMA_RQ_C1_BEFORE_SAMPLE_END 0x00010000 1480*4882a593Smuzhiyun #define DMA_RQ_C1_PAGE_MAP_ERROR 0x00020000 1481*4882a593Smuzhiyun #define DMA_RQ_C1_AT_SAMPLE_END 0x00030000 1482*4882a593Smuzhiyun #define DMA_RQ_C1_LOOP_END_STATE_MASK 0x000C0000 1483*4882a593Smuzhiyun #define DMA_RQ_C1_NOT_LOOP_END 0x00000000 1484*4882a593Smuzhiyun #define DMA_RQ_C1_BEFORE_LOOP_END 0x00040000 1485*4882a593Smuzhiyun #define DMA_RQ_C1_2PAGE_LOOP_BEGIN 0x00080000 1486*4882a593Smuzhiyun #define DMA_RQ_C1_LOOP_BEGIN 0x000C0000 1487*4882a593Smuzhiyun #define DMA_RQ_C1_PAGE_MAP_MASK 0x00300000 1488*4882a593Smuzhiyun #define DMA_RQ_C1_PM_NONE_PENDING 0x00000000 1489*4882a593Smuzhiyun #define DMA_RQ_C1_PM_NEXT_PENDING 0x00100000 1490*4882a593Smuzhiyun #define DMA_RQ_C1_PM_RESERVED 0x00200000 1491*4882a593Smuzhiyun #define DMA_RQ_C1_PM_LOOP_NEXT_PENDING 0x00300000 1492*4882a593Smuzhiyun #define DMA_RQ_C1_WRITEBACK_DEST_FLAG 0x00400000 1493*4882a593Smuzhiyun #define DMA_RQ_C1_WRITEBACK_SRC_FLAG 0x00800000 1494*4882a593Smuzhiyun #define DMA_RQ_C1_DEST_SIZE_MASK 0x07000000 1495*4882a593Smuzhiyun #define DMA_RQ_C1_DEST_LINEAR 0x00000000 1496*4882a593Smuzhiyun #define DMA_RQ_C1_DEST_MOD16 0x01000000 1497*4882a593Smuzhiyun #define DMA_RQ_C1_DEST_MOD32 0x02000000 1498*4882a593Smuzhiyun #define DMA_RQ_C1_DEST_MOD64 0x03000000 1499*4882a593Smuzhiyun #define DMA_RQ_C1_DEST_MOD128 0x04000000 1500*4882a593Smuzhiyun #define DMA_RQ_C1_DEST_MOD256 0x05000000 1501*4882a593Smuzhiyun #define DMA_RQ_C1_DEST_MOD512 0x06000000 1502*4882a593Smuzhiyun #define DMA_RQ_C1_DEST_MOD1024 0x07000000 1503*4882a593Smuzhiyun #define DMA_RQ_C1_DEST_ON_HOST 0x08000000 1504*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_SIZE_MASK 0x70000000 1505*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_LINEAR 0x00000000 1506*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_MOD16 0x10000000 1507*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_MOD32 0x20000000 1508*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_MOD64 0x30000000 1509*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_MOD128 0x40000000 1510*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_MOD256 0x50000000 1511*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_MOD512 0x60000000 1512*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_MOD1024 0x70000000 1513*4882a593Smuzhiyun #define DMA_RQ_C1_SOURCE_ON_HOST 0x80000000 1514*4882a593Smuzhiyun #define DMA_RQ_C1_COUNT_SHIFT 0 1515*4882a593Smuzhiyun 1516*4882a593Smuzhiyun /* 1517*4882a593Smuzhiyun * The following defines are for the flags in the second control word of the 1518*4882a593Smuzhiyun * on-chip generic DMA requestor. 1519*4882a593Smuzhiyun */ 1520*4882a593Smuzhiyun #define DMA_RQ_C2_VIRTUAL_CHANNEL_MASK 0x0000003F 1521*4882a593Smuzhiyun #define DMA_RQ_C2_VIRTUAL_SIGNAL_MASK 0x00000300 1522*4882a593Smuzhiyun #define DMA_RQ_C2_NO_VIRTUAL_SIGNAL 0x00000000 1523*4882a593Smuzhiyun #define DMA_RQ_C2_SIGNAL_EVERY_DMA 0x00000100 1524*4882a593Smuzhiyun #define DMA_RQ_C2_SIGNAL_SOURCE_PINGPONG 0x00000200 1525*4882a593Smuzhiyun #define DMA_RQ_C2_SIGNAL_DEST_PINGPONG 0x00000300 1526*4882a593Smuzhiyun #define DMA_RQ_C2_AUDIO_CONVERT_MASK 0x0000F000 1527*4882a593Smuzhiyun #define DMA_RQ_C2_AC_NONE 0x00000000 1528*4882a593Smuzhiyun #define DMA_RQ_C2_AC_8_TO_16_BIT 0x00001000 1529*4882a593Smuzhiyun #define DMA_RQ_C2_AC_MONO_TO_STEREO 0x00002000 1530*4882a593Smuzhiyun #define DMA_RQ_C2_AC_ENDIAN_CONVERT 0x00004000 1531*4882a593Smuzhiyun #define DMA_RQ_C2_AC_SIGNED_CONVERT 0x00008000 1532*4882a593Smuzhiyun #define DMA_RQ_C2_LOOP_END_MASK 0x0FFF0000 1533*4882a593Smuzhiyun #define DMA_RQ_C2_LOOP_MASK 0x30000000 1534*4882a593Smuzhiyun #define DMA_RQ_C2_NO_LOOP 0x00000000 1535*4882a593Smuzhiyun #define DMA_RQ_C2_ONE_PAGE_LOOP 0x10000000 1536*4882a593Smuzhiyun #define DMA_RQ_C2_TWO_PAGE_LOOP 0x20000000 1537*4882a593Smuzhiyun #define DMA_RQ_C2_MULTI_PAGE_LOOP 0x30000000 1538*4882a593Smuzhiyun #define DMA_RQ_C2_SIGNAL_LOOP_BACK 0x40000000 1539*4882a593Smuzhiyun #define DMA_RQ_C2_SIGNAL_POST_BEGIN_PAGE 0x80000000 1540*4882a593Smuzhiyun #define DMA_RQ_C2_VIRTUAL_CHANNEL_SHIFT 0 1541*4882a593Smuzhiyun #define DMA_RQ_C2_LOOP_END_SHIFT 16 1542*4882a593Smuzhiyun 1543*4882a593Smuzhiyun /* 1544*4882a593Smuzhiyun * The following defines are for the flags in the source and destination words 1545*4882a593Smuzhiyun * of the on-chip generic DMA requestor. 1546*4882a593Smuzhiyun */ 1547*4882a593Smuzhiyun #define DMA_RQ_SD_ADDRESS_MASK 0x0000FFFF 1548*4882a593Smuzhiyun #define DMA_RQ_SD_MEMORY_ID_MASK 0x000F0000 1549*4882a593Smuzhiyun #define DMA_RQ_SD_SP_PARAM_ADDR 0x00000000 1550*4882a593Smuzhiyun #define DMA_RQ_SD_SP_SAMPLE_ADDR 0x00010000 1551*4882a593Smuzhiyun #define DMA_RQ_SD_SP_PROGRAM_ADDR 0x00020000 1552*4882a593Smuzhiyun #define DMA_RQ_SD_SP_DEBUG_ADDR 0x00030000 1553*4882a593Smuzhiyun #define DMA_RQ_SD_OMNIMEM_ADDR 0x000E0000 1554*4882a593Smuzhiyun #define DMA_RQ_SD_END_FLAG 0x40000000 1555*4882a593Smuzhiyun #define DMA_RQ_SD_ERROR_FLAG 0x80000000 1556*4882a593Smuzhiyun #define DMA_RQ_SD_ADDRESS_SHIFT 0 1557*4882a593Smuzhiyun 1558*4882a593Smuzhiyun /* 1559*4882a593Smuzhiyun * The following defines are for the flags in the page map address word of the 1560*4882a593Smuzhiyun * on-chip generic DMA requestor. 1561*4882a593Smuzhiyun */ 1562*4882a593Smuzhiyun #define DMA_RQ_PMA_LOOP_THIRD_PAGE_ENTRY_MASK 0x00000FF8 1563*4882a593Smuzhiyun #define DMA_RQ_PMA_PAGE_TABLE_MASK 0xFFFFF000 1564*4882a593Smuzhiyun #define DMA_RQ_PMA_LOOP_THIRD_PAGE_ENTRY_SHIFT 3 1565*4882a593Smuzhiyun #define DMA_RQ_PMA_PAGE_TABLE_SHIFT 12 1566*4882a593Smuzhiyun 1567*4882a593Smuzhiyun #define BA1_VARIDEC_BUF_1 0x000 1568*4882a593Smuzhiyun 1569*4882a593Smuzhiyun #define BA1_PDTC 0x0c0 /* BA1_PLAY_DMA_TRANSACTION_COUNT_REG */ 1570*4882a593Smuzhiyun #define BA1_PFIE 0x0c4 /* BA1_PLAY_FORMAT_&_INTERRUPT_ENABLE_REG */ 1571*4882a593Smuzhiyun #define BA1_PBA 0x0c8 /* BA1_PLAY_BUFFER_ADDRESS */ 1572*4882a593Smuzhiyun #define BA1_PVOL 0x0f8 /* BA1_PLAY_VOLUME_REG */ 1573*4882a593Smuzhiyun #define BA1_PSRC 0x288 /* BA1_PLAY_SAMPLE_RATE_CORRECTION_REG */ 1574*4882a593Smuzhiyun #define BA1_PCTL 0x2a4 /* BA1_PLAY_CONTROL_REG */ 1575*4882a593Smuzhiyun #define BA1_PPI 0x2b4 /* BA1_PLAY_PHASE_INCREMENT_REG */ 1576*4882a593Smuzhiyun 1577*4882a593Smuzhiyun #define BA1_CCTL 0x064 /* BA1_CAPTURE_CONTROL_REG */ 1578*4882a593Smuzhiyun #define BA1_CIE 0x104 /* BA1_CAPTURE_INTERRUPT_ENABLE_REG */ 1579*4882a593Smuzhiyun #define BA1_CBA 0x10c /* BA1_CAPTURE_BUFFER_ADDRESS */ 1580*4882a593Smuzhiyun #define BA1_CSRC 0x2c8 /* BA1_CAPTURE_SAMPLE_RATE_CORRECTION_REG */ 1581*4882a593Smuzhiyun #define BA1_CCI 0x2d8 /* BA1_CAPTURE_COEFFICIENT_INCREMENT_REG */ 1582*4882a593Smuzhiyun #define BA1_CD 0x2e0 /* BA1_CAPTURE_DELAY_REG */ 1583*4882a593Smuzhiyun #define BA1_CPI 0x2f4 /* BA1_CAPTURE_PHASE_INCREMENT_REG */ 1584*4882a593Smuzhiyun #define BA1_CVOL 0x2f8 /* BA1_CAPTURE_VOLUME_REG */ 1585*4882a593Smuzhiyun 1586*4882a593Smuzhiyun #define BA1_CFG1 0x134 /* BA1_CAPTURE_FRAME_GROUP_1_REG */ 1587*4882a593Smuzhiyun #define BA1_CFG2 0x138 /* BA1_CAPTURE_FRAME_GROUP_2_REG */ 1588*4882a593Smuzhiyun #define BA1_CCST 0x13c /* BA1_CAPTURE_CONSTANT_REG */ 1589*4882a593Smuzhiyun #define BA1_CSPB 0x340 /* BA1_CAPTURE_SPB_ADDRESS */ 1590*4882a593Smuzhiyun 1591*4882a593Smuzhiyun /* 1592*4882a593Smuzhiyun * 1593*4882a593Smuzhiyun */ 1594*4882a593Smuzhiyun 1595*4882a593Smuzhiyun #define CS46XX_MODE_OUTPUT (1<<0) /* MIDI UART - output */ 1596*4882a593Smuzhiyun #define CS46XX_MODE_INPUT (1<<1) /* MIDI UART - input */ 1597*4882a593Smuzhiyun 1598*4882a593Smuzhiyun /* 1599*4882a593Smuzhiyun * 1600*4882a593Smuzhiyun */ 1601*4882a593Smuzhiyun 1602*4882a593Smuzhiyun #define SAVE_REG_MAX 0x10 1603*4882a593Smuzhiyun #define POWER_DOWN_ALL 0x7f0f 1604*4882a593Smuzhiyun 1605*4882a593Smuzhiyun /* maxinum number of AC97 codecs connected, AC97 2.0 defined 4 */ 1606*4882a593Smuzhiyun #define MAX_NR_AC97 4 1607*4882a593Smuzhiyun #define CS46XX_PRIMARY_CODEC_INDEX 0 1608*4882a593Smuzhiyun #define CS46XX_SECONDARY_CODEC_INDEX 1 1609*4882a593Smuzhiyun #define CS46XX_SECONDARY_CODEC_OFFSET 0x80 1610*4882a593Smuzhiyun #define CS46XX_DSP_CAPTURE_CHANNEL 1 1611*4882a593Smuzhiyun 1612*4882a593Smuzhiyun /* capture */ 1613*4882a593Smuzhiyun #define CS46XX_DSP_CAPTURE_CHANNEL 1 1614*4882a593Smuzhiyun 1615*4882a593Smuzhiyun /* mixer */ 1616*4882a593Smuzhiyun #define CS46XX_MIXER_SPDIF_INPUT_ELEMENT 1 1617*4882a593Smuzhiyun #define CS46XX_MIXER_SPDIF_OUTPUT_ELEMENT 2 1618*4882a593Smuzhiyun 1619*4882a593Smuzhiyun 1620*4882a593Smuzhiyun struct snd_cs46xx_pcm { 1621*4882a593Smuzhiyun struct snd_dma_buffer hw_buf; 1622*4882a593Smuzhiyun 1623*4882a593Smuzhiyun unsigned int ctl; 1624*4882a593Smuzhiyun unsigned int shift; /* Shift count to trasform frames in bytes */ 1625*4882a593Smuzhiyun struct snd_pcm_indirect pcm_rec; 1626*4882a593Smuzhiyun struct snd_pcm_substream *substream; 1627*4882a593Smuzhiyun 1628*4882a593Smuzhiyun struct dsp_pcm_channel_descriptor * pcm_channel; 1629*4882a593Smuzhiyun 1630*4882a593Smuzhiyun int pcm_channel_id; /* Fron Rear, Center Lfe ... */ 1631*4882a593Smuzhiyun }; 1632*4882a593Smuzhiyun 1633*4882a593Smuzhiyun struct snd_cs46xx_region { 1634*4882a593Smuzhiyun char name[24]; 1635*4882a593Smuzhiyun unsigned long base; 1636*4882a593Smuzhiyun void __iomem *remap_addr; 1637*4882a593Smuzhiyun unsigned long size; 1638*4882a593Smuzhiyun struct resource *resource; 1639*4882a593Smuzhiyun }; 1640*4882a593Smuzhiyun 1641*4882a593Smuzhiyun struct snd_cs46xx { 1642*4882a593Smuzhiyun int irq; 1643*4882a593Smuzhiyun unsigned long ba0_addr; 1644*4882a593Smuzhiyun unsigned long ba1_addr; 1645*4882a593Smuzhiyun union { 1646*4882a593Smuzhiyun struct { 1647*4882a593Smuzhiyun struct snd_cs46xx_region ba0; 1648*4882a593Smuzhiyun struct snd_cs46xx_region data0; 1649*4882a593Smuzhiyun struct snd_cs46xx_region data1; 1650*4882a593Smuzhiyun struct snd_cs46xx_region pmem; 1651*4882a593Smuzhiyun struct snd_cs46xx_region reg; 1652*4882a593Smuzhiyun } name; 1653*4882a593Smuzhiyun struct snd_cs46xx_region idx[5]; 1654*4882a593Smuzhiyun } region; 1655*4882a593Smuzhiyun 1656*4882a593Smuzhiyun unsigned int mode; 1657*4882a593Smuzhiyun 1658*4882a593Smuzhiyun struct { 1659*4882a593Smuzhiyun struct snd_dma_buffer hw_buf; 1660*4882a593Smuzhiyun 1661*4882a593Smuzhiyun unsigned int ctl; 1662*4882a593Smuzhiyun unsigned int shift; /* Shift count to trasform frames in bytes */ 1663*4882a593Smuzhiyun struct snd_pcm_indirect pcm_rec; 1664*4882a593Smuzhiyun struct snd_pcm_substream *substream; 1665*4882a593Smuzhiyun } capt; 1666*4882a593Smuzhiyun 1667*4882a593Smuzhiyun 1668*4882a593Smuzhiyun int nr_ac97_codecs; 1669*4882a593Smuzhiyun struct snd_ac97_bus *ac97_bus; 1670*4882a593Smuzhiyun struct snd_ac97 *ac97[MAX_NR_AC97]; 1671*4882a593Smuzhiyun 1672*4882a593Smuzhiyun struct pci_dev *pci; 1673*4882a593Smuzhiyun struct snd_card *card; 1674*4882a593Smuzhiyun struct snd_pcm *pcm; 1675*4882a593Smuzhiyun 1676*4882a593Smuzhiyun struct snd_rawmidi *rmidi; 1677*4882a593Smuzhiyun struct snd_rawmidi_substream *midi_input; 1678*4882a593Smuzhiyun struct snd_rawmidi_substream *midi_output; 1679*4882a593Smuzhiyun 1680*4882a593Smuzhiyun spinlock_t reg_lock; 1681*4882a593Smuzhiyun unsigned int midcr; 1682*4882a593Smuzhiyun unsigned int uartm; 1683*4882a593Smuzhiyun 1684*4882a593Smuzhiyun int amplifier; 1685*4882a593Smuzhiyun void (*amplifier_ctrl)(struct snd_cs46xx *, int); 1686*4882a593Smuzhiyun void (*active_ctrl)(struct snd_cs46xx *, int); 1687*4882a593Smuzhiyun void (*mixer_init)(struct snd_cs46xx *); 1688*4882a593Smuzhiyun 1689*4882a593Smuzhiyun int acpi_port; 1690*4882a593Smuzhiyun struct snd_kcontrol *eapd_switch; /* for amplifier hack */ 1691*4882a593Smuzhiyun int accept_valid; /* accept mmap valid (for OSS) */ 1692*4882a593Smuzhiyun int in_suspend; 1693*4882a593Smuzhiyun 1694*4882a593Smuzhiyun struct gameport *gameport; 1695*4882a593Smuzhiyun 1696*4882a593Smuzhiyun #ifdef CONFIG_SND_CS46XX_NEW_DSP 1697*4882a593Smuzhiyun struct mutex spos_mutex; 1698*4882a593Smuzhiyun 1699*4882a593Smuzhiyun struct dsp_spos_instance * dsp_spos_instance; 1700*4882a593Smuzhiyun 1701*4882a593Smuzhiyun struct snd_pcm *pcm_rear; 1702*4882a593Smuzhiyun struct snd_pcm *pcm_center_lfe; 1703*4882a593Smuzhiyun struct snd_pcm *pcm_iec958; 1704*4882a593Smuzhiyun 1705*4882a593Smuzhiyun #define CS46XX_DSP_MODULES 5 1706*4882a593Smuzhiyun struct dsp_module_desc *modules[CS46XX_DSP_MODULES]; 1707*4882a593Smuzhiyun #else /* for compatibility */ 1708*4882a593Smuzhiyun struct snd_cs46xx_pcm *playback_pcm; 1709*4882a593Smuzhiyun unsigned int play_ctl; 1710*4882a593Smuzhiyun 1711*4882a593Smuzhiyun struct ba1_struct *ba1; 1712*4882a593Smuzhiyun #endif 1713*4882a593Smuzhiyun 1714*4882a593Smuzhiyun #ifdef CONFIG_PM_SLEEP 1715*4882a593Smuzhiyun u32 *saved_regs; 1716*4882a593Smuzhiyun #endif 1717*4882a593Smuzhiyun }; 1718*4882a593Smuzhiyun 1719*4882a593Smuzhiyun int snd_cs46xx_create(struct snd_card *card, 1720*4882a593Smuzhiyun struct pci_dev *pci, 1721*4882a593Smuzhiyun int external_amp, int thinkpad, 1722*4882a593Smuzhiyun struct snd_cs46xx **rcodec); 1723*4882a593Smuzhiyun extern const struct dev_pm_ops snd_cs46xx_pm; 1724*4882a593Smuzhiyun 1725*4882a593Smuzhiyun int snd_cs46xx_pcm(struct snd_cs46xx *chip, int device); 1726*4882a593Smuzhiyun int snd_cs46xx_pcm_rear(struct snd_cs46xx *chip, int device); 1727*4882a593Smuzhiyun int snd_cs46xx_pcm_iec958(struct snd_cs46xx *chip, int device); 1728*4882a593Smuzhiyun int snd_cs46xx_pcm_center_lfe(struct snd_cs46xx *chip, int device); 1729*4882a593Smuzhiyun int snd_cs46xx_mixer(struct snd_cs46xx *chip, int spdif_device); 1730*4882a593Smuzhiyun int snd_cs46xx_midi(struct snd_cs46xx *chip, int device); 1731*4882a593Smuzhiyun int snd_cs46xx_start_dsp(struct snd_cs46xx *chip); 1732*4882a593Smuzhiyun int snd_cs46xx_gameport(struct snd_cs46xx *chip); 1733*4882a593Smuzhiyun 1734*4882a593Smuzhiyun #endif /* __SOUND_CS46XX_H */ 1735