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

Go to the source code of this file.

Data Structures

struct  snd_via_sg_table
 
struct  viadev
 
struct  via_rate_lock
 
struct  via82xx
 
struct  via823x_info
 

Macros

#define VIA_REV_686_A   0x10
 
#define VIA_REV_686_B   0x11
 
#define VIA_REV_686_C   0x12
 
#define VIA_REV_686_D   0x13
 
#define VIA_REV_686_E   0x14
 
#define VIA_REV_686_H   0x20
 
#define VIA_REV_PRE_8233   0x10 /* not in market */
 
#define VIA_REV_8233C   0x20 /* 2 rec, 4 pb, 1 multi-pb */
 
#define VIA_REV_8233   0x30 /* 2 rec, 4 pb, 1 multi-pb, spdif */
 
#define VIA_REV_8233A   0x40 /* 1 rec, 1 multi-pb, spdf */
 
#define VIA_REV_8235   0x50 /* 2 rec, 4 pb, 1 multi-pb, spdif */
 
#define VIA_REV_8237   0x60
 
#define VIA_REV_8251   0x70
 
#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 VIA8233_SHADOW_STAT_ACTIVE   0x08 /* 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 VIA8233_REG_TYPE_16BIT   0x00200000 /* RW */
 
#define VIA8233_REG_TYPE_STEREO   0x00100000 /* RW */
 
#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 VIA8233_REG_SGD_STAT_FLAG   (1<<0)
 
#define VIA8233_REG_SGD_STAT_EOL   (1<<1)
 
#define VIA8233_REG_SGD_STAT_STOP   (1<<2)
 
#define VIA8233_REG_SGD_STAT_ACTIVE   (1<<3)
 
#define VIA8233_INTR_MASK(chan)   ((VIA8233_REG_SGD_STAT_FLAG|VIA8233_REG_SGD_STAT_EOL) << ((chan) * 4))
 
#define VIA8233_REG_SGD_CHAN_SDX   0
 
#define VIA8233_REG_SGD_CHAN_MULTI   4
 
#define VIA8233_REG_SGD_CHAN_REC   6
 
#define VIA8233_REG_SGD_CHAN_REC1   7
 
#define VIA_REG_GPI_STATUS   0x88
 
#define VIA_REG_GPI_INTR   0x8c
 
#define VIA_REG_OFS_PLAYBACK_VOLUME_L   0x02 /* byte */
 
#define VIA_REG_OFS_PLAYBACK_VOLUME_R   0x03 /* byte */
 
#define VIA_REG_OFS_MULTPLAY_FORMAT   0x02 /* byte - format and channels */
 
#define VIA_REG_MULTPLAY_FMT_8BIT   0x00
 
#define VIA_REG_MULTPLAY_FMT_16BIT   0x80
 
#define VIA_REG_MULTPLAY_FMT_CH_MASK   0x70 /* # channels << 4 (valid = 1,2,4,6) */
 
#define VIA_REG_OFS_CAPTURE_FIFO   0x02 /* byte - bit 6 = fifo enable */
 
#define VIA_REG_CAPTURE_FIFO_ENABLE   0x40
 
#define VIA_DXS_MAX_VOLUME   31 /* max. volume (attenuation) of reg 0x32/33 */
 
#define VIA_REG_CAPTURE_CHANNEL   0x63 /* byte - input select */
 
#define VIA_REG_CAPTURE_CHANNEL_MIC   0x4
 
#define VIA_REG_CAPTURE_CHANNEL_LINE   0
 
#define VIA_REG_CAPTURE_SELECT_CODEC   0x03 /* recording source codec (0 = primary) */
 
#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_FM_NMI_CTRL   0x48
 
#define VIA8233_VOLCHG_CTRL   0x48
 
#define VIA8233_SPDIF_CTRL   0x49
 
#define VIA8233_SPDIF_DX3   0x08
 
#define VIA8233_SPDIF_SLOT_MASK   0x03
 
#define VIA8233_SPDIF_SLOT_1011   0x00
 
#define VIA8233_SPDIF_SLOT_34   0x01
 
#define VIA8233_SPDIF_SLOT_78   0x02
 
#define VIA8233_SPDIF_SLOT_69   0x03
 
#define VIA_DXS_AUTO   0
 
#define VIA_DXS_ENABLE   1
 
#define VIA_DXS_DISABLE   2
 
#define VIA_DXS_48K   3
 
#define VIA_DXS_NO_VRA   4
 
#define VIA_DXS_SRC   5
 
#define VIA_TABLE_SIZE   255
 
#define VIA_MAX_BUFSIZE   (1<<24)
 
#define VIA_MAX_DEVS   7 /* 4 playback, 1 multi, 2 capture */
 
#define check_invalid_pos(viadev, pos)
 
#define snd_via8233_dxs3_spdif_info   snd_ctl_boolean_mono_info
 
#define SND_VIA82XX_PM_OPS   NULL
 

Enumerations

enum  { TYPE_CARD_VIA686 = 1, TYPE_CARD_VIA8233 }
 
enum  { TYPE_VIA686, TYPE_VIA8233, TYPE_VIA8233A }
 

Functions

 MODULE_AUTHOR ("Jaroslav Kysela <[email protected]>")
 
 MODULE_DESCRIPTION ("VIA VT82xx audio")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_SUPPORTED_DEVICE ("{{VIA,VT82C686A/B/C,pci},{VIA,VT8233A/C,8235}}")
 
 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 (mpu_port, long, 0444)
 
 MODULE_PARM_DESC (mpu_port,"MPU-401 port. (VT82C686x only)")
 
 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 (dxs_support, int, 0444)
 
 MODULE_PARM_DESC (dxs_support,"Support for DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 = no VRA, 5 = enable any sample rate)")
 
 module_param (dxs_init_volume, int, 0644)
 
 MODULE_PARM_DESC (dxs_init_volume,"initial DXS volume (0-31)")
 
 module_param (nodelay, int, 0444)
 
 MODULE_PARM_DESC (nodelay,"Disable 500ms init delay")
 
 module_param (enable, bool, 0444)
 
 DEFINE_VIA_REGSET (PLAYBACK, 0x00)
 
 DEFINE_VIA_REGSET (CAPTURE, 0x10)
 
 DEFINE_VIA_REGSET (FM, 0x20)
 
 DEFINE_VIA_REGSET (MULTPLAY, 0x40)
 
 DEFINE_VIA_REGSET (CAPTURE_8233, 0x60)
 
 MODULE_DEVICE_TABLE (pci, snd_via82xx_ids)
 
 module_pci_driver (via82xx_driver)
 

Macro Definition Documentation

#define check_invalid_pos (   viadev,
  pos 
)
Value:

Definition at line 776 of file via82xx.c.

#define DEFINE_VIA_REGSET (   name,
  val 
)
Value:
enum {\
VIA_REG_##name##_STATUS = (val),\
VIA_REG_##name##_CONTROL = (val) + 0x01,\
VIA_REG_##name##_TYPE = (val) + 0x02,\
VIA_REG_##name##_TABLE_PTR = (val) + 0x04,\
VIA_REG_##name##_CURR_PTR = (val) + 0x04,\
VIA_REG_##name##_STOP_IDX = (val) + 0x08,\
VIA_REG_##name##_CURR_COUNT = (val) + 0x0c,\
}

Definition at line 178 of file via82xx.c.

#define snd_via8233_dxs3_spdif_info   snd_ctl_boolean_mono_info

Definition at line 1654 of file via82xx.c.

#define SND_VIA82XX_PM_OPS   NULL

Definition at line 2338 of file via82xx.c.

#define VIA8233_INTR_MASK (   chan)    ((VIA8233_REG_SGD_STAT_FLAG|VIA8233_REG_SGD_STAT_EOL) << ((chan) * 4))

Definition at line 228 of file via82xx.c.

#define VIA8233_REG_SGD_CHAN_MULTI   4

Definition at line 230 of file via82xx.c.

#define VIA8233_REG_SGD_CHAN_REC   6

Definition at line 231 of file via82xx.c.

#define VIA8233_REG_SGD_CHAN_REC1   7

Definition at line 232 of file via82xx.c.

#define VIA8233_REG_SGD_CHAN_SDX   0

Definition at line 229 of file via82xx.c.

#define VIA8233_REG_SGD_STAT_ACTIVE   (1<<3)

Definition at line 227 of file via82xx.c.

#define VIA8233_REG_SGD_STAT_EOL   (1<<1)

Definition at line 225 of file via82xx.c.

#define VIA8233_REG_SGD_STAT_FLAG   (1<<0)

Definition at line 224 of file via82xx.c.

#define VIA8233_REG_SGD_STAT_STOP   (1<<2)

Definition at line 226 of file via82xx.c.

#define VIA8233_REG_TYPE_16BIT   0x00200000 /* RW */

Definition at line 173 of file via82xx.c.

#define VIA8233_REG_TYPE_STEREO   0x00100000 /* RW */

Definition at line 174 of file via82xx.c.

#define VIA8233_SHADOW_STAT_ACTIVE   0x08 /* RO */

Definition at line 144 of file via82xx.c.

#define VIA8233_SPDIF_CTRL   0x49

Definition at line 293 of file via82xx.c.

#define VIA8233_SPDIF_DX3   0x08

Definition at line 294 of file via82xx.c.

#define VIA8233_SPDIF_SLOT_1011   0x00

Definition at line 296 of file via82xx.c.

#define VIA8233_SPDIF_SLOT_34   0x01

Definition at line 297 of file via82xx.c.

#define VIA8233_SPDIF_SLOT_69   0x03

Definition at line 299 of file via82xx.c.

#define VIA8233_SPDIF_SLOT_78   0x02

Definition at line 298 of file via82xx.c.

#define VIA8233_SPDIF_SLOT_MASK   0x03

Definition at line 295 of file via82xx.c.

#define VIA8233_VOLCHG_CTRL   0x48

Definition at line 292 of file via82xx.c.

#define VIA_ACLINK_C00_READY   0x01 /* primary codec ready */

Definition at line 267 of file via82xx.c.

#define VIA_ACLINK_C01_READY   0x04 /* secondary codec ready */

Definition at line 265 of file via82xx.c.

#define VIA_ACLINK_C10_READY   0x10

Definition at line 264 of file via82xx.c.

#define VIA_ACLINK_C11_READY   0x20

Definition at line 263 of file via82xx.c.

#define VIA_ACLINK_CTRL   0x41

Definition at line 268 of file via82xx.c.

#define VIA_ACLINK_CTRL_ENABLE   0x80 /* 0: disable, 1: enable */

Definition at line 269 of file via82xx.c.

#define VIA_ACLINK_CTRL_FM   0x02 /* via686 only */

Definition at line 275 of file via82xx.c.

#define VIA_ACLINK_CTRL_INIT
Value:
VIA_ACLINK_CTRL_RESET|\
VIA_ACLINK_CTRL_PCM|\
VIA_ACLINK_CTRL_VRA)

Definition at line 277 of file via82xx.c.

#define VIA_ACLINK_CTRL_PCM   0x04 /* 0: disable PCM, 1: enable PCM */

Definition at line 274 of file via82xx.c.

#define VIA_ACLINK_CTRL_RESET   0x40 /* 0: assert, 1: de-assert */

Definition at line 270 of file via82xx.c.

#define VIA_ACLINK_CTRL_SB   0x01 /* via686 only */

Definition at line 276 of file via82xx.c.

#define VIA_ACLINK_CTRL_SDO   0x10 /* 0: release SDO, 1: force SDO hi */

Definition at line 272 of file via82xx.c.

#define VIA_ACLINK_CTRL_SYNC   0x20 /* 0: release SYNC, 1: force SYNC hi */

Definition at line 271 of file via82xx.c.

#define VIA_ACLINK_CTRL_VRA   0x08 /* 0: disable VRA, 1: enable VRA */

Definition at line 273 of file via82xx.c.

#define VIA_ACLINK_LOWPOWER   0x02 /* low-power state */

Definition at line 266 of file via82xx.c.

#define VIA_ACLINK_STAT   0x40

Definition at line 262 of file via82xx.c.

#define VIA_DXS_48K   3

Definition at line 307 of file via82xx.c.

#define VIA_DXS_AUTO   0

Definition at line 304 of file via82xx.c.

#define VIA_DXS_DISABLE   2

Definition at line 306 of file via82xx.c.

#define VIA_DXS_ENABLE   1

Definition at line 305 of file via82xx.c.

#define VIA_DXS_MAX_VOLUME   31 /* max. volume (attenuation) of reg 0x32/33 */

Definition at line 251 of file via82xx.c.

#define VIA_DXS_NO_VRA   4

Definition at line 308 of file via82xx.c.

#define VIA_DXS_SRC   5

Definition at line 309 of file via82xx.c.

#define VIA_FM_NMI_CTRL   0x48

Definition at line 291 of file via82xx.c.

#define VIA_FUNC_ENABLE   0x42

Definition at line 281 of file via82xx.c.

#define VIA_FUNC_ENABLE_FM   0x04

Definition at line 287 of file via82xx.c.

#define VIA_FUNC_ENABLE_GAME   0x08

Definition at line 286 of file via82xx.c.

#define VIA_FUNC_ENABLE_MIDI   0x02

Definition at line 288 of file via82xx.c.

#define VIA_FUNC_ENABLE_SB   0x01

Definition at line 289 of file via82xx.c.

#define VIA_FUNC_MIDI_IRQMASK   0x40 /* FIXME: not documented! */

Definition at line 283 of file via82xx.c.

#define VIA_FUNC_MIDI_PNP   0x80 /* FIXME: it's 0x40 in the datasheet! */

Definition at line 282 of file via82xx.c.

#define VIA_FUNC_RX2C_WRITE   0x20

Definition at line 284 of file via82xx.c.

#define VIA_FUNC_SB_FIFO_EMPTY   0x10

Definition at line 285 of file via82xx.c.

#define VIA_MAX_BUFSIZE   (1<<24)

Definition at line 322 of file via82xx.c.

#define VIA_MAX_DEVS   7 /* 4 playback, 1 multi, 2 capture */

Definition at line 347 of file via82xx.c.

#define VIA_PNP_CONTROL   0x43

Definition at line 290 of file via82xx.c.

#define VIA_REG_AC97   0x80 /* dword */

Definition at line 195 of file via82xx.c.

#define VIA_REG_AC97_BUSY   (1<<24)

Definition at line 202 of file via82xx.c.

#define VIA_REG_AC97_CMD_MASK   0x7e

Definition at line 205 of file via82xx.c.

#define VIA_REG_AC97_CMD_SHIFT   16

Definition at line 204 of file via82xx.c.

#define VIA_REG_AC97_CODEC_ID_MASK   (3<<30)

Definition at line 196 of file via82xx.c.

#define VIA_REG_AC97_CODEC_ID_PRIMARY   0x00

Definition at line 198 of file via82xx.c.

#define VIA_REG_AC97_CODEC_ID_SECONDARY   0x01

Definition at line 199 of file via82xx.c.

#define VIA_REG_AC97_CODEC_ID_SHIFT   30

Definition at line 197 of file via82xx.c.

#define VIA_REG_AC97_DATA_MASK   0xffff

Definition at line 207 of file via82xx.c.

#define VIA_REG_AC97_DATA_SHIFT   0

Definition at line 206 of file via82xx.c.

#define VIA_REG_AC97_PRIMARY_VALID   (1<<25)

Definition at line 201 of file via82xx.c.

#define VIA_REG_AC97_READ   (1<<23)

Definition at line 203 of file via82xx.c.

#define VIA_REG_AC97_SECONDARY_VALID   (1<<27)

Definition at line 200 of file via82xx.c.

#define VIA_REG_CAPTURE_CHANNEL   0x63 /* byte - input select */

Definition at line 253 of file via82xx.c.

#define VIA_REG_CAPTURE_CHANNEL_LINE   0

Definition at line 255 of file via82xx.c.

#define VIA_REG_CAPTURE_CHANNEL_MIC   0x4

Definition at line 254 of file via82xx.c.

#define VIA_REG_CAPTURE_FIFO_ENABLE   0x40

Definition at line 249 of file via82xx.c.

#define VIA_REG_CAPTURE_SELECT_CODEC   0x03 /* recording source codec (0 = primary) */

Definition at line 256 of file via82xx.c.

#define VIA_REG_CTRL_AUTOSTART   0x20

Definition at line 153 of file via82xx.c.

Definition at line 159 of file via82xx.c.

#define VIA_REG_CTRL_INT_EOL   0x02

Definition at line 156 of file via82xx.c.

#define VIA_REG_CTRL_INT_FLAG   0x01

Definition at line 157 of file via82xx.c.

#define VIA_REG_CTRL_INT_STOP   0x04

Definition at line 155 of file via82xx.c.

#define VIA_REG_CTRL_PAUSE   0x08 /* RW */

Definition at line 154 of file via82xx.c.

#define VIA_REG_CTRL_RESET   0x01 /* RW - probably reset? undocumented */

Definition at line 158 of file via82xx.c.

#define VIA_REG_CTRL_START   0x80 /* WO */

Definition at line 151 of file via82xx.c.

#define VIA_REG_CTRL_TERMINATE   0x40 /* WO */

Definition at line 152 of file via82xx.c.

#define VIA_REG_GPI_INTR   0x8c

Definition at line 235 of file via82xx.c.

#define VIA_REG_GPI_STATUS   0x88

Definition at line 234 of file via82xx.c.

#define VIA_REG_MULTPLAY_FMT_16BIT   0x80

Definition at line 246 of file via82xx.c.

#define VIA_REG_MULTPLAY_FMT_8BIT   0x00

Definition at line 245 of file via82xx.c.

#define VIA_REG_MULTPLAY_FMT_CH_MASK   0x70 /* # channels << 4 (valid = 1,2,4,6) */

Definition at line 247 of file via82xx.c.

#define VIA_REG_OFFSET_CONTROL   0x01 /* byte - channel control */

Definition at line 150 of file via82xx.c.

#define VIA_REG_OFFSET_CURR_COUNT   0x0c /* dword - channel current count (24 bit) */

Definition at line 175 of file via82xx.c.

#define VIA_REG_OFFSET_CURR_INDEX   0x0f /* byte - channel current index (for via8233 only) */

Definition at line 176 of file via82xx.c.

#define VIA_REG_OFFSET_CURR_PTR   0x04 /* dword - channel current pointer */

Definition at line 171 of file via82xx.c.

#define VIA_REG_OFFSET_STATUS   0x00 /* byte - channel status */

Definition at line 142 of file via82xx.c.

#define VIA_REG_OFFSET_STOP_IDX   0x08 /* dword - stop index, channel type, sample rate */

Definition at line 172 of file via82xx.c.

#define VIA_REG_OFFSET_TABLE_PTR   0x04 /* dword - channel table pointer */

Definition at line 170 of file via82xx.c.

#define VIA_REG_OFFSET_TYPE   0x02 /* byte - channel type (686 only) */

Definition at line 160 of file via82xx.c.

#define VIA_REG_OFS_CAPTURE_FIFO   0x02 /* byte - bit 6 = fifo enable */

Definition at line 248 of file via82xx.c.

#define VIA_REG_OFS_MULTPLAY_FORMAT   0x02 /* byte - format and channels */

Definition at line 244 of file via82xx.c.

#define VIA_REG_OFS_PLAYBACK_VOLUME_L   0x02 /* byte */

Definition at line 242 of file via82xx.c.

#define VIA_REG_OFS_PLAYBACK_VOLUME_R   0x03 /* byte */

Definition at line 243 of file via82xx.c.

#define VIA_REG_SGD_SHADOW   0x84 /* dword */

Definition at line 209 of file via82xx.c.

#define VIA_REG_SGD_STAT_CP_ACTIVE   (1<<13)

Definition at line 221 of file via82xx.c.

#define VIA_REG_SGD_STAT_CP_EOL   (1<<5)

Definition at line 215 of file via82xx.c.

#define VIA_REG_SGD_STAT_CP_FLAG   (1<<1)

Definition at line 212 of file via82xx.c.

#define VIA_REG_SGD_STAT_CP_STOP   (1<<9)

Definition at line 218 of file via82xx.c.

#define VIA_REG_SGD_STAT_FM_ACTIVE   (1<<14)

Definition at line 222 of file via82xx.c.

#define VIA_REG_SGD_STAT_FM_EOL   (1<<6)

Definition at line 216 of file via82xx.c.

#define VIA_REG_SGD_STAT_FM_FLAG   (1<<2)

Definition at line 213 of file via82xx.c.

#define VIA_REG_SGD_STAT_FM_STOP   (1<<10)

Definition at line 219 of file via82xx.c.

#define VIA_REG_SGD_STAT_PB_ACTIVE   (1<<12)

Definition at line 220 of file via82xx.c.

#define VIA_REG_SGD_STAT_PB_EOL   (1<<4)

Definition at line 214 of file via82xx.c.

#define VIA_REG_SGD_STAT_PB_FLAG   (1<<0)

Definition at line 211 of file via82xx.c.

#define VIA_REG_SGD_STAT_PB_STOP   (1<<8)

Definition at line 217 of file via82xx.c.

#define VIA_REG_STAT_ACTIVE   0x80 /* RO */

Definition at line 143 of file via82xx.c.

#define VIA_REG_STAT_EOL   0x02 /* RWC */

Definition at line 148 of file via82xx.c.

#define VIA_REG_STAT_FLAG   0x01 /* RWC */

Definition at line 149 of file via82xx.c.

#define VIA_REG_STAT_PAUSED   0x40 /* RO */

Definition at line 145 of file via82xx.c.

#define VIA_REG_STAT_STOPPED   0x04 /* RWC */

Definition at line 147 of file via82xx.c.

#define VIA_REG_STAT_TRIGGER_QUEUED   0x08 /* RO */

Definition at line 146 of file via82xx.c.

#define VIA_REG_TYPE_16BIT   0x20 /* RW */

Definition at line 162 of file via82xx.c.

#define VIA_REG_TYPE_AUTOSTART   0x80 /* RW - autostart at EOL */

Definition at line 161 of file via82xx.c.

#define VIA_REG_TYPE_INT_EOL   0x02

Definition at line 168 of file via82xx.c.

#define VIA_REG_TYPE_INT_FLAG   0x01

Definition at line 169 of file via82xx.c.

#define VIA_REG_TYPE_INT_LESSONE   0x08

Definition at line 166 of file via82xx.c.

#define VIA_REG_TYPE_INT_LLINE   0x00

Definition at line 164 of file via82xx.c.

#define VIA_REG_TYPE_INT_LSAMPLE   0x04

Definition at line 165 of file via82xx.c.

#define VIA_REG_TYPE_INT_MASK   0x0c

Definition at line 167 of file via82xx.c.

#define VIA_REG_TYPE_STEREO   0x10 /* RW */

Definition at line 163 of file via82xx.c.

#define VIA_REV_686_A   0x10

Definition at line 118 of file via82xx.c.

#define VIA_REV_686_B   0x11

Definition at line 119 of file via82xx.c.

#define VIA_REV_686_C   0x12

Definition at line 120 of file via82xx.c.

#define VIA_REV_686_D   0x13

Definition at line 121 of file via82xx.c.

#define VIA_REV_686_E   0x14

Definition at line 122 of file via82xx.c.

#define VIA_REV_686_H   0x20

Definition at line 123 of file via82xx.c.

#define VIA_REV_8233   0x30 /* 2 rec, 4 pb, 1 multi-pb, spdif */

Definition at line 128 of file via82xx.c.

#define VIA_REV_8233A   0x40 /* 1 rec, 1 multi-pb, spdf */

Definition at line 129 of file via82xx.c.

#define VIA_REV_8233C   0x20 /* 2 rec, 4 pb, 1 multi-pb */

Definition at line 127 of file via82xx.c.

#define VIA_REV_8235   0x50 /* 2 rec, 4 pb, 1 multi-pb, spdif */

Definition at line 130 of file via82xx.c.

#define VIA_REV_8237   0x60

Definition at line 131 of file via82xx.c.

#define VIA_REV_8251   0x70

Definition at line 132 of file via82xx.c.

#define VIA_REV_PRE_8233   0x10 /* not in market */

Definition at line 126 of file via82xx.c.

#define VIA_TABLE_SIZE   255

Definition at line 321 of file via82xx.c.

#define VIA_TBL_BIT_EOL   0x80000000

Definition at line 259 of file via82xx.c.

#define VIA_TBL_BIT_FLAG   0x40000000

Definition at line 258 of file via82xx.c.

#define VIADEV_REG (   viadev,
  x 
)    ((viadev)->port + VIA_REG_##x)

Definition at line 139 of file via82xx.c.

#define VIAREG (   via,
  x 
)    ((via)->port + VIA_REG_##x)

Definition at line 138 of file via82xx.c.

Enumeration Type Documentation

anonymous enum
Enumerator:
TYPE_CARD_VIA686 
TYPE_CARD_VIA8233 

Definition at line 344 of file via82xx.c.

anonymous enum
Enumerator:
TYPE_VIA686 
TYPE_VIA8233 
TYPE_VIA8233A 

Definition at line 345 of file via82xx.c.

Function Documentation

DEFINE_VIA_REGSET ( PLAYBACK  ,
0x00   
)
DEFINE_VIA_REGSET ( CAPTURE  ,
0x10   
)
DEFINE_VIA_REGSET ( FM  ,
0x20   
)
DEFINE_VIA_REGSET ( MULTPLAY  ,
0x40   
)
DEFINE_VIA_REGSET ( CAPTURE_8233  ,
0x60   
)
MODULE_AUTHOR ( "Jaroslav Kysela <[email protected]>"  )
MODULE_DESCRIPTION ( "VIA VT82xx audio )
MODULE_DEVICE_TABLE ( pci  ,
snd_via82xx_ids   
)
MODULE_LICENSE ( "GPL"  )
module_param ( index  ,
int  ,
0444   
)
module_param ( id  ,
charp  ,
0444   
)
module_param ( mpu_port  ,
long  ,
0444   
)
module_param ( ac97_clock  ,
int  ,
0444   
)
module_param ( ac97_quirk  ,
charp  ,
0444   
)
module_param ( dxs_support  ,
int  ,
0444   
)
module_param ( dxs_init_volume  ,
int  ,
0644   
)
module_param ( nodelay  ,
int  ,
0444   
)
module_param ( enable  ,
bool  ,
0444   
)
MODULE_PARM_DESC ( index  ,
"Index value for VIA 82xx bridge."   
)
MODULE_PARM_DESC ( id  ,
"ID string for VIA 82xx bridge."   
)
MODULE_PARM_DESC ( mpu_port  ,
"MPU-401 port. (VT82C686x only)"   
)
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 ( dxs_support  ,
"Support for DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 = no VRA, 5 = enable any sample rate)"   
)
MODULE_PARM_DESC ( dxs_init_volume  ,
"initial DXS volume (0-31)"   
)
MODULE_PARM_DESC ( nodelay  ,
"Disable 500ms init delay"   
)
module_pci_driver ( via82xx_driver  )
MODULE_SUPPORTED_DEVICE ( "{{VIA,VT82C686A/B/C,pci},{VIA,VT8233A/C,8235}}"  )