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 <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 | snd_via_sg_table |
struct | viadev |
struct | via82xx_modem |
Macros | |
#define | VIAREG(via, x) ((via)->port + VIA_REG_##x) |
#define | VIADEV_REG(viadev, x) ((viadev)->port + VIA_REG_##x) |
#define | VIA_REG_OFFSET_STATUS 0x00 /* byte - channel status */ |
#define | VIA_REG_STAT_ACTIVE 0x80 /* RO */ |
#define | VIA_REG_STAT_PAUSED 0x40 /* RO */ |
#define | VIA_REG_STAT_TRIGGER_QUEUED 0x08 /* RO */ |
#define | VIA_REG_STAT_STOPPED 0x04 /* RWC */ |
#define | VIA_REG_STAT_EOL 0x02 /* RWC */ |
#define | VIA_REG_STAT_FLAG 0x01 /* RWC */ |
#define | VIA_REG_OFFSET_CONTROL 0x01 /* byte - channel control */ |
#define | VIA_REG_CTRL_START 0x80 /* WO */ |
#define | VIA_REG_CTRL_TERMINATE 0x40 /* WO */ |
#define | VIA_REG_CTRL_AUTOSTART 0x20 |
#define | VIA_REG_CTRL_PAUSE 0x08 /* RW */ |
#define | VIA_REG_CTRL_INT_STOP 0x04 |
#define | VIA_REG_CTRL_INT_EOL 0x02 |
#define | VIA_REG_CTRL_INT_FLAG 0x01 |
#define | VIA_REG_CTRL_RESET 0x01 /* RW - probably reset? undocumented */ |
#define | VIA_REG_CTRL_INT (VIA_REG_CTRL_INT_FLAG | VIA_REG_CTRL_INT_EOL | VIA_REG_CTRL_AUTOSTART) |
#define | VIA_REG_OFFSET_TYPE 0x02 /* byte - channel type (686 only) */ |
#define | VIA_REG_TYPE_AUTOSTART 0x80 /* RW - autostart at EOL */ |
#define | VIA_REG_TYPE_16BIT 0x20 /* RW */ |
#define | VIA_REG_TYPE_STEREO 0x10 /* RW */ |
#define | VIA_REG_TYPE_INT_LLINE 0x00 |
#define | VIA_REG_TYPE_INT_LSAMPLE 0x04 |
#define | VIA_REG_TYPE_INT_LESSONE 0x08 |
#define | VIA_REG_TYPE_INT_MASK 0x0c |
#define | VIA_REG_TYPE_INT_EOL 0x02 |
#define | VIA_REG_TYPE_INT_FLAG 0x01 |
#define | VIA_REG_OFFSET_TABLE_PTR 0x04 /* dword - channel table pointer */ |
#define | VIA_REG_OFFSET_CURR_PTR 0x04 /* dword - channel current pointer */ |
#define | VIA_REG_OFFSET_STOP_IDX 0x08 /* dword - stop index, channel type, sample rate */ |
#define | VIA_REG_OFFSET_CURR_COUNT 0x0c /* dword - channel current count (24 bit) */ |
#define | VIA_REG_OFFSET_CURR_INDEX 0x0f /* byte - channel current index (for via8233 only) */ |
#define | DEFINE_VIA_REGSET(name, val) |
#define | VIA_REG_AC97 0x80 /* dword */ |
#define | VIA_REG_AC97_CODEC_ID_MASK (3<<30) |
#define | VIA_REG_AC97_CODEC_ID_SHIFT 30 |
#define | VIA_REG_AC97_CODEC_ID_PRIMARY 0x00 |
#define | VIA_REG_AC97_CODEC_ID_SECONDARY 0x01 |
#define | VIA_REG_AC97_SECONDARY_VALID (1<<27) |
#define | VIA_REG_AC97_PRIMARY_VALID (1<<25) |
#define | VIA_REG_AC97_BUSY (1<<24) |
#define | VIA_REG_AC97_READ (1<<23) |
#define | VIA_REG_AC97_CMD_SHIFT 16 |
#define | VIA_REG_AC97_CMD_MASK 0x7e |
#define | VIA_REG_AC97_DATA_SHIFT 0 |
#define | VIA_REG_AC97_DATA_MASK 0xffff |
#define | VIA_REG_SGD_SHADOW 0x84 /* dword */ |
#define | VIA_REG_SGD_STAT_PB_FLAG (1<<0) |
#define | VIA_REG_SGD_STAT_CP_FLAG (1<<1) |
#define | VIA_REG_SGD_STAT_FM_FLAG (1<<2) |
#define | VIA_REG_SGD_STAT_PB_EOL (1<<4) |
#define | VIA_REG_SGD_STAT_CP_EOL (1<<5) |
#define | VIA_REG_SGD_STAT_FM_EOL (1<<6) |
#define | VIA_REG_SGD_STAT_PB_STOP (1<<8) |
#define | VIA_REG_SGD_STAT_CP_STOP (1<<9) |
#define | VIA_REG_SGD_STAT_FM_STOP (1<<10) |
#define | VIA_REG_SGD_STAT_PB_ACTIVE (1<<12) |
#define | VIA_REG_SGD_STAT_CP_ACTIVE (1<<13) |
#define | VIA_REG_SGD_STAT_FM_ACTIVE (1<<14) |
#define | VIA_REG_SGD_STAT_MR_FLAG (1<<16) |
#define | VIA_REG_SGD_STAT_MW_FLAG (1<<17) |
#define | VIA_REG_SGD_STAT_MR_EOL (1<<20) |
#define | VIA_REG_SGD_STAT_MW_EOL (1<<21) |
#define | VIA_REG_SGD_STAT_MR_STOP (1<<24) |
#define | VIA_REG_SGD_STAT_MW_STOP (1<<25) |
#define | VIA_REG_SGD_STAT_MR_ACTIVE (1<<28) |
#define | VIA_REG_SGD_STAT_MW_ACTIVE (1<<29) |
#define | VIA_REG_GPI_STATUS 0x88 |
#define | VIA_REG_GPI_INTR 0x8c |
#define | VIA_TBL_BIT_FLAG 0x40000000 |
#define | VIA_TBL_BIT_EOL 0x80000000 |
#define | VIA_ACLINK_STAT 0x40 |
#define | VIA_ACLINK_C11_READY 0x20 |
#define | VIA_ACLINK_C10_READY 0x10 |
#define | VIA_ACLINK_C01_READY 0x04 /* secondary codec ready */ |
#define | VIA_ACLINK_LOWPOWER 0x02 /* low-power state */ |
#define | VIA_ACLINK_C00_READY 0x01 /* primary codec ready */ |
#define | VIA_ACLINK_CTRL 0x41 |
#define | VIA_ACLINK_CTRL_ENABLE 0x80 /* 0: disable, 1: enable */ |
#define | VIA_ACLINK_CTRL_RESET 0x40 /* 0: assert, 1: de-assert */ |
#define | VIA_ACLINK_CTRL_SYNC 0x20 /* 0: release SYNC, 1: force SYNC hi */ |
#define | VIA_ACLINK_CTRL_SDO 0x10 /* 0: release SDO, 1: force SDO hi */ |
#define | VIA_ACLINK_CTRL_VRA 0x08 /* 0: disable VRA, 1: enable VRA */ |
#define | VIA_ACLINK_CTRL_PCM 0x04 /* 0: disable PCM, 1: enable PCM */ |
#define | VIA_ACLINK_CTRL_FM 0x02 /* via686 only */ |
#define | VIA_ACLINK_CTRL_SB 0x01 /* via686 only */ |
#define | VIA_ACLINK_CTRL_INIT |
#define | VIA_FUNC_ENABLE 0x42 |
#define | VIA_FUNC_MIDI_PNP 0x80 /* FIXME: it's 0x40 in the datasheet! */ |
#define | VIA_FUNC_MIDI_IRQMASK 0x40 /* FIXME: not documented! */ |
#define | VIA_FUNC_RX2C_WRITE 0x20 |
#define | VIA_FUNC_SB_FIFO_EMPTY 0x10 |
#define | VIA_FUNC_ENABLE_GAME 0x08 |
#define | VIA_FUNC_ENABLE_FM 0x04 |
#define | VIA_FUNC_ENABLE_MIDI 0x02 |
#define | VIA_FUNC_ENABLE_SB 0x01 |
#define | VIA_PNP_CONTROL 0x43 |
#define | VIA_MC97_CTRL 0x44 |
#define | VIA_MC97_CTRL_ENABLE 0x80 |
#define | VIA_MC97_CTRL_SECONDARY 0x40 |
#define | VIA_MC97_CTRL_INIT |
#define | VIA_TABLE_SIZE 255 |
#define | VIA_MAX_MODEM_DEVS 2 |
#define | check_invalid_pos(viadev, pos) |
#define | SND_VIA82XX_PM_OPS NULL |
Enumerations | |
enum | { TYPE_CARD_VIA82XX_MODEM = 1 } |
Functions | |
MODULE_AUTHOR ("Jaroslav Kysela <[email protected]>") | |
MODULE_DESCRIPTION ("VIA VT82xx modem") | |
MODULE_LICENSE ("GPL") | |
MODULE_SUPPORTED_DEVICE ("{{VIA,VT82C686A/B/C modem,pci}}") | |
module_param (index, int, 0444) | |
MODULE_PARM_DESC (index,"Index value for VIA 82xx bridge.") | |
module_param (id, charp, 0444) | |
MODULE_PARM_DESC (id,"ID string for VIA 82xx bridge.") | |
module_param (ac97_clock, int, 0444) | |
MODULE_PARM_DESC (ac97_clock,"AC'97 codec clock (default 48000Hz).") | |
module_param (enable, bool, 0444) | |
DEFINE_VIA_REGSET (MO, 0x40) | |
DEFINE_VIA_REGSET (MI, 0x50) | |
MODULE_DEVICE_TABLE (pci, snd_via82xx_modem_ids) | |
module_pci_driver (via82xx_modem_driver) | |
Definition at line 114 of file via82xx_modem.c.
#define SND_VIA82XX_PM_OPS NULL |
Definition at line 1078 of file via82xx_modem.c.
#define VIA_ACLINK_C00_READY 0x01 /* primary codec ready */ |
Definition at line 178 of file via82xx_modem.c.
#define VIA_ACLINK_C01_READY 0x04 /* secondary codec ready */ |
Definition at line 176 of file via82xx_modem.c.
#define VIA_ACLINK_C10_READY 0x10 |
Definition at line 175 of file via82xx_modem.c.
#define VIA_ACLINK_C11_READY 0x20 |
Definition at line 174 of file via82xx_modem.c.
#define VIA_ACLINK_CTRL 0x41 |
Definition at line 179 of file via82xx_modem.c.
#define VIA_ACLINK_CTRL_ENABLE 0x80 /* 0: disable, 1: enable */ |
Definition at line 180 of file via82xx_modem.c.
#define VIA_ACLINK_CTRL_FM 0x02 /* via686 only */ |
Definition at line 186 of file via82xx_modem.c.
#define VIA_ACLINK_CTRL_INIT |
Definition at line 188 of file via82xx_modem.c.
#define VIA_ACLINK_CTRL_PCM 0x04 /* 0: disable PCM, 1: enable PCM */ |
Definition at line 185 of file via82xx_modem.c.
#define VIA_ACLINK_CTRL_RESET 0x40 /* 0: assert, 1: de-assert */ |
Definition at line 181 of file via82xx_modem.c.
#define VIA_ACLINK_CTRL_SB 0x01 /* via686 only */ |
Definition at line 187 of file via82xx_modem.c.
#define VIA_ACLINK_CTRL_SDO 0x10 /* 0: release SDO, 1: force SDO hi */ |
Definition at line 183 of file via82xx_modem.c.
#define VIA_ACLINK_CTRL_SYNC 0x20 /* 0: release SYNC, 1: force SYNC hi */ |
Definition at line 182 of file via82xx_modem.c.
#define VIA_ACLINK_CTRL_VRA 0x08 /* 0: disable VRA, 1: enable VRA */ |
Definition at line 184 of file via82xx_modem.c.
#define VIA_ACLINK_LOWPOWER 0x02 /* low-power state */ |
Definition at line 177 of file via82xx_modem.c.
#define VIA_ACLINK_STAT 0x40 |
Definition at line 173 of file via82xx_modem.c.
#define VIA_FUNC_ENABLE 0x42 |
Definition at line 191 of file via82xx_modem.c.
#define VIA_FUNC_ENABLE_FM 0x04 |
Definition at line 197 of file via82xx_modem.c.
#define VIA_FUNC_ENABLE_GAME 0x08 |
Definition at line 196 of file via82xx_modem.c.
#define VIA_FUNC_ENABLE_MIDI 0x02 |
Definition at line 198 of file via82xx_modem.c.
#define VIA_FUNC_ENABLE_SB 0x01 |
Definition at line 199 of file via82xx_modem.c.
#define VIA_FUNC_MIDI_IRQMASK 0x40 /* FIXME: not documented! */ |
Definition at line 193 of file via82xx_modem.c.
#define VIA_FUNC_MIDI_PNP 0x80 /* FIXME: it's 0x40 in the datasheet! */ |
Definition at line 192 of file via82xx_modem.c.
#define VIA_FUNC_RX2C_WRITE 0x20 |
Definition at line 194 of file via82xx_modem.c.
#define VIA_FUNC_SB_FIFO_EMPTY 0x10 |
Definition at line 195 of file via82xx_modem.c.
#define VIA_MAX_MODEM_DEVS 2 |
Definition at line 236 of file via82xx_modem.c.
#define VIA_MC97_CTRL 0x44 |
Definition at line 201 of file via82xx_modem.c.
#define VIA_MC97_CTRL_ENABLE 0x80 |
Definition at line 202 of file via82xx_modem.c.
#define VIA_MC97_CTRL_INIT |
Definition at line 204 of file via82xx_modem.c.
#define VIA_MC97_CTRL_SECONDARY 0x40 |
Definition at line 203 of file via82xx_modem.c.
#define VIA_PNP_CONTROL 0x43 |
Definition at line 200 of file via82xx_modem.c.
#define VIA_REG_AC97 0x80 /* dword */ |
Definition at line 130 of file via82xx_modem.c.
#define VIA_REG_AC97_BUSY (1<<24) |
Definition at line 137 of file via82xx_modem.c.
#define VIA_REG_AC97_CMD_MASK 0x7e |
Definition at line 140 of file via82xx_modem.c.
#define VIA_REG_AC97_CMD_SHIFT 16 |
Definition at line 139 of file via82xx_modem.c.
#define VIA_REG_AC97_CODEC_ID_MASK (3<<30) |
Definition at line 131 of file via82xx_modem.c.
#define VIA_REG_AC97_CODEC_ID_PRIMARY 0x00 |
Definition at line 133 of file via82xx_modem.c.
#define VIA_REG_AC97_CODEC_ID_SECONDARY 0x01 |
Definition at line 134 of file via82xx_modem.c.
#define VIA_REG_AC97_CODEC_ID_SHIFT 30 |
Definition at line 132 of file via82xx_modem.c.
#define VIA_REG_AC97_DATA_MASK 0xffff |
Definition at line 142 of file via82xx_modem.c.
#define VIA_REG_AC97_DATA_SHIFT 0 |
Definition at line 141 of file via82xx_modem.c.
#define VIA_REG_AC97_PRIMARY_VALID (1<<25) |
Definition at line 136 of file via82xx_modem.c.
#define VIA_REG_AC97_READ (1<<23) |
Definition at line 138 of file via82xx_modem.c.
#define VIA_REG_AC97_SECONDARY_VALID (1<<27) |
Definition at line 135 of file via82xx_modem.c.
#define VIA_REG_CTRL_AUTOSTART 0x20 |
Definition at line 91 of file via82xx_modem.c.
#define VIA_REG_CTRL_INT (VIA_REG_CTRL_INT_FLAG | VIA_REG_CTRL_INT_EOL | VIA_REG_CTRL_AUTOSTART) |
Definition at line 97 of file via82xx_modem.c.
#define VIA_REG_CTRL_INT_EOL 0x02 |
Definition at line 94 of file via82xx_modem.c.
#define VIA_REG_CTRL_INT_FLAG 0x01 |
Definition at line 95 of file via82xx_modem.c.
#define VIA_REG_CTRL_INT_STOP 0x04 |
Definition at line 93 of file via82xx_modem.c.
#define VIA_REG_CTRL_PAUSE 0x08 /* RW */ |
Definition at line 92 of file via82xx_modem.c.
#define VIA_REG_CTRL_RESET 0x01 /* RW - probably reset? undocumented */ |
Definition at line 96 of file via82xx_modem.c.
#define VIA_REG_CTRL_START 0x80 /* WO */ |
Definition at line 89 of file via82xx_modem.c.
#define VIA_REG_CTRL_TERMINATE 0x40 /* WO */ |
Definition at line 90 of file via82xx_modem.c.
#define VIA_REG_GPI_INTR 0x8c |
Definition at line 167 of file via82xx_modem.c.
#define VIA_REG_GPI_STATUS 0x88 |
Definition at line 166 of file via82xx_modem.c.
#define VIA_REG_OFFSET_CONTROL 0x01 /* byte - channel control */ |
Definition at line 88 of file via82xx_modem.c.
#define VIA_REG_OFFSET_CURR_COUNT 0x0c /* dword - channel current count (24 bit) */ |
Definition at line 111 of file via82xx_modem.c.
#define VIA_REG_OFFSET_CURR_INDEX 0x0f /* byte - channel current index (for via8233 only) */ |
Definition at line 112 of file via82xx_modem.c.
#define VIA_REG_OFFSET_CURR_PTR 0x04 /* dword - channel current pointer */ |
Definition at line 109 of file via82xx_modem.c.
#define VIA_REG_OFFSET_STATUS 0x00 /* byte - channel status */ |
Definition at line 81 of file via82xx_modem.c.
#define VIA_REG_OFFSET_STOP_IDX 0x08 /* dword - stop index, channel type, sample rate */ |
Definition at line 110 of file via82xx_modem.c.
#define VIA_REG_OFFSET_TABLE_PTR 0x04 /* dword - channel table pointer */ |
Definition at line 108 of file via82xx_modem.c.
#define VIA_REG_OFFSET_TYPE 0x02 /* byte - channel type (686 only) */ |
Definition at line 98 of file via82xx_modem.c.
#define VIA_REG_SGD_SHADOW 0x84 /* dword */ |
Definition at line 144 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_CP_ACTIVE (1<<13) |
Definition at line 155 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_CP_EOL (1<<5) |
Definition at line 149 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_CP_FLAG (1<<1) |
Definition at line 146 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_CP_STOP (1<<9) |
Definition at line 152 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_FM_ACTIVE (1<<14) |
Definition at line 156 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_FM_EOL (1<<6) |
Definition at line 150 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_FM_FLAG (1<<2) |
Definition at line 147 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_FM_STOP (1<<10) |
Definition at line 153 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_MR_ACTIVE (1<<28) |
Definition at line 163 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_MR_EOL (1<<20) |
Definition at line 159 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_MR_FLAG (1<<16) |
Definition at line 157 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_MR_STOP (1<<24) |
Definition at line 161 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_MW_ACTIVE (1<<29) |
Definition at line 164 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_MW_EOL (1<<21) |
Definition at line 160 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_MW_FLAG (1<<17) |
Definition at line 158 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_MW_STOP (1<<25) |
Definition at line 162 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_PB_ACTIVE (1<<12) |
Definition at line 154 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_PB_EOL (1<<4) |
Definition at line 148 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_PB_FLAG (1<<0) |
Definition at line 145 of file via82xx_modem.c.
#define VIA_REG_SGD_STAT_PB_STOP (1<<8) |
Definition at line 151 of file via82xx_modem.c.
#define VIA_REG_STAT_ACTIVE 0x80 /* RO */ |
Definition at line 82 of file via82xx_modem.c.
#define VIA_REG_STAT_EOL 0x02 /* RWC */ |
Definition at line 86 of file via82xx_modem.c.
#define VIA_REG_STAT_FLAG 0x01 /* RWC */ |
Definition at line 87 of file via82xx_modem.c.
#define VIA_REG_STAT_PAUSED 0x40 /* RO */ |
Definition at line 83 of file via82xx_modem.c.
#define VIA_REG_STAT_STOPPED 0x04 /* RWC */ |
Definition at line 85 of file via82xx_modem.c.
#define VIA_REG_STAT_TRIGGER_QUEUED 0x08 /* RO */ |
Definition at line 84 of file via82xx_modem.c.
#define VIA_REG_TYPE_16BIT 0x20 /* RW */ |
Definition at line 100 of file via82xx_modem.c.
#define VIA_REG_TYPE_AUTOSTART 0x80 /* RW - autostart at EOL */ |
Definition at line 99 of file via82xx_modem.c.
#define VIA_REG_TYPE_INT_EOL 0x02 |
Definition at line 106 of file via82xx_modem.c.
#define VIA_REG_TYPE_INT_FLAG 0x01 |
Definition at line 107 of file via82xx_modem.c.
#define VIA_REG_TYPE_INT_LESSONE 0x08 |
Definition at line 104 of file via82xx_modem.c.
#define VIA_REG_TYPE_INT_LLINE 0x00 |
Definition at line 102 of file via82xx_modem.c.
#define VIA_REG_TYPE_INT_LSAMPLE 0x04 |
Definition at line 103 of file via82xx_modem.c.
#define VIA_REG_TYPE_INT_MASK 0x0c |
Definition at line 105 of file via82xx_modem.c.
#define VIA_REG_TYPE_STEREO 0x10 /* RW */ |
Definition at line 101 of file via82xx_modem.c.
#define VIA_TABLE_SIZE 255 |
Definition at line 217 of file via82xx_modem.c.
#define VIA_TBL_BIT_EOL 0x80000000 |
Definition at line 170 of file via82xx_modem.c.
#define VIA_TBL_BIT_FLAG 0x40000000 |
Definition at line 169 of file via82xx_modem.c.
Definition at line 78 of file via82xx_modem.c.
Definition at line 77 of file via82xx_modem.c.
anonymous enum |
Definition at line 234 of file via82xx_modem.c.
DEFINE_VIA_REGSET | ( | MO | , |
0x40 | |||
) |
DEFINE_VIA_REGSET | ( | MI | , |
0x50 | |||
) |
MODULE_AUTHOR | ( | "Jaroslav Kysela <[email protected]>" | ) |
MODULE_DESCRIPTION | ( | "VIA VT82xx modem" | ) |
MODULE_DEVICE_TABLE | ( | pci | , |
snd_via82xx_modem_ids | |||
) |
MODULE_LICENSE | ( | "GPL" | ) |
module_param | ( | id | , |
charp | , | ||
0444 | |||
) |
module_param | ( | ac97_clock | , |
int | , | ||
0444 | |||
) |
module_pci_driver | ( | via82xx_modem_driver | ) |