Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
intel8x0.c File Reference
#include <asm/io.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/ac97_codec.h>
#include <sound/info.h>
#include <sound/initval.h>
#include <asm/pgtable.h>
#include <asm/cacheflush.h>

Go to the source code of this file.

Data Structures

struct  ichdev
 
struct  intel8x0
 
struct  ich_pcm_table
 
struct  ich_reg_info
 
struct  shortname_table
 

Macros

#define kvm_para_available()   (0)
 
#define ICHREG(x)   ICH_REG_##x
 
#define DEFINE_REGSET(name, base)
 
#define ICH_REG_LVI_MASK   0x1f
 
#define ICH_FIFOE   0x10 /* FIFO error */
 
#define ICH_BCIS   0x08 /* buffer completion interrupt status */
 
#define ICH_LVBCI   0x04 /* last valid buffer completion interrupt */
 
#define ICH_CELV   0x02 /* current equals last valid */
 
#define ICH_DCH   0x01 /* DMA controller halted */
 
#define ICH_REG_PIV_MASK   0x1f /* mask */
 
#define ICH_IOCE   0x10 /* interrupt on completion enable */
 
#define ICH_FEIE   0x08 /* fifo error interrupt enable */
 
#define ICH_LVBIE   0x04 /* last valid buffer interrupt enable */
 
#define ICH_RESETREGS   0x02 /* reset busmaster registers */
 
#define ICH_STARTBM   0x01 /* start busmaster operation */
 
#define ICH_REG_GLOB_CNT   0x2c /* dword - global control */
 
#define ICH_PCM_SPDIF_MASK   0xc0000000 /* s/pdif pcm slot mask (ICH4) */
 
#define ICH_PCM_SPDIF_NONE   0x00000000 /* reserved - undefined */
 
#define ICH_PCM_SPDIF_78   0x40000000 /* s/pdif pcm on slots 7&8 */
 
#define ICH_PCM_SPDIF_69   0x80000000 /* s/pdif pcm on slots 6&9 */
 
#define ICH_PCM_SPDIF_1011   0xc0000000 /* s/pdif pcm on slots 10&11 */
 
#define ICH_PCM_20BIT   0x00400000 /* 20-bit samples (ICH4) */
 
#define ICH_PCM_246_MASK   0x00300000 /* chan mask (not all chips) */
 
#define ICH_PCM_8   0x00300000 /* 8 channels (not all chips) */
 
#define ICH_PCM_6   0x00200000 /* 6 channels (not all chips) */
 
#define ICH_PCM_4   0x00100000 /* 4 channels (not all chips) */
 
#define ICH_PCM_2   0x00000000 /* 2 channels (stereo) */
 
#define ICH_SIS_PCM_246_MASK   0x000000c0 /* 6 channels (SIS7012) */
 
#define ICH_SIS_PCM_6   0x00000080 /* 6 channels (SIS7012) */
 
#define ICH_SIS_PCM_4   0x00000040 /* 4 channels (SIS7012) */
 
#define ICH_SIS_PCM_2   0x00000000 /* 2 channels (SIS7012) */
 
#define ICH_TRIE   0x00000040 /* tertiary resume interrupt enable */
 
#define ICH_SRIE   0x00000020 /* secondary resume interrupt enable */
 
#define ICH_PRIE   0x00000010 /* primary resume interrupt enable */
 
#define ICH_ACLINK   0x00000008 /* AClink shut off */
 
#define ICH_AC97WARM   0x00000004 /* AC'97 warm reset */
 
#define ICH_AC97COLD   0x00000002 /* AC'97 cold reset */
 
#define ICH_GIE   0x00000001 /* GPI interrupt enable */
 
#define ICH_REG_GLOB_STA   0x30 /* dword - global status */
 
#define ICH_TRI   0x20000000 /* ICH4: tertiary (AC_SDIN2) resume interrupt */
 
#define ICH_TCR   0x10000000 /* ICH4: tertiary (AC_SDIN2) codec ready */
 
#define ICH_BCS   0x08000000 /* ICH4: bit clock stopped */
 
#define ICH_SPINT   0x04000000 /* ICH4: S/PDIF interrupt */
 
#define ICH_P2INT   0x02000000 /* ICH4: PCM2-In interrupt */
 
#define ICH_M2INT   0x01000000 /* ICH4: Mic2-In interrupt */
 
#define ICH_SAMPLE_CAP   0x00c00000 /* ICH4: sample capability bits (RO) */
 
#define ICH_SAMPLE_16_20   0x00400000 /* ICH4: 16- and 20-bit samples */
 
#define ICH_MULTICHAN_CAP   0x00300000 /* ICH4: multi-channel capability bits (RO) */
 
#define ICH_SIS_TRI   0x00080000 /* SIS: tertiary resume irq */
 
#define ICH_SIS_TCR   0x00040000 /* SIS: tertiary codec ready */
 
#define ICH_MD3   0x00020000 /* modem power down semaphore */
 
#define ICH_AD3   0x00010000 /* audio power down semaphore */
 
#define ICH_RCS   0x00008000 /* read completion status */
 
#define ICH_BIT3   0x00004000 /* bit 3 slot 12 */
 
#define ICH_BIT2   0x00002000 /* bit 2 slot 12 */
 
#define ICH_BIT1   0x00001000 /* bit 1 slot 12 */
 
#define ICH_SRI   0x00000800 /* secondary (AC_SDIN1) resume interrupt */
 
#define ICH_PRI   0x00000400 /* primary (AC_SDIN0) resume interrupt */
 
#define ICH_SCR   0x00000200 /* secondary (AC_SDIN1) codec ready */
 
#define ICH_PCR   0x00000100 /* primary (AC_SDIN0) codec ready */
 
#define ICH_MCINT   0x00000080 /* MIC capture interrupt */
 
#define ICH_POINT   0x00000040 /* playback interrupt */
 
#define ICH_PIINT   0x00000020 /* capture interrupt */
 
#define ICH_NVSPINT   0x00000010 /* nforce spdif interrupt */
 
#define ICH_MOINT   0x00000004 /* modem playback interrupt */
 
#define ICH_MIINT   0x00000002 /* modem capture interrupt */
 
#define ICH_GSCI   0x00000001 /* GPI status change interrupt */
 
#define ICH_REG_ACC_SEMA   0x34 /* byte - codec write semaphore */
 
#define ICH_CAS   0x01 /* codec access semaphore */
 
#define ICH_REG_SDM   0x80
 
#define ICH_DI2L_MASK   0x000000c0 /* PCM In 2, Mic In 2 data in line */
 
#define ICH_DI2L_SHIFT   6
 
#define ICH_DI1L_MASK   0x00000030 /* PCM In 1, Mic In 1 data in line */
 
#define ICH_DI1L_SHIFT   4
 
#define ICH_SE   0x00000008 /* steer enable */
 
#define ICH_LDI_MASK   0x00000003 /* last codec read data input */
 
#define ICH_MAX_FRAGS   32 /* max hw frags */
 
#define ALI_CAS_SEM_BUSY   0x80000000
 
#define ALI_CPR_ADDR_SECONDARY   0x100
 
#define ALI_CPR_ADDR_READ   0x80
 
#define ALI_CSPSR_CODEC_READY   0x08
 
#define ALI_CSPSR_READ_OK   0x02
 
#define ALI_CSPSR_WRITE_OK   0x01
 
#define ALI_INT_MICIN2   (1<<26)
 
#define ALI_INT_PCMIN2   (1<<25)
 
#define ALI_INT_I2SIN   (1<<24)
 
#define ALI_INT_SPDIFOUT   (1<<23) /* controller spdif out INTERRUPT */
 
#define ALI_INT_SPDIFIN   (1<<22)
 
#define ALI_INT_LFEOUT   (1<<21)
 
#define ALI_INT_CENTEROUT   (1<<20)
 
#define ALI_INT_CODECSPDIFOUT   (1<<19)
 
#define ALI_INT_MICIN   (1<<18)
 
#define ALI_INT_PCMOUT   (1<<17)
 
#define ALI_INT_PCMIN   (1<<16)
 
#define ALI_INT_CPRAIS   (1<<7) /* command port available */
 
#define ALI_INT_SPRAIS   (1<<5) /* status port available */
 
#define ALI_INT_GPIO   (1<<1)
 
#define ALI_INT_MASK
 
#define ICH_ALI_SC_RESET   (1<<31) /* master reset */
 
#define ICH_ALI_SC_AC97_DBL   (1<<30)
 
#define ICH_ALI_SC_CODEC_SPDF   (3<<20) /* 1=7/8, 2=6/9, 3=10/11 */
 
#define ICH_ALI_SC_IN_BITS   (3<<18)
 
#define ICH_ALI_SC_OUT_BITS   (3<<16)
 
#define ICH_ALI_SC_6CH_CFG   (3<<14)
 
#define ICH_ALI_SC_PCM_4   (1<<8)
 
#define ICH_ALI_SC_PCM_6   (2<<8)
 
#define ICH_ALI_SC_PCM_246_MASK   (3<<8)
 
#define ICH_ALI_SS_SEC_ID   (3<<5)
 
#define ICH_ALI_SS_PRI_ID   (3<<3)
 
#define ICH_ALI_IF_AC97SP   (1<<21)
 
#define ICH_ALI_IF_MC   (1<<20)
 
#define ICH_ALI_IF_PI   (1<<19)
 
#define ICH_ALI_IF_MC2   (1<<18)
 
#define ICH_ALI_IF_PI2   (1<<17)
 
#define ICH_ALI_IF_LINE_SRC   (1<<15) /* 0/1 = slot 3/6 */
 
#define ICH_ALI_IF_MIC_SRC   (1<<14) /* 0/1 = slot 3/6 */
 
#define ICH_ALI_IF_SPDF_SRC   (3<<12) /* 00 = PCM, 01 = AC97-in, 10 = spdif-in, 11 = i2s */
 
#define ICH_ALI_IF_AC97_OUT   (3<<8) /* 00 = PCM, 10 = spdif-in, 11 = i2s */
 
#define ICH_ALI_IF_PO_SPDF   (1<<3)
 
#define ICH_ALI_IF_PO   (1<<1)
 
#define get_ichdev(substream)   (substream->runtime->private_data)
 
#define fill_nocache(buf, size, nocache)   do { ; } while (0)
 
#define snd_intel8x0_ich_chip_cold_reset(chip)   0
 
#define snd_intel8x0_ich_chip_can_cold_reset(chip)   (0)
 
#define INTEL8X0_PM_OPS   NULL
 
#define INTEL8X0_TESTBUF_SIZE   32768 /* enough large for one shot */
 
#define snd_intel8x0_proc_init(x)
 

Enumerations

enum  {
  DEVICE_INTEL, DEVICE_INTEL_ICH4, DEVICE_SIS, DEVICE_ALI,
  DEVICE_NFORCE
}
 
enum  {
  ICH_REG_ALI_SCR = 0x00, ICH_REG_ALI_SSR = 0x04, ICH_REG_ALI_DMACR = 0x08, ICH_REG_ALI_FIFOCR1 = 0x0c,
  ICH_REG_ALI_INTERFACECR = 0x10, ICH_REG_ALI_INTERRUPTCR = 0x14, ICH_REG_ALI_INTERRUPTSR = 0x18, ICH_REG_ALI_FIFOCR2 = 0x1c,
  ICH_REG_ALI_CPR = 0x20, ICH_REG_ALI_CPR_ADDR = 0x22, ICH_REG_ALI_SPR = 0x24, ICH_REG_ALI_SPR_ADDR = 0x26,
  ICH_REG_ALI_FIFOCR3 = 0x2c, ICH_REG_ALI_TTSR = 0x30, ICH_REG_ALI_RTSR = 0x34, ICH_REG_ALI_CSPSR = 0x38,
  ICH_REG_ALI_CAS = 0x3c, ICH_REG_ALI_HWVOL = 0xf0, ICH_REG_ALI_I2SCR = 0xf4, ICH_REG_ALI_SPDIFCSR = 0xf8,
  ICH_REG_ALI_SPDIFICS = 0xfc
}
 
enum  {
  ICHD_PCMIN, ICHD_PCMOUT, ICHD_MIC, ICHD_MIC2,
  ICHD_PCM2IN, ICHD_SPBAR, ICHD_LAST = ICHD_SPBAR
}
 
enum  {
  NVD_PCMIN, NVD_PCMOUT, NVD_MIC, NVD_SPBAR,
  NVD_LAST = NVD_SPBAR
}
 
enum  {
  ALID_PCMIN, ALID_PCMOUT, ALID_MIC, ALID_AC97SPDIFOUT,
  ALID_SPDIFIN, ALID_SPDIFOUT, ALID_LAST = ALID_SPDIFOUT
}
 

Functions

 MODULE_AUTHOR ("Jaroslav Kysela <[email protected]>")
 
 MODULE_DESCRIPTION ("Intel 82801AA,82901AB,i810,i820,i830,i840,i845,MX440; SiS 7012; Ali 5455")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_SUPPORTED_DEVICE ("{{Intel,82801AA-ICH},""{Intel,82901AB-ICH0},""{Intel,82801BA-ICH2},""{Intel,82801CA-ICH3},""{Intel,82801DB-ICH4},""{Intel,ICH5},""{Intel,ICH6},""{Intel,ICH7},""{Intel,6300ESB},""{Intel,ESB2},""{Intel,MX440},""{SiS,SI7012},""{NVidia,nForce Audio},""{NVidia,nForce2 Audio},""{NVidia,nForce3 Audio},""{NVidia,MCP04},""{NVidia,MCP501},""{NVidia,CK804},""{NVidia,CK8},""{NVidia,CK8S},""{AMD,AMD768},""{AMD,AMD8111},""{ALI,M5455}}")
 
 module_param (index, int, 0444)
 
 MODULE_PARM_DESC (index,"Index value for Intel i8x0 soundcard.")
 
 module_param (id, charp, 0444)
 
 MODULE_PARM_DESC (id,"ID string for Intel i8x0 soundcard.")
 
 module_param (ac97_clock, int, 0444)
 
 MODULE_PARM_DESC (ac97_clock,"AC'97 codec clock (0 = whitelist + auto-detect, 1 = force autodetect).")
 
 module_param (ac97_quirk, charp, 0444)
 
 MODULE_PARM_DESC (ac97_quirk,"AC'97 workaround for strange hardware.")
 
 module_param (buggy_semaphore, bool, 0444)
 
 MODULE_PARM_DESC (buggy_semaphore,"Enable workaround for hardwares with problematic codec semaphores.")
 
 module_param (buggy_irq, bint, 0444)
 
 MODULE_PARM_DESC (buggy_irq,"Enable workaround for buggy interrupts on some motherboards.")
 
 module_param (xbox, bool, 0444)
 
 MODULE_PARM_DESC (xbox,"Set to 1 for Xbox, if you have problems with the AC'97 codec detection.")
 
 module_param (spdif_aclink, int, 0444)
 
 MODULE_PARM_DESC (spdif_aclink,"S/PDIF over AC-link.")
 
 module_param (inside_vm, bint, 0444)
 
 MODULE_PARM_DESC (inside_vm,"KVM/Parallels optimization.")
 
 module_param (enable, bool, 0444)
 
 module_param (joystick, int, 0444)
 
 DEFINE_REGSET (OFF, 0)
 
 DEFINE_REGSET (PI, 0x00)
 
 DEFINE_REGSET (PO, 0x10)
 
 DEFINE_REGSET (MC, 0x20)
 
 DEFINE_REGSET (MC2, 0x40)
 
 DEFINE_REGSET (PI2, 0x50)
 
 DEFINE_REGSET (SP, 0x60)
 
 DEFINE_REGSET (AL_PI, 0x40)
 
 DEFINE_REGSET (AL_PO, 0x50)
 
 DEFINE_REGSET (AL_MC, 0x60)
 
 DEFINE_REGSET (AL_CDC_SPO, 0x70)
 
 DEFINE_REGSET (AL_CENTER, 0x80)
 
 DEFINE_REGSET (AL_LFE, 0x90)
 
 DEFINE_REGSET (AL_CLR_SPI, 0xa0)
 
 DEFINE_REGSET (AL_CLR_SPO, 0xb0)
 
 DEFINE_REGSET (AL_I2S, 0xc0)
 
 DEFINE_REGSET (AL_PI2, 0xd0)
 
 DEFINE_REGSET (AL_MC2, 0xe0)
 
 MODULE_DEVICE_TABLE (pci, snd_intel8x0_ids)
 
 module_pci_driver (intel8x0_driver)
 

Macro Definition Documentation

#define ALI_CAS_SEM_BUSY   0x80000000

Definition at line 272 of file intel8x0.c.

#define ALI_CPR_ADDR_READ   0x80

Definition at line 274 of file intel8x0.c.

#define ALI_CPR_ADDR_SECONDARY   0x100

Definition at line 273 of file intel8x0.c.

#define ALI_CSPSR_CODEC_READY   0x08

Definition at line 275 of file intel8x0.c.

#define ALI_CSPSR_READ_OK   0x02

Definition at line 276 of file intel8x0.c.

#define ALI_CSPSR_WRITE_OK   0x01

Definition at line 277 of file intel8x0.c.

#define ALI_INT_CENTEROUT   (1<<20)

Definition at line 287 of file intel8x0.c.

#define ALI_INT_CODECSPDIFOUT   (1<<19)

Definition at line 288 of file intel8x0.c.

#define ALI_INT_CPRAIS   (1<<7) /* command port available */

Definition at line 292 of file intel8x0.c.

#define ALI_INT_GPIO   (1<<1)

Definition at line 294 of file intel8x0.c.

#define ALI_INT_I2SIN   (1<<24)

Definition at line 283 of file intel8x0.c.

#define ALI_INT_LFEOUT   (1<<21)

Definition at line 286 of file intel8x0.c.

#define ALI_INT_MASK
Value:

Definition at line 295 of file intel8x0.c.

#define ALI_INT_MICIN   (1<<18)

Definition at line 289 of file intel8x0.c.

#define ALI_INT_MICIN2   (1<<26)

Definition at line 281 of file intel8x0.c.

#define ALI_INT_PCMIN   (1<<16)

Definition at line 291 of file intel8x0.c.

#define ALI_INT_PCMIN2   (1<<25)

Definition at line 282 of file intel8x0.c.

#define ALI_INT_PCMOUT   (1<<17)

Definition at line 290 of file intel8x0.c.

#define ALI_INT_SPDIFIN   (1<<22)

Definition at line 285 of file intel8x0.c.

#define ALI_INT_SPDIFOUT   (1<<23) /* controller spdif out INTERRUPT */

Definition at line 284 of file intel8x0.c.

#define ALI_INT_SPRAIS   (1<<5) /* status port available */

Definition at line 293 of file intel8x0.c.

#define DEFINE_REGSET (   name,
  base 
)
Value:
enum { \
ICH_REG_##name##_BDBAR = base + 0x0, /* dword - buffer descriptor list base address */ \
ICH_REG_##name##_CIV = base + 0x04, /* byte - current index value */ \
ICH_REG_##name##_LVI = base + 0x05, /* byte - last valid index */ \
ICH_REG_##name##_SR = base + 0x06, /* byte - status register */ \
ICH_REG_##name##_PICB = base + 0x08, /* word - position in current buffer */ \
ICH_REG_##name##_PIV = base + 0x0a, /* byte - prefetched index value */ \
ICH_REG_##name##_CR = base + 0x0b, /* byte - control register */ \
};

Definition at line 120 of file intel8x0.c.

#define fill_nocache (   buf,
  size,
  nocache 
)    do { ; } while (0)

Definition at line 740 of file intel8x0.c.

#define get_ichdev (   substream)    (substream->runtime->private_data)

Definition at line 353 of file intel8x0.c.

#define ICH_AC97COLD   0x00000002 /* AC'97 cold reset */

Definition at line 187 of file intel8x0.c.

#define ICH_AC97WARM   0x00000004 /* AC'97 warm reset */

Definition at line 186 of file intel8x0.c.

#define ICH_ACLINK   0x00000008 /* AClink shut off */

Definition at line 185 of file intel8x0.c.

#define ICH_AD3   0x00010000 /* audio power down semaphore */

Definition at line 202 of file intel8x0.c.

#define ICH_ALI_IF_AC97_OUT   (3<<8) /* 00 = PCM, 10 = spdif-in, 11 = i2s */

Definition at line 319 of file intel8x0.c.

#define ICH_ALI_IF_AC97SP   (1<<21)

Definition at line 311 of file intel8x0.c.

#define ICH_ALI_IF_LINE_SRC   (1<<15) /* 0/1 = slot 3/6 */

Definition at line 316 of file intel8x0.c.

#define ICH_ALI_IF_MC   (1<<20)

Definition at line 312 of file intel8x0.c.

#define ICH_ALI_IF_MC2   (1<<18)

Definition at line 314 of file intel8x0.c.

#define ICH_ALI_IF_MIC_SRC   (1<<14) /* 0/1 = slot 3/6 */

Definition at line 317 of file intel8x0.c.

#define ICH_ALI_IF_PI   (1<<19)

Definition at line 313 of file intel8x0.c.

#define ICH_ALI_IF_PI2   (1<<17)

Definition at line 315 of file intel8x0.c.

#define ICH_ALI_IF_PO   (1<<1)

Definition at line 321 of file intel8x0.c.

#define ICH_ALI_IF_PO_SPDF   (1<<3)

Definition at line 320 of file intel8x0.c.

#define ICH_ALI_IF_SPDF_SRC   (3<<12) /* 00 = PCM, 01 = AC97-in, 10 = spdif-in, 11 = i2s */

Definition at line 318 of file intel8x0.c.

#define ICH_ALI_SC_6CH_CFG   (3<<14)

Definition at line 303 of file intel8x0.c.

#define ICH_ALI_SC_AC97_DBL   (1<<30)

Definition at line 299 of file intel8x0.c.

#define ICH_ALI_SC_CODEC_SPDF   (3<<20) /* 1=7/8, 2=6/9, 3=10/11 */

Definition at line 300 of file intel8x0.c.

#define ICH_ALI_SC_IN_BITS   (3<<18)

Definition at line 301 of file intel8x0.c.

#define ICH_ALI_SC_OUT_BITS   (3<<16)

Definition at line 302 of file intel8x0.c.

#define ICH_ALI_SC_PCM_246_MASK   (3<<8)

Definition at line 306 of file intel8x0.c.

#define ICH_ALI_SC_PCM_4   (1<<8)

Definition at line 304 of file intel8x0.c.

#define ICH_ALI_SC_PCM_6   (2<<8)

Definition at line 305 of file intel8x0.c.

#define ICH_ALI_SC_RESET   (1<<31) /* master reset */

Definition at line 298 of file intel8x0.c.

#define ICH_ALI_SS_PRI_ID   (3<<3)

Definition at line 309 of file intel8x0.c.

#define ICH_ALI_SS_SEC_ID   (3<<5)

Definition at line 308 of file intel8x0.c.

#define ICH_BCIS   0x08 /* buffer completion interrupt status */

Definition at line 149 of file intel8x0.c.

#define ICH_BCS   0x08000000 /* ICH4: bit clock stopped */

Definition at line 192 of file intel8x0.c.

#define ICH_BIT1   0x00001000 /* bit 1 slot 12 */

Definition at line 206 of file intel8x0.c.

#define ICH_BIT2   0x00002000 /* bit 2 slot 12 */

Definition at line 205 of file intel8x0.c.

#define ICH_BIT3   0x00004000 /* bit 3 slot 12 */

Definition at line 204 of file intel8x0.c.

#define ICH_CAS   0x01 /* codec access semaphore */

Definition at line 219 of file intel8x0.c.

#define ICH_CELV   0x02 /* current equals last valid */

Definition at line 151 of file intel8x0.c.

#define ICH_DCH   0x01 /* DMA controller halted */

Definition at line 152 of file intel8x0.c.

#define ICH_DI1L_MASK   0x00000030 /* PCM In 1, Mic In 1 data in line */

Definition at line 223 of file intel8x0.c.

#define ICH_DI1L_SHIFT   4

Definition at line 224 of file intel8x0.c.

#define ICH_DI2L_MASK   0x000000c0 /* PCM In 2, Mic In 2 data in line */

Definition at line 221 of file intel8x0.c.

#define ICH_DI2L_SHIFT   6

Definition at line 222 of file intel8x0.c.

#define ICH_FEIE   0x08 /* fifo error interrupt enable */

Definition at line 159 of file intel8x0.c.

#define ICH_FIFOE   0x10 /* FIFO error */

Definition at line 148 of file intel8x0.c.

#define ICH_GIE   0x00000001 /* GPI interrupt enable */

Definition at line 188 of file intel8x0.c.

#define ICH_GSCI   0x00000001 /* GPI status change interrupt */

Definition at line 217 of file intel8x0.c.

#define ICH_IOCE   0x10 /* interrupt on completion enable */

Definition at line 158 of file intel8x0.c.

#define ICH_LDI_MASK   0x00000003 /* last codec read data input */

Definition at line 226 of file intel8x0.c.

#define ICH_LVBCI   0x04 /* last valid buffer completion interrupt */

Definition at line 150 of file intel8x0.c.

#define ICH_LVBIE   0x04 /* last valid buffer interrupt enable */

Definition at line 160 of file intel8x0.c.

#define ICH_M2INT   0x01000000 /* ICH4: Mic2-In interrupt */

Definition at line 195 of file intel8x0.c.

#define ICH_MAX_FRAGS   32 /* max hw frags */

Definition at line 228 of file intel8x0.c.

#define ICH_MCINT   0x00000080 /* MIC capture interrupt */

Definition at line 211 of file intel8x0.c.

#define ICH_MD3   0x00020000 /* modem power down semaphore */

Definition at line 201 of file intel8x0.c.

#define ICH_MIINT   0x00000002 /* modem capture interrupt */

Definition at line 216 of file intel8x0.c.

#define ICH_MOINT   0x00000004 /* modem playback interrupt */

Definition at line 215 of file intel8x0.c.

#define ICH_MULTICHAN_CAP   0x00300000 /* ICH4: multi-channel capability bits (RO) */

Definition at line 198 of file intel8x0.c.

#define ICH_NVSPINT   0x00000010 /* nforce spdif interrupt */

Definition at line 214 of file intel8x0.c.

#define ICH_P2INT   0x02000000 /* ICH4: PCM2-In interrupt */

Definition at line 194 of file intel8x0.c.

#define ICH_PCM_2   0x00000000 /* 2 channels (stereo) */

Definition at line 177 of file intel8x0.c.

#define ICH_PCM_20BIT   0x00400000 /* 20-bit samples (ICH4) */

Definition at line 172 of file intel8x0.c.

#define ICH_PCM_246_MASK   0x00300000 /* chan mask (not all chips) */

Definition at line 173 of file intel8x0.c.

#define ICH_PCM_4   0x00100000 /* 4 channels (not all chips) */

Definition at line 176 of file intel8x0.c.

#define ICH_PCM_6   0x00200000 /* 6 channels (not all chips) */

Definition at line 175 of file intel8x0.c.

#define ICH_PCM_8   0x00300000 /* 8 channels (not all chips) */

Definition at line 174 of file intel8x0.c.

#define ICH_PCM_SPDIF_1011   0xc0000000 /* s/pdif pcm on slots 10&11 */

Definition at line 171 of file intel8x0.c.

#define ICH_PCM_SPDIF_69   0x80000000 /* s/pdif pcm on slots 6&9 */

Definition at line 170 of file intel8x0.c.

#define ICH_PCM_SPDIF_78   0x40000000 /* s/pdif pcm on slots 7&8 */

Definition at line 169 of file intel8x0.c.

#define ICH_PCM_SPDIF_MASK   0xc0000000 /* s/pdif pcm slot mask (ICH4) */

Definition at line 167 of file intel8x0.c.

#define ICH_PCM_SPDIF_NONE   0x00000000 /* reserved - undefined */

Definition at line 168 of file intel8x0.c.

#define ICH_PCR   0x00000100 /* primary (AC_SDIN0) codec ready */

Definition at line 210 of file intel8x0.c.

#define ICH_PIINT   0x00000020 /* capture interrupt */

Definition at line 213 of file intel8x0.c.

#define ICH_POINT   0x00000040 /* playback interrupt */

Definition at line 212 of file intel8x0.c.

#define ICH_PRI   0x00000400 /* primary (AC_SDIN0) resume interrupt */

Definition at line 208 of file intel8x0.c.

#define ICH_PRIE   0x00000010 /* primary resume interrupt enable */

Definition at line 184 of file intel8x0.c.

#define ICH_RCS   0x00008000 /* read completion status */

Definition at line 203 of file intel8x0.c.

#define ICH_REG_ACC_SEMA   0x34 /* byte - codec write semaphore */

Definition at line 218 of file intel8x0.c.

#define ICH_REG_GLOB_CNT   0x2c /* dword - global control */

Definition at line 166 of file intel8x0.c.

#define ICH_REG_GLOB_STA   0x30 /* dword - global status */

Definition at line 189 of file intel8x0.c.

#define ICH_REG_LVI_MASK   0x1f

Definition at line 145 of file intel8x0.c.

#define ICH_REG_PIV_MASK   0x1f /* mask */

Definition at line 155 of file intel8x0.c.

#define ICH_REG_SDM   0x80

Definition at line 220 of file intel8x0.c.

#define ICH_RESETREGS   0x02 /* reset busmaster registers */

Definition at line 161 of file intel8x0.c.

#define ICH_SAMPLE_16_20   0x00400000 /* ICH4: 16- and 20-bit samples */

Definition at line 197 of file intel8x0.c.

#define ICH_SAMPLE_CAP   0x00c00000 /* ICH4: sample capability bits (RO) */

Definition at line 196 of file intel8x0.c.

#define ICH_SCR   0x00000200 /* secondary (AC_SDIN1) codec ready */

Definition at line 209 of file intel8x0.c.

#define ICH_SE   0x00000008 /* steer enable */

Definition at line 225 of file intel8x0.c.

#define ICH_SIS_PCM_2   0x00000000 /* 2 channels (SIS7012) */

Definition at line 181 of file intel8x0.c.

#define ICH_SIS_PCM_246_MASK   0x000000c0 /* 6 channels (SIS7012) */

Definition at line 178 of file intel8x0.c.

#define ICH_SIS_PCM_4   0x00000040 /* 4 channels (SIS7012) */

Definition at line 180 of file intel8x0.c.

#define ICH_SIS_PCM_6   0x00000080 /* 6 channels (SIS7012) */

Definition at line 179 of file intel8x0.c.

#define ICH_SIS_TCR   0x00040000 /* SIS: tertiary codec ready */

Definition at line 200 of file intel8x0.c.

#define ICH_SIS_TRI   0x00080000 /* SIS: tertiary resume irq */

Definition at line 199 of file intel8x0.c.

#define ICH_SPINT   0x04000000 /* ICH4: S/PDIF interrupt */

Definition at line 193 of file intel8x0.c.

#define ICH_SRI   0x00000800 /* secondary (AC_SDIN1) resume interrupt */

Definition at line 207 of file intel8x0.c.

#define ICH_SRIE   0x00000020 /* secondary resume interrupt enable */

Definition at line 183 of file intel8x0.c.

#define ICH_STARTBM   0x01 /* start busmaster operation */

Definition at line 162 of file intel8x0.c.

#define ICH_TCR   0x10000000 /* ICH4: tertiary (AC_SDIN2) codec ready */

Definition at line 191 of file intel8x0.c.

#define ICH_TRI   0x20000000 /* ICH4: tertiary (AC_SDIN2) resume interrupt */

Definition at line 190 of file intel8x0.c.

#define ICH_TRIE   0x00000040 /* tertiary resume interrupt enable */

Definition at line 182 of file intel8x0.c.

#define ICHREG (   x)    ICH_REG_##x

Definition at line 118 of file intel8x0.c.

#define INTEL8X0_PM_OPS   NULL

Definition at line 2763 of file intel8x0.c.

#define INTEL8X0_TESTBUF_SIZE   32768 /* enough large for one shot */

Definition at line 2766 of file intel8x0.c.

#define kvm_para_available (   void)    (0)

Definition at line 48 of file intel8x0.c.

#define snd_intel8x0_ich_chip_can_cold_reset (   chip)    (0)

Definition at line 2426 of file intel8x0.c.

#define snd_intel8x0_ich_chip_cold_reset (   chip)    0

Definition at line 2425 of file intel8x0.c.

#define snd_intel8x0_proc_init (   x)

Definition at line 2952 of file intel8x0.c.

Enumeration Type Documentation

anonymous enum
Enumerator:
DEVICE_INTEL 
DEVICE_INTEL_ICH4 
DEVICE_SIS 
DEVICE_ALI 
DEVICE_NFORCE 

Definition at line 116 of file intel8x0.c.

anonymous enum
Enumerator:
ICH_REG_ALI_SCR 
ICH_REG_ALI_SSR 
ICH_REG_ALI_DMACR 
ICH_REG_ALI_FIFOCR1 
ICH_REG_ALI_INTERFACECR 
ICH_REG_ALI_INTERRUPTCR 
ICH_REG_ALI_INTERRUPTSR 
ICH_REG_ALI_FIFOCR2 
ICH_REG_ALI_CPR 
ICH_REG_ALI_CPR_ADDR 
ICH_REG_ALI_SPR 
ICH_REG_ALI_SPR_ADDR 
ICH_REG_ALI_FIFOCR3 
ICH_REG_ALI_TTSR 
ICH_REG_ALI_RTSR 
ICH_REG_ALI_CSPSR 
ICH_REG_ALI_CAS 
ICH_REG_ALI_HWVOL 
ICH_REG_ALI_I2SCR 
ICH_REG_ALI_SPDIFCSR 
ICH_REG_ALI_SPDIFICS 

Definition at line 248 of file intel8x0.c.

anonymous enum
Enumerator:
ICHD_PCMIN 
ICHD_PCMOUT 
ICHD_MIC 
ICHD_MIC2 
ICHD_PCM2IN 
ICHD_SPBAR 
ICHD_LAST 

Definition at line 327 of file intel8x0.c.

anonymous enum
Enumerator:
NVD_PCMIN 
NVD_PCMOUT 
NVD_MIC 
NVD_SPBAR 
NVD_LAST 

Definition at line 336 of file intel8x0.c.

anonymous enum
Enumerator:
ALID_PCMIN 
ALID_PCMOUT 
ALID_MIC 
ALID_AC97SPDIFOUT 
ALID_SPDIFIN 
ALID_SPDIFOUT 
ALID_LAST 

Definition at line 343 of file intel8x0.c.

Function Documentation

DEFINE_REGSET ( OFF  ,
 
)
DEFINE_REGSET ( PI  ,
0x00   
)
DEFINE_REGSET ( PO  ,
0x10   
)
DEFINE_REGSET ( MC  ,
0x20   
)
DEFINE_REGSET ( MC2  ,
0x40   
)
DEFINE_REGSET ( PI2  ,
0x50   
)
DEFINE_REGSET ( SP  ,
0x60   
)
DEFINE_REGSET ( AL_PI  ,
0x40   
)
DEFINE_REGSET ( AL_PO  ,
0x50   
)
DEFINE_REGSET ( AL_MC  ,
0x60   
)
DEFINE_REGSET ( AL_CDC_SPO  ,
0x70   
)
DEFINE_REGSET ( AL_CENTER  ,
0x80   
)
DEFINE_REGSET ( AL_LFE  ,
0x90   
)
DEFINE_REGSET ( AL_CLR_SPI  ,
0xa0   
)
DEFINE_REGSET ( AL_CLR_SPO  ,
0xb0   
)
DEFINE_REGSET ( AL_I2S  ,
0xc0   
)
DEFINE_REGSET ( AL_PI2  ,
0xd0   
)
DEFINE_REGSET ( AL_MC2  ,
0xe0   
)
MODULE_AUTHOR ( "Jaroslav Kysela <[email protected]>"  )
MODULE_DESCRIPTION ( "Intel  82801AA,
82901AB  ,
i810  ,
i820  ,
i830  ,
i840  ,
i845  ,
MX440;SiS 7012;Ali 5455"   
)
MODULE_DEVICE_TABLE ( pci  ,
snd_intel8x0_ids   
)
MODULE_LICENSE ( "GPL"  )
module_param ( index  ,
int  ,
0444   
)
module_param ( id  ,
charp  ,
0444   
)
module_param ( ac97_clock  ,
int  ,
0444   
)
module_param ( ac97_quirk  ,
charp  ,
0444   
)
module_param ( buggy_semaphore  ,
bool  ,
0444   
)
module_param ( buggy_irq  ,
bint  ,
0444   
)
module_param ( xbox  ,
bool  ,
0444   
)
module_param ( spdif_aclink  ,
int  ,
0444   
)
module_param ( inside_vm  ,
bint  ,
0444   
)
module_param ( enable  ,
bool  ,
0444   
)
module_param ( joystick  ,
int  ,
0444   
)
MODULE_PARM_DESC ( index  ,
"Index value for Intel i8x0 soundcard."   
)
MODULE_PARM_DESC ( id  ,
"ID string for Intel i8x0 soundcard."   
)
MODULE_PARM_DESC ( ac97_clock  ,
"AC'97 codec clock (0 = whitelist + auto-detect, 1 = force autodetect)."   
)
MODULE_PARM_DESC ( ac97_quirk  ,
"AC'97 workaround for strange hardware."   
)
MODULE_PARM_DESC ( buggy_semaphore  ,
"Enable workaround for hardwares with problematic codec semaphores."   
)
MODULE_PARM_DESC ( buggy_irq  ,
"Enable workaround for buggy interrupts on some motherboards."   
)
MODULE_PARM_DESC ( xbox  ,
"Set to 1 for  Xbox,
if you have problems with the AC'97 codec detection."   
)
MODULE_PARM_DESC ( spdif_aclink  ,
"S/PDIF over AC-link."   
)
MODULE_PARM_DESC ( inside_vm  ,
"KVM/Parallels optimization."   
)
module_pci_driver ( intel8x0_driver  )
MODULE_SUPPORTED_DEVICE ( "{{Intel,82801AA-ICH},""{Intel,82901AB-ICH0},""{Intel,82801BA-ICH2},""{Intel,82801CA-ICH3},""{Intel,82801DB-ICH4},""{Intel,ICH5},""{Intel,ICH6},""{Intel,ICH7},""{Intel,6300ESB},""{Intel,ESB2},""{Intel,MX440},""{SiS,SI7012},""{NVidia,nForce Audio},""{NVidia,nForce2 Audio},""{NVidia,nForce3 Audio},""{NVidia,MCP04},""{NVidia,MCP501},""{NVidia,CK804},""{NVidia,CK8},""{NVidia,CK8S},""{AMD,AMD768},""{AMD,AMD8111},""{ALI,M5455}}"  )