Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
atiixp.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 <linux/mutex.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/info.h>
#include <sound/ac97_codec.h>
#include <sound/initval.h>

Go to the source code of this file.

Data Structures

struct  atiixp_dma_desc
 
struct  atiixp_dma_ops
 
struct  atiixp_dma
 
struct  atiixp
 

Macros

#define ATI_REG_ISR   0x00 /* interrupt source */
 
#define ATI_REG_ISR_IN_XRUN   (1U<<0)
 
#define ATI_REG_ISR_IN_STATUS   (1U<<1)
 
#define ATI_REG_ISR_OUT_XRUN   (1U<<2)
 
#define ATI_REG_ISR_OUT_STATUS   (1U<<3)
 
#define ATI_REG_ISR_SPDF_XRUN   (1U<<4)
 
#define ATI_REG_ISR_SPDF_STATUS   (1U<<5)
 
#define ATI_REG_ISR_PHYS_INTR   (1U<<8)
 
#define ATI_REG_ISR_PHYS_MISMATCH   (1U<<9)
 
#define ATI_REG_ISR_CODEC0_NOT_READY   (1U<<10)
 
#define ATI_REG_ISR_CODEC1_NOT_READY   (1U<<11)
 
#define ATI_REG_ISR_CODEC2_NOT_READY   (1U<<12)
 
#define ATI_REG_ISR_NEW_FRAME   (1U<<13)
 
#define ATI_REG_IER   0x04 /* interrupt enable */
 
#define ATI_REG_IER_IN_XRUN_EN   (1U<<0)
 
#define ATI_REG_IER_IO_STATUS_EN   (1U<<1)
 
#define ATI_REG_IER_OUT_XRUN_EN   (1U<<2)
 
#define ATI_REG_IER_OUT_XRUN_COND   (1U<<3)
 
#define ATI_REG_IER_SPDF_XRUN_EN   (1U<<4)
 
#define ATI_REG_IER_SPDF_STATUS_EN   (1U<<5)
 
#define ATI_REG_IER_PHYS_INTR_EN   (1U<<8)
 
#define ATI_REG_IER_PHYS_MISMATCH_EN   (1U<<9)
 
#define ATI_REG_IER_CODEC0_INTR_EN   (1U<<10)
 
#define ATI_REG_IER_CODEC1_INTR_EN   (1U<<11)
 
#define ATI_REG_IER_CODEC2_INTR_EN   (1U<<12)
 
#define ATI_REG_IER_NEW_FRAME_EN   (1U<<13) /* (RO */
 
#define ATI_REG_IER_SET_BUS_BUSY   (1U<<14) /* (WO) audio is running */
 
#define ATI_REG_CMD   0x08 /* command */
 
#define ATI_REG_CMD_POWERDOWN   (1U<<0)
 
#define ATI_REG_CMD_RECEIVE_EN   (1U<<1)
 
#define ATI_REG_CMD_SEND_EN   (1U<<2)
 
#define ATI_REG_CMD_STATUS_MEM   (1U<<3)
 
#define ATI_REG_CMD_SPDF_OUT_EN   (1U<<4)
 
#define ATI_REG_CMD_SPDF_STATUS_MEM   (1U<<5)
 
#define ATI_REG_CMD_SPDF_THRESHOLD   (3U<<6)
 
#define ATI_REG_CMD_SPDF_THRESHOLD_SHIFT   6
 
#define ATI_REG_CMD_IN_DMA_EN   (1U<<8)
 
#define ATI_REG_CMD_OUT_DMA_EN   (1U<<9)
 
#define ATI_REG_CMD_SPDF_DMA_EN   (1U<<10)
 
#define ATI_REG_CMD_SPDF_OUT_STOPPED   (1U<<11)
 
#define ATI_REG_CMD_SPDF_CONFIG_MASK   (7U<<12)
 
#define ATI_REG_CMD_SPDF_CONFIG_34   (1U<<12)
 
#define ATI_REG_CMD_SPDF_CONFIG_78   (2U<<12)
 
#define ATI_REG_CMD_SPDF_CONFIG_69   (3U<<12)
 
#define ATI_REG_CMD_SPDF_CONFIG_01   (4U<<12)
 
#define ATI_REG_CMD_INTERLEAVE_SPDF   (1U<<16)
 
#define ATI_REG_CMD_AUDIO_PRESENT   (1U<<20)
 
#define ATI_REG_CMD_INTERLEAVE_IN   (1U<<21)
 
#define ATI_REG_CMD_INTERLEAVE_OUT   (1U<<22)
 
#define ATI_REG_CMD_LOOPBACK_EN   (1U<<23)
 
#define ATI_REG_CMD_PACKED_DIS   (1U<<24)
 
#define ATI_REG_CMD_BURST_EN   (1U<<25)
 
#define ATI_REG_CMD_PANIC_EN   (1U<<26)
 
#define ATI_REG_CMD_MODEM_PRESENT   (1U<<27)
 
#define ATI_REG_CMD_ACLINK_ACTIVE   (1U<<28)
 
#define ATI_REG_CMD_AC_SOFT_RESET   (1U<<29)
 
#define ATI_REG_CMD_AC_SYNC   (1U<<30)
 
#define ATI_REG_CMD_AC_RESET   (1U<<31)
 
#define ATI_REG_PHYS_OUT_ADDR   0x0c
 
#define ATI_REG_PHYS_OUT_CODEC_MASK   (3U<<0)
 
#define ATI_REG_PHYS_OUT_RW   (1U<<2)
 
#define ATI_REG_PHYS_OUT_ADDR_EN   (1U<<8)
 
#define ATI_REG_PHYS_OUT_ADDR_SHIFT   9
 
#define ATI_REG_PHYS_OUT_DATA_SHIFT   16
 
#define ATI_REG_PHYS_IN_ADDR   0x10
 
#define ATI_REG_PHYS_IN_READ_FLAG   (1U<<8)
 
#define ATI_REG_PHYS_IN_ADDR_SHIFT   9
 
#define ATI_REG_PHYS_IN_DATA_SHIFT   16
 
#define ATI_REG_SLOTREQ   0x14
 
#define ATI_REG_COUNTER   0x18
 
#define ATI_REG_COUNTER_SLOT   (3U<<0) /* slot # */
 
#define ATI_REG_COUNTER_BITCLOCK   (31U<<8)
 
#define ATI_REG_IN_FIFO_THRESHOLD   0x1c
 
#define ATI_REG_IN_DMA_LINKPTR   0x20
 
#define ATI_REG_IN_DMA_DT_START   0x24 /* RO */
 
#define ATI_REG_IN_DMA_DT_NEXT   0x28 /* RO */
 
#define ATI_REG_IN_DMA_DT_CUR   0x2c /* RO */
 
#define ATI_REG_IN_DMA_DT_SIZE   0x30
 
#define ATI_REG_OUT_DMA_SLOT   0x34
 
#define ATI_REG_OUT_DMA_SLOT_BIT(x)   (1U << ((x) - 3))
 
#define ATI_REG_OUT_DMA_SLOT_MASK   0x1ff
 
#define ATI_REG_OUT_DMA_THRESHOLD_MASK   0xf800
 
#define ATI_REG_OUT_DMA_THRESHOLD_SHIFT   11
 
#define ATI_REG_OUT_DMA_LINKPTR   0x38
 
#define ATI_REG_OUT_DMA_DT_START   0x3c /* RO */
 
#define ATI_REG_OUT_DMA_DT_NEXT   0x40 /* RO */
 
#define ATI_REG_OUT_DMA_DT_CUR   0x44 /* RO */
 
#define ATI_REG_OUT_DMA_DT_SIZE   0x48
 
#define ATI_REG_SPDF_CMD   0x4c
 
#define ATI_REG_SPDF_CMD_LFSR   (1U<<4)
 
#define ATI_REG_SPDF_CMD_SINGLE_CH   (1U<<5)
 
#define ATI_REG_SPDF_CMD_LFSR_ACC   (0xff<<8) /* RO */
 
#define ATI_REG_SPDF_DMA_LINKPTR   0x50
 
#define ATI_REG_SPDF_DMA_DT_START   0x54 /* RO */
 
#define ATI_REG_SPDF_DMA_DT_NEXT   0x58 /* RO */
 
#define ATI_REG_SPDF_DMA_DT_CUR   0x5c /* RO */
 
#define ATI_REG_SPDF_DMA_DT_SIZE   0x60
 
#define ATI_REG_MODEM_MIRROR   0x7c
 
#define ATI_REG_AUDIO_MIRROR   0x80
 
#define ATI_REG_6CH_REORDER   0x84 /* reorder slots for 6ch */
 
#define ATI_REG_6CH_REORDER_EN   (1U<<0) /* 3,4,7,8,6,9 -> 3,4,6,9,7,8 */
 
#define ATI_REG_FIFO_FLUSH   0x88
 
#define ATI_REG_FIFO_OUT_FLUSH   (1U<<0)
 
#define ATI_REG_FIFO_IN_FLUSH   (1U<<1)
 
#define ATI_REG_LINKPTR_EN   (1U<<0)
 
#define ATI_REG_DMA_DT_SIZE   (0xffffU<<0)
 
#define ATI_REG_DMA_FIFO_USED   (0x1fU<<16)
 
#define ATI_REG_DMA_FIFO_FREE   (0x1fU<<21)
 
#define ATI_REG_DMA_STATE   (7U<<26)
 
#define ATI_MAX_DESCRIPTORS   256 /* max number of descriptor packets */
 
#define NUM_ATI_CODECS   3
 
#define atiixp_write(chip, reg, value)   writel(value, chip->remap_addr + ATI_REG_##reg)
 
#define atiixp_read(chip, reg)   readl(chip->remap_addr + ATI_REG_##reg)
 
#define atiixp_update(chip, reg, mask, val)   snd_atiixp_update_bits(chip, ATI_REG_##reg, mask, val)
 
#define ATI_DESC_LIST_SIZE   PAGE_ALIGN(ATI_MAX_DESCRIPTORS * sizeof(struct atiixp_dma_desc))
 
#define ALL_CODEC_NOT_READY
 
#define CODEC_CHECK_BITS   (ALL_CODEC_NOT_READY|ATI_REG_ISR_NEW_FRAME)
 
#define SND_ATIIXP_PM_OPS   NULL
 
#define snd_atiixp_proc_init(chip)
 

Enumerations

enum  { ATI_DMA_PLAYBACK, ATI_DMA_CAPTURE, ATI_DMA_SPDIF, NUM_ATI_DMAS }
 
enum  { ATI_PCM_OUT, ATI_PCM_IN, ATI_PCM_SPDIF, NUM_ATI_PCMS }
 
enum  { ATI_PCMDEV_ANALOG, ATI_PCMDEV_DIGITAL, NUM_ATI_PCMDEVS }
 

Functions

 MODULE_AUTHOR ("Takashi Iwai <[email protected]>")
 
 MODULE_DESCRIPTION ("ATI IXP AC97 controller")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_SUPPORTED_DEVICE ("{{ATI,IXP150/200/250/300/400/600}}")
 
 module_param (index, int, 0444)
 
 MODULE_PARM_DESC (index,"Index value for ATI IXP controller.")
 
 module_param (id, charp, 0444)
 
 MODULE_PARM_DESC (id,"ID string for ATI IXP controller.")
 
 module_param (ac97_clock, int, 0444)
 
 MODULE_PARM_DESC (ac97_clock,"AC'97 codec clock (default 48000Hz).")
 
 module_param (ac97_quirk, charp, 0444)
 
 MODULE_PARM_DESC (ac97_quirk,"AC'97 workaround for strange hardware.")
 
 module_param (ac97_codec, int, 0444)
 
 MODULE_PARM_DESC (ac97_codec,"Specify codec instead of probing.")
 
 module_param (spdif_aclink, bool, 0444)
 
 MODULE_PARM_DESC (spdif_aclink,"S/PDIF over AC-link.")
 
 module_param (enable, bool, 0444)
 
 MODULE_DEVICE_TABLE (pci, snd_atiixp_ids)
 
 module_pci_driver (atiixp_driver)
 

Macro Definition Documentation

#define ALL_CODEC_NOT_READY
Value:
ATI_REG_ISR_CODEC1_NOT_READY |\
ATI_REG_ISR_CODEC2_NOT_READY)

Definition at line 558 of file atiixp.c.

#define ATI_DESC_LIST_SIZE   PAGE_ALIGN(ATI_MAX_DESCRIPTORS * sizeof(struct atiixp_dma_desc))

Definition at line 344 of file atiixp.c.

#define ATI_MAX_DESCRIPTORS   256 /* max number of descriptor packets */

Definition at line 200 of file atiixp.c.

#define ATI_REG_6CH_REORDER   0x84 /* reorder slots for 6ch */

Definition at line 183 of file atiixp.c.

#define ATI_REG_6CH_REORDER_EN   (1U<<0) /* 3,4,7,8,6,9 -> 3,4,6,9,7,8 */

Definition at line 184 of file atiixp.c.

#define ATI_REG_AUDIO_MIRROR   0x80

Definition at line 181 of file atiixp.c.

#define ATI_REG_CMD   0x08 /* command */

Definition at line 99 of file atiixp.c.

#define ATI_REG_CMD_AC_RESET   (1U<<31)

Definition at line 129 of file atiixp.c.

#define ATI_REG_CMD_AC_SOFT_RESET   (1U<<29)

Definition at line 127 of file atiixp.c.

#define ATI_REG_CMD_AC_SYNC   (1U<<30)

Definition at line 128 of file atiixp.c.

#define ATI_REG_CMD_ACLINK_ACTIVE   (1U<<28)

Definition at line 126 of file atiixp.c.

#define ATI_REG_CMD_AUDIO_PRESENT   (1U<<20)

Definition at line 118 of file atiixp.c.

#define ATI_REG_CMD_BURST_EN   (1U<<25)

Definition at line 123 of file atiixp.c.

#define ATI_REG_CMD_IN_DMA_EN   (1U<<8)

Definition at line 108 of file atiixp.c.

#define ATI_REG_CMD_INTERLEAVE_IN   (1U<<21)

Definition at line 119 of file atiixp.c.

#define ATI_REG_CMD_INTERLEAVE_OUT   (1U<<22)

Definition at line 120 of file atiixp.c.

#define ATI_REG_CMD_INTERLEAVE_SPDF   (1U<<16)

Definition at line 117 of file atiixp.c.

#define ATI_REG_CMD_LOOPBACK_EN   (1U<<23)

Definition at line 121 of file atiixp.c.

#define ATI_REG_CMD_MODEM_PRESENT   (1U<<27)

Definition at line 125 of file atiixp.c.

#define ATI_REG_CMD_OUT_DMA_EN   (1U<<9)

Definition at line 109 of file atiixp.c.

#define ATI_REG_CMD_PACKED_DIS   (1U<<24)

Definition at line 122 of file atiixp.c.

#define ATI_REG_CMD_PANIC_EN   (1U<<26)

Definition at line 124 of file atiixp.c.

#define ATI_REG_CMD_POWERDOWN   (1U<<0)

Definition at line 100 of file atiixp.c.

#define ATI_REG_CMD_RECEIVE_EN   (1U<<1)

Definition at line 101 of file atiixp.c.

#define ATI_REG_CMD_SEND_EN   (1U<<2)

Definition at line 102 of file atiixp.c.

#define ATI_REG_CMD_SPDF_CONFIG_01   (4U<<12)

Definition at line 116 of file atiixp.c.

#define ATI_REG_CMD_SPDF_CONFIG_34   (1U<<12)

Definition at line 113 of file atiixp.c.

#define ATI_REG_CMD_SPDF_CONFIG_69   (3U<<12)

Definition at line 115 of file atiixp.c.

#define ATI_REG_CMD_SPDF_CONFIG_78   (2U<<12)

Definition at line 114 of file atiixp.c.

#define ATI_REG_CMD_SPDF_CONFIG_MASK   (7U<<12)

Definition at line 112 of file atiixp.c.

#define ATI_REG_CMD_SPDF_DMA_EN   (1U<<10)

Definition at line 110 of file atiixp.c.

#define ATI_REG_CMD_SPDF_OUT_EN   (1U<<4)

Definition at line 104 of file atiixp.c.

#define ATI_REG_CMD_SPDF_OUT_STOPPED   (1U<<11)

Definition at line 111 of file atiixp.c.

#define ATI_REG_CMD_SPDF_STATUS_MEM   (1U<<5)

Definition at line 105 of file atiixp.c.

#define ATI_REG_CMD_SPDF_THRESHOLD   (3U<<6)

Definition at line 106 of file atiixp.c.

#define ATI_REG_CMD_SPDF_THRESHOLD_SHIFT   6

Definition at line 107 of file atiixp.c.

#define ATI_REG_CMD_STATUS_MEM   (1U<<3)

Definition at line 103 of file atiixp.c.

#define ATI_REG_COUNTER   0x18

Definition at line 145 of file atiixp.c.

#define ATI_REG_COUNTER_BITCLOCK   (31U<<8)

Definition at line 147 of file atiixp.c.

#define ATI_REG_COUNTER_SLOT   (3U<<0) /* slot # */

Definition at line 146 of file atiixp.c.

#define ATI_REG_DMA_DT_SIZE   (0xffffU<<0)

Definition at line 194 of file atiixp.c.

#define ATI_REG_DMA_FIFO_FREE   (0x1fU<<21)

Definition at line 196 of file atiixp.c.

#define ATI_REG_DMA_FIFO_USED   (0x1fU<<16)

Definition at line 195 of file atiixp.c.

#define ATI_REG_DMA_STATE   (7U<<26)

Definition at line 197 of file atiixp.c.

#define ATI_REG_FIFO_FLUSH   0x88

Definition at line 186 of file atiixp.c.

#define ATI_REG_FIFO_IN_FLUSH   (1U<<1)

Definition at line 188 of file atiixp.c.

#define ATI_REG_FIFO_OUT_FLUSH   (1U<<0)

Definition at line 187 of file atiixp.c.

#define ATI_REG_IER   0x04 /* interrupt enable */

Definition at line 84 of file atiixp.c.

#define ATI_REG_IER_CODEC0_INTR_EN   (1U<<10)

Definition at line 93 of file atiixp.c.

#define ATI_REG_IER_CODEC1_INTR_EN   (1U<<11)

Definition at line 94 of file atiixp.c.

#define ATI_REG_IER_CODEC2_INTR_EN   (1U<<12)

Definition at line 95 of file atiixp.c.

#define ATI_REG_IER_IN_XRUN_EN   (1U<<0)

Definition at line 85 of file atiixp.c.

#define ATI_REG_IER_IO_STATUS_EN   (1U<<1)

Definition at line 86 of file atiixp.c.

#define ATI_REG_IER_NEW_FRAME_EN   (1U<<13) /* (RO */

Definition at line 96 of file atiixp.c.

#define ATI_REG_IER_OUT_XRUN_COND   (1U<<3)

Definition at line 88 of file atiixp.c.

#define ATI_REG_IER_OUT_XRUN_EN   (1U<<2)

Definition at line 87 of file atiixp.c.

#define ATI_REG_IER_PHYS_INTR_EN   (1U<<8)

Definition at line 91 of file atiixp.c.

#define ATI_REG_IER_PHYS_MISMATCH_EN   (1U<<9)

Definition at line 92 of file atiixp.c.

#define ATI_REG_IER_SET_BUS_BUSY   (1U<<14) /* (WO) audio is running */

Definition at line 97 of file atiixp.c.

#define ATI_REG_IER_SPDF_STATUS_EN   (1U<<5)

Definition at line 90 of file atiixp.c.

#define ATI_REG_IER_SPDF_XRUN_EN   (1U<<4)

Definition at line 89 of file atiixp.c.

#define ATI_REG_IN_DMA_DT_CUR   0x2c /* RO */

Definition at line 154 of file atiixp.c.

#define ATI_REG_IN_DMA_DT_NEXT   0x28 /* RO */

Definition at line 153 of file atiixp.c.

#define ATI_REG_IN_DMA_DT_SIZE   0x30

Definition at line 155 of file atiixp.c.

#define ATI_REG_IN_DMA_DT_START   0x24 /* RO */

Definition at line 152 of file atiixp.c.

#define ATI_REG_IN_DMA_LINKPTR   0x20

Definition at line 151 of file atiixp.c.

#define ATI_REG_IN_FIFO_THRESHOLD   0x1c

Definition at line 149 of file atiixp.c.

#define ATI_REG_ISR   0x00 /* interrupt source */

Definition at line 70 of file atiixp.c.

#define ATI_REG_ISR_CODEC0_NOT_READY   (1U<<10)

Definition at line 79 of file atiixp.c.

#define ATI_REG_ISR_CODEC1_NOT_READY   (1U<<11)

Definition at line 80 of file atiixp.c.

#define ATI_REG_ISR_CODEC2_NOT_READY   (1U<<12)

Definition at line 81 of file atiixp.c.

#define ATI_REG_ISR_IN_STATUS   (1U<<1)

Definition at line 72 of file atiixp.c.

#define ATI_REG_ISR_IN_XRUN   (1U<<0)

Definition at line 71 of file atiixp.c.

#define ATI_REG_ISR_NEW_FRAME   (1U<<13)

Definition at line 82 of file atiixp.c.

#define ATI_REG_ISR_OUT_STATUS   (1U<<3)

Definition at line 74 of file atiixp.c.

#define ATI_REG_ISR_OUT_XRUN   (1U<<2)

Definition at line 73 of file atiixp.c.

#define ATI_REG_ISR_PHYS_INTR   (1U<<8)

Definition at line 77 of file atiixp.c.

#define ATI_REG_ISR_PHYS_MISMATCH   (1U<<9)

Definition at line 78 of file atiixp.c.

#define ATI_REG_ISR_SPDF_STATUS   (1U<<5)

Definition at line 76 of file atiixp.c.

#define ATI_REG_ISR_SPDF_XRUN   (1U<<4)

Definition at line 75 of file atiixp.c.

#define ATI_REG_LINKPTR_EN   (1U<<0)

Definition at line 191 of file atiixp.c.

#define ATI_REG_MODEM_MIRROR   0x7c

Definition at line 180 of file atiixp.c.

#define ATI_REG_OUT_DMA_DT_CUR   0x44 /* RO */

Definition at line 166 of file atiixp.c.

#define ATI_REG_OUT_DMA_DT_NEXT   0x40 /* RO */

Definition at line 165 of file atiixp.c.

#define ATI_REG_OUT_DMA_DT_SIZE   0x48

Definition at line 167 of file atiixp.c.

#define ATI_REG_OUT_DMA_DT_START   0x3c /* RO */

Definition at line 164 of file atiixp.c.

#define ATI_REG_OUT_DMA_LINKPTR   0x38

Definition at line 163 of file atiixp.c.

#define ATI_REG_OUT_DMA_SLOT   0x34

Definition at line 157 of file atiixp.c.

#define ATI_REG_OUT_DMA_SLOT_BIT (   x)    (1U << ((x) - 3))

Definition at line 158 of file atiixp.c.

#define ATI_REG_OUT_DMA_SLOT_MASK   0x1ff

Definition at line 159 of file atiixp.c.

#define ATI_REG_OUT_DMA_THRESHOLD_MASK   0xf800

Definition at line 160 of file atiixp.c.

#define ATI_REG_OUT_DMA_THRESHOLD_SHIFT   11

Definition at line 161 of file atiixp.c.

#define ATI_REG_PHYS_IN_ADDR   0x10

Definition at line 138 of file atiixp.c.

#define ATI_REG_PHYS_IN_ADDR_SHIFT   9

Definition at line 140 of file atiixp.c.

#define ATI_REG_PHYS_IN_DATA_SHIFT   16

Definition at line 141 of file atiixp.c.

#define ATI_REG_PHYS_IN_READ_FLAG   (1U<<8)

Definition at line 139 of file atiixp.c.

#define ATI_REG_PHYS_OUT_ADDR   0x0c

Definition at line 131 of file atiixp.c.

#define ATI_REG_PHYS_OUT_ADDR_EN   (1U<<8)

Definition at line 134 of file atiixp.c.

#define ATI_REG_PHYS_OUT_ADDR_SHIFT   9

Definition at line 135 of file atiixp.c.

#define ATI_REG_PHYS_OUT_CODEC_MASK   (3U<<0)

Definition at line 132 of file atiixp.c.

#define ATI_REG_PHYS_OUT_DATA_SHIFT   16

Definition at line 136 of file atiixp.c.

#define ATI_REG_PHYS_OUT_RW   (1U<<2)

Definition at line 133 of file atiixp.c.

#define ATI_REG_SLOTREQ   0x14

Definition at line 143 of file atiixp.c.

#define ATI_REG_SPDF_CMD   0x4c

Definition at line 169 of file atiixp.c.

#define ATI_REG_SPDF_CMD_LFSR   (1U<<4)

Definition at line 170 of file atiixp.c.

#define ATI_REG_SPDF_CMD_LFSR_ACC   (0xff<<8) /* RO */

Definition at line 172 of file atiixp.c.

#define ATI_REG_SPDF_CMD_SINGLE_CH   (1U<<5)

Definition at line 171 of file atiixp.c.

#define ATI_REG_SPDF_DMA_DT_CUR   0x5c /* RO */

Definition at line 177 of file atiixp.c.

#define ATI_REG_SPDF_DMA_DT_NEXT   0x58 /* RO */

Definition at line 176 of file atiixp.c.

#define ATI_REG_SPDF_DMA_DT_SIZE   0x60

Definition at line 178 of file atiixp.c.

#define ATI_REG_SPDF_DMA_DT_START   0x54 /* RO */

Definition at line 175 of file atiixp.c.

#define ATI_REG_SPDF_DMA_LINKPTR   0x50

Definition at line 174 of file atiixp.c.

#define atiixp_read (   chip,
  reg 
)    readl(chip->remap_addr + ATI_REG_##reg)

Definition at line 332 of file atiixp.c.

#define atiixp_update (   chip,
  reg,
  mask,
  val 
)    snd_atiixp_update_bits(chip, ATI_REG_##reg, mask, val)

Definition at line 334 of file atiixp.c.

#define atiixp_write (   chip,
  reg,
  value 
)    writel(value, chip->remap_addr + ATI_REG_##reg)

Definition at line 330 of file atiixp.c.

#define CODEC_CHECK_BITS   (ALL_CODEC_NOT_READY|ATI_REG_ISR_NEW_FRAME)

Definition at line 562 of file atiixp.c.

#define NUM_ATI_CODECS   3

Definition at line 223 of file atiixp.c.

#define SND_ATIIXP_PM_OPS   NULL

Definition at line 1544 of file atiixp.c.

#define snd_atiixp_proc_init (   chip)

Definition at line 1571 of file atiixp.c.

Enumeration Type Documentation

anonymous enum
Enumerator:
ATI_DMA_PLAYBACK 
ATI_DMA_CAPTURE 
ATI_DMA_SPDIF 
NUM_ATI_DMAS 

Definition at line 219 of file atiixp.c.

anonymous enum
Enumerator:
ATI_PCM_OUT 
ATI_PCM_IN 
ATI_PCM_SPDIF 
NUM_ATI_PCMS 

Definition at line 220 of file atiixp.c.

anonymous enum
Enumerator:
ATI_PCMDEV_ANALOG 
ATI_PCMDEV_DIGITAL 
NUM_ATI_PCMDEVS 

Definition at line 221 of file atiixp.c.

Function Documentation

MODULE_AUTHOR ( "Takashi Iwai <[email protected]>"  )
MODULE_DESCRIPTION ( "ATI IXP AC97 controller )
MODULE_DEVICE_TABLE ( pci  ,
snd_atiixp_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 ( ac97_codec  ,
int  ,
0444   
)
module_param ( spdif_aclink  ,
bool  ,
0444   
)
module_param ( enable  ,
bool  ,
0444   
)
MODULE_PARM_DESC ( index  ,
"Index value for ATI IXP controller."   
)
MODULE_PARM_DESC ( id  ,
"ID string for ATI IXP controller."   
)
MODULE_PARM_DESC ( ac97_clock  ,
"AC'97 codec clock (default 48000Hz)."   
)
MODULE_PARM_DESC ( ac97_quirk  ,
"AC'97 workaround for strange hardware."   
)
MODULE_PARM_DESC ( ac97_codec  ,
"Specify codec instead of probing."   
)
MODULE_PARM_DESC ( spdif_aclink  ,
"S/PDIF over AC-link."   
)
module_pci_driver ( atiixp_driver  )
MODULE_SUPPORTED_DEVICE ( "{{ATI,IXP150/200/250/300/400/600}}"  )