Linux Kernel
3.7.1
|
#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_modem |
Enumerations | |
enum | { ATI_DMA_PLAYBACK, ATI_DMA_CAPTURE, NUM_ATI_DMAS } |
enum | { ATI_PCM_OUT, ATI_PCM_IN, NUM_ATI_PCMS } |
enum | { ATI_PCMDEV_ANALOG, NUM_ATI_PCMDEVS } |
Functions | |
MODULE_AUTHOR ("Takashi Iwai <[email protected]>") | |
MODULE_DESCRIPTION ("ATI IXP MC97 controller") | |
MODULE_LICENSE ("GPL") | |
MODULE_SUPPORTED_DEVICE ("{{ATI,IXP150/200/250}}") | |
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 (enable, bool, 0444) | |
MODULE_DEVICE_TABLE (pci, snd_atiixp_ids) | |
module_pci_driver (atiixp_modem_driver) | |
#define ALL_CODEC_NOT_READY |
Definition at line 534 of file atiixp_modem.c.
#define ATI_DESC_LIST_SIZE PAGE_ALIGN(ATI_MAX_DESCRIPTORS * sizeof(struct atiixp_dma_desc)) |
Definition at line 312 of file atiixp_modem.c.
#define ATI_MAX_DESCRIPTORS 256 /* max number of descriptor packets */ |
Definition at line 176 of file atiixp_modem.c.
#define ATI_REG_AUDIO_MIRROR 0x80 |
Definition at line 165 of file atiixp_modem.c.
#define ATI_REG_CMD 0x08 /* command */ |
Definition at line 93 of file atiixp_modem.c.
#define ATI_REG_CMD_AC_RESET (1U<<31) |
Definition at line 114 of file atiixp_modem.c.
#define ATI_REG_CMD_AC_SOFT_RESET (1U<<29) |
Definition at line 112 of file atiixp_modem.c.
#define ATI_REG_CMD_AC_SYNC (1U<<30) |
Definition at line 113 of file atiixp_modem.c.
#define ATI_REG_CMD_ACLINK_ACTIVE (1U<<28) |
Definition at line 111 of file atiixp_modem.c.
#define ATI_REG_CMD_AUDIO_PRESENT (1U<<20) |
Definition at line 104 of file atiixp_modem.c.
#define ATI_REG_CMD_BURST_EN (1U<<25) |
Definition at line 108 of file atiixp_modem.c.
#define ATI_REG_CMD_LOOPBACK_EN (1U<<23) |
Definition at line 106 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_GPIO_THRU_DMA (1U<<22) /* modem only */ |
Definition at line 105 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_IN_DMA_EN (1U<<8) /* modem only */ |
Definition at line 100 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_OUT_DMA1_EN (1U<<9) /* modem only */ |
Definition at line 101 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_OUT_DMA2_EN (1U<<10) /* modem only */ |
Definition at line 102 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_OUT_DMA3_EN (1U<<11) /* modem only */ |
Definition at line 103 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_PRESENT (1U<<27) |
Definition at line 110 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_RECEIVE_EN (1U<<1) /* modem only */ |
Definition at line 95 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_SEND1_EN (1U<<2) /* modem only */ |
Definition at line 96 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_SEND2_EN (1U<<3) /* modem only */ |
Definition at line 97 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_SEND3_EN (1U<<4) /* modem only */ |
Definition at line 98 of file atiixp_modem.c.
#define ATI_REG_CMD_MODEM_STATUS_MEM (1U<<5) /* modem only */ |
Definition at line 99 of file atiixp_modem.c.
#define ATI_REG_CMD_PACKED_DIS (1U<<24) |
Definition at line 107 of file atiixp_modem.c.
#define ATI_REG_CMD_PANIC_EN (1U<<26) |
Definition at line 109 of file atiixp_modem.c.
#define ATI_REG_CMD_POWERDOWN (1U<<0) |
Definition at line 94 of file atiixp_modem.c.
#define ATI_REG_COUNTER 0x18 |
Definition at line 130 of file atiixp_modem.c.
#define ATI_REG_COUNTER_BITCLOCK (31U<<8) |
Definition at line 132 of file atiixp_modem.c.
#define ATI_REG_COUNTER_SLOT (3U<<0) /* slot # */ |
Definition at line 131 of file atiixp_modem.c.
#define ATI_REG_IER 0x04 /* interrupt enable */ |
Definition at line 78 of file atiixp_modem.c.
#define ATI_REG_IER_CODEC0_INTR_EN (1U<<10) |
Definition at line 86 of file atiixp_modem.c.
#define ATI_REG_IER_CODEC1_INTR_EN (1U<<11) |
Definition at line 87 of file atiixp_modem.c.
#define ATI_REG_IER_CODEC2_INTR_EN (1U<<12) |
Definition at line 88 of file atiixp_modem.c.
#define ATI_REG_IER_MODEM_GPIO_DATA_EN (1U<<14) /* (WO) modem is running */ |
Definition at line 90 of file atiixp_modem.c.
#define ATI_REG_IER_MODEM_IN_XRUN_EN (1U<<0) |
Definition at line 79 of file atiixp_modem.c.
#define ATI_REG_IER_MODEM_OUT1_XRUN_EN (1U<<2) |
Definition at line 81 of file atiixp_modem.c.
#define ATI_REG_IER_MODEM_OUT2_XRUN_EN (1U<<4) |
Definition at line 82 of file atiixp_modem.c.
#define ATI_REG_IER_MODEM_OUT3_XRUN_EN (1U<<6) |
Definition at line 83 of file atiixp_modem.c.
#define ATI_REG_IER_MODEM_SET_BUS_BUSY (1U<<15) |
Definition at line 91 of file atiixp_modem.c.
#define ATI_REG_IER_MODEM_STATUS_EN (1U<<1) |
Definition at line 80 of file atiixp_modem.c.
#define ATI_REG_IER_NEW_FRAME_EN (1U<<13) /* (RO */ |
Definition at line 89 of file atiixp_modem.c.
#define ATI_REG_IER_PHYS_INTR_EN (1U<<8) |
Definition at line 84 of file atiixp_modem.c.
#define ATI_REG_IER_PHYS_MISMATCH_EN (1U<<9) |
Definition at line 85 of file atiixp_modem.c.
#define ATI_REG_IN_FIFO_THRESHOLD 0x1c |
Definition at line 134 of file atiixp_modem.c.
#define ATI_REG_ISR 0x00 /* interrupt source */ |
Definition at line 61 of file atiixp_modem.c.
#define ATI_REG_ISR_CODEC0_NOT_READY (1U<<10) |
Definition at line 72 of file atiixp_modem.c.
#define ATI_REG_ISR_CODEC1_NOT_READY (1U<<11) |
Definition at line 73 of file atiixp_modem.c.
#define ATI_REG_ISR_CODEC2_NOT_READY (1U<<12) |
Definition at line 74 of file atiixp_modem.c.
#define ATI_REG_ISR_MODEM_GPIO_DATA (1U<<14) |
Definition at line 76 of file atiixp_modem.c.
#define ATI_REG_ISR_MODEM_IN_STATUS (1U<<1) |
Definition at line 63 of file atiixp_modem.c.
#define ATI_REG_ISR_MODEM_IN_XRUN (1U<<0) |
Definition at line 62 of file atiixp_modem.c.
#define ATI_REG_ISR_MODEM_OUT1_STATUS (1U<<3) |
Definition at line 65 of file atiixp_modem.c.
#define ATI_REG_ISR_MODEM_OUT1_XRUN (1U<<2) |
Definition at line 64 of file atiixp_modem.c.
#define ATI_REG_ISR_MODEM_OUT2_STATUS (1U<<5) |
Definition at line 67 of file atiixp_modem.c.
#define ATI_REG_ISR_MODEM_OUT2_XRUN (1U<<4) |
Definition at line 66 of file atiixp_modem.c.
#define ATI_REG_ISR_MODEM_OUT3_STATUS (1U<<7) |
Definition at line 69 of file atiixp_modem.c.
#define ATI_REG_ISR_MODEM_OUT3_XRUN (1U<<6) |
Definition at line 68 of file atiixp_modem.c.
#define ATI_REG_ISR_NEW_FRAME (1U<<13) |
Definition at line 75 of file atiixp_modem.c.
#define ATI_REG_ISR_PHYS_INTR (1U<<8) |
Definition at line 70 of file atiixp_modem.c.
#define ATI_REG_ISR_PHYS_MISMATCH (1U<<9) |
Definition at line 71 of file atiixp_modem.c.
#define ATI_REG_LINKPTR_EN (1U<<0) |
Definition at line 174 of file atiixp_modem.c.
#define ATI_REG_MODEM_FIFO_FLUSH 0x88 |
Definition at line 167 of file atiixp_modem.c.
#define ATI_REG_MODEM_FIFO_IN_FLUSH (1U<<3) |
Definition at line 171 of file atiixp_modem.c.
#define ATI_REG_MODEM_FIFO_OUT1_FLUSH (1U<<0) |
Definition at line 168 of file atiixp_modem.c.
#define ATI_REG_MODEM_FIFO_OUT2_FLUSH (1U<<1) |
Definition at line 169 of file atiixp_modem.c.
#define ATI_REG_MODEM_FIFO_OUT3_FLUSH (1U<<2) |
Definition at line 170 of file atiixp_modem.c.
#define ATI_REG_MODEM_IN_DMA_DT_CUR 0x2c /* RO */ |
Definition at line 139 of file atiixp_modem.c.
#define ATI_REG_MODEM_IN_DMA_DT_NEXT 0x28 /* RO */ |
Definition at line 138 of file atiixp_modem.c.
#define ATI_REG_MODEM_IN_DMA_DT_SIZE 0x30 |
Definition at line 140 of file atiixp_modem.c.
#define ATI_REG_MODEM_IN_DMA_DT_START 0x24 /* RO */ |
Definition at line 137 of file atiixp_modem.c.
#define ATI_REG_MODEM_IN_DMA_LINKPTR 0x20 |
Definition at line 136 of file atiixp_modem.c.
#define ATI_REG_MODEM_IN_GPIO 0x78 |
Definition at line 162 of file atiixp_modem.c.
#define ATI_REG_MODEM_MIRROR 0x7c |
Definition at line 164 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT1_DMA_THRESHOLD_MASK (0xf<<16) |
Definition at line 142 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT1_DMA_THRESHOLD_SHIFT 16 |
Definition at line 143 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA12_DT_SIZE 0x68 |
Definition at line 156 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA1_DT_CUR 0x4c |
Definition at line 149 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA1_DT_NEXT 0x48 |
Definition at line 148 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA1_DT_START 0x44 |
Definition at line 147 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA1_LINKPTR 0x38 |
Definition at line 144 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA2_DT_CUR 0x58 |
Definition at line 152 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA2_DT_NEXT 0x54 |
Definition at line 151 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA2_DT_START 0x50 |
Definition at line 150 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA2_LINKPTR 0x3c |
Definition at line 145 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA3_DT_CUR 0x64 |
Definition at line 155 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA3_DT_NEXT 0x60 |
Definition at line 154 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA3_DT_SIZE 0x6c |
Definition at line 157 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA3_DT_START 0x5c |
Definition at line 153 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_DMA3_LINKPTR 0x40 |
Definition at line 146 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_FIFO 0x34 /* output threshold */ |
Definition at line 141 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_FIFO_USED 0x70 |
Definition at line 158 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_GPIO 0x74 |
Definition at line 159 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_GPIO_DATA_SHIFT 5 |
Definition at line 161 of file atiixp_modem.c.
#define ATI_REG_MODEM_OUT_GPIO_EN 1 |
Definition at line 160 of file atiixp_modem.c.
#define ATI_REG_PHYS_IN_ADDR 0x10 |
Definition at line 123 of file atiixp_modem.c.
#define ATI_REG_PHYS_IN_ADDR_SHIFT 9 |
Definition at line 125 of file atiixp_modem.c.
#define ATI_REG_PHYS_IN_DATA_SHIFT 16 |
Definition at line 126 of file atiixp_modem.c.
#define ATI_REG_PHYS_IN_READ_FLAG (1U<<8) |
Definition at line 124 of file atiixp_modem.c.
#define ATI_REG_PHYS_OUT_ADDR 0x0c |
Definition at line 116 of file atiixp_modem.c.
#define ATI_REG_PHYS_OUT_ADDR_EN (1U<<8) |
Definition at line 119 of file atiixp_modem.c.
#define ATI_REG_PHYS_OUT_ADDR_SHIFT 9 |
Definition at line 120 of file atiixp_modem.c.
#define ATI_REG_PHYS_OUT_CODEC_MASK (3U<<0) |
Definition at line 117 of file atiixp_modem.c.
#define ATI_REG_PHYS_OUT_DATA_SHIFT 16 |
Definition at line 121 of file atiixp_modem.c.
#define ATI_REG_PHYS_OUT_RW (1U<<2) |
Definition at line 118 of file atiixp_modem.c.
#define ATI_REG_SLOTREQ 0x14 |
Definition at line 128 of file atiixp_modem.c.
Definition at line 300 of file atiixp_modem.c.
#define atiixp_update | ( | chip, | |
reg, | |||
mask, | |||
val | |||
) | snd_atiixp_update_bits(chip, ATI_REG_##reg, mask, val) |
Definition at line 302 of file atiixp_modem.c.
Definition at line 298 of file atiixp_modem.c.
#define CODEC_CHECK_BITS (ALL_CODEC_NOT_READY|ATI_REG_ISR_NEW_FRAME) |
Definition at line 538 of file atiixp_modem.c.
#define NUM_ATI_CODECS 3 |
Definition at line 199 of file atiixp_modem.c.
#define SND_ATIIXP_PM_OPS NULL |
Definition at line 1171 of file atiixp_modem.c.
#define snd_atiixp_proc_init | ( | chip | ) |
Definition at line 1197 of file atiixp_modem.c.
anonymous enum |
Definition at line 195 of file atiixp_modem.c.
anonymous enum |
Definition at line 196 of file atiixp_modem.c.
anonymous enum |
Definition at line 197 of file atiixp_modem.c.
MODULE_AUTHOR | ( | "Takashi Iwai <[email protected]>" | ) |
MODULE_DESCRIPTION | ( | "ATI IXP MC97 controller" | ) |
MODULE_DEVICE_TABLE | ( | pci | , |
snd_atiixp_ids | |||
) |
MODULE_LICENSE | ( | "GPL" | ) |
module_param | ( | id | , |
charp | , | ||
0444 | |||
) |
module_param | ( | ac97_clock | , |
int | , | ||
0444 | |||
) |
module_pci_driver | ( | atiixp_modem_driver | ) |
MODULE_SUPPORTED_DEVICE | ( | "{{ATI,IXP150/200/250}}" | ) |