Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions | Variables
ac97_codec.h File Reference
#include <linux/bitops.h>
#include <linux/device.h>
#include <linux/workqueue.h>
#include <sound/pcm.h>
#include <sound/control.h>
#include <sound/info.h>

Go to the source code of this file.

Data Structures

struct  snd_ac97_build_ops
 
struct  snd_ac97_bus_ops
 
struct  snd_ac97_bus
 
struct  snd_ac97_res_table
 
struct  snd_ac97_template
 
struct  snd_ac97
 
struct  ac97_quirk
 
struct  ac97_pcm
 

Macros

#define AC97_BUS_MAX_DEVICES   4
 
#define AC97_RESET   0x00 /* Reset */
 
#define AC97_MASTER   0x02 /* Master Volume */
 
#define AC97_HEADPHONE   0x04 /* Headphone Volume (optional) */
 
#define AC97_MASTER_MONO   0x06 /* Master Volume Mono (optional) */
 
#define AC97_MASTER_TONE   0x08 /* Master Tone (Bass & Treble) (optional) */
 
#define AC97_PC_BEEP   0x0a /* PC Beep Volume (optinal) */
 
#define AC97_PHONE   0x0c /* Phone Volume (optional) */
 
#define AC97_MIC   0x0e /* MIC Volume */
 
#define AC97_LINE   0x10 /* Line In Volume */
 
#define AC97_CD   0x12 /* CD Volume */
 
#define AC97_VIDEO   0x14 /* Video Volume (optional) */
 
#define AC97_AUX   0x16 /* AUX Volume (optional) */
 
#define AC97_PCM   0x18 /* PCM Volume */
 
#define AC97_REC_SEL   0x1a /* Record Select */
 
#define AC97_REC_GAIN   0x1c /* Record Gain */
 
#define AC97_REC_GAIN_MIC   0x1e /* Record Gain MIC (optional) */
 
#define AC97_GENERAL_PURPOSE   0x20 /* General Purpose (optional) */
 
#define AC97_3D_CONTROL   0x22 /* 3D Control (optional) */
 
#define AC97_INT_PAGING   0x24 /* Audio Interrupt & Paging (AC'97 2.3) */
 
#define AC97_POWERDOWN   0x26 /* Powerdown control / status */
 
#define AC97_EXTENDED_ID   0x28 /* Extended Audio ID */
 
#define AC97_EXTENDED_STATUS   0x2a /* Extended Audio Status and Control */
 
#define AC97_PCM_FRONT_DAC_RATE   0x2c /* PCM Front DAC Rate */
 
#define AC97_PCM_SURR_DAC_RATE   0x2e /* PCM Surround DAC Rate */
 
#define AC97_PCM_LFE_DAC_RATE   0x30 /* PCM LFE DAC Rate */
 
#define AC97_PCM_LR_ADC_RATE   0x32 /* PCM LR ADC Rate */
 
#define AC97_PCM_MIC_ADC_RATE   0x34 /* PCM MIC ADC Rate */
 
#define AC97_CENTER_LFE_MASTER   0x36 /* Center + LFE Master Volume */
 
#define AC97_SURROUND_MASTER   0x38 /* Surround (Rear) Master Volume */
 
#define AC97_SPDIF   0x3a /* S/PDIF control */
 
#define AC97_EXTENDED_MID   0x3c /* Extended Modem ID */
 
#define AC97_EXTENDED_MSTATUS   0x3e /* Extended Modem Status and Control */
 
#define AC97_LINE1_RATE   0x40 /* Line1 DAC/ADC Rate */
 
#define AC97_LINE2_RATE   0x42 /* Line2 DAC/ADC Rate */
 
#define AC97_HANDSET_RATE   0x44 /* Handset DAC/ADC Rate */
 
#define AC97_LINE1_LEVEL   0x46 /* Line1 DAC/ADC Level */
 
#define AC97_LINE2_LEVEL   0x48 /* Line2 DAC/ADC Level */
 
#define AC97_HANDSET_LEVEL   0x4a /* Handset DAC/ADC Level */
 
#define AC97_GPIO_CFG   0x4c /* GPIO Configuration */
 
#define AC97_GPIO_POLARITY   0x4e /* GPIO Pin Polarity/Type, 0=low, 1=high active */
 
#define AC97_GPIO_STICKY   0x50 /* GPIO Pin Sticky, 0=not, 1=sticky */
 
#define AC97_GPIO_WAKEUP   0x52 /* GPIO Pin Wakeup, 0=no int, 1=yes int */
 
#define AC97_GPIO_STATUS   0x54 /* GPIO Pin Status, slot 12 */
 
#define AC97_MISC_AFE   0x56 /* Miscellaneous Modem AFE Status and Control */
 
#define AC97_VENDOR_ID1   0x7c /* Vendor ID1 */
 
#define AC97_VENDOR_ID2   0x7e /* Vendor ID2 / revision */
 
#define AC97_CODEC_CLASS_REV   0x60 /* Codec Class/Revision */
 
#define AC97_PCI_SVID   0x62 /* PCI Subsystem Vendor ID */
 
#define AC97_PCI_SID   0x64 /* PCI Subsystem ID */
 
#define AC97_FUNC_SELECT   0x66 /* Function Select */
 
#define AC97_FUNC_INFO   0x68 /* Function Information */
 
#define AC97_SENSE_INFO   0x6a /* Sense Details */
 
#define AC97_MUTE_MASK_MONO   0x8000
 
#define AC97_MUTE_MASK_STEREO   0x8080
 
#define AC97_SLOT_TAG   0
 
#define AC97_SLOT_CMD_ADDR   1
 
#define AC97_SLOT_CMD_DATA   2
 
#define AC97_SLOT_PCM_LEFT   3
 
#define AC97_SLOT_PCM_RIGHT   4
 
#define AC97_SLOT_MODEM_LINE1   5
 
#define AC97_SLOT_PCM_CENTER   6
 
#define AC97_SLOT_MIC   6 /* input */
 
#define AC97_SLOT_SPDIF_LEFT1   6
 
#define AC97_SLOT_PCM_SLEFT   7 /* surround left */
 
#define AC97_SLOT_PCM_LEFT_0   7 /* double rate operation */
 
#define AC97_SLOT_SPDIF_LEFT   7
 
#define AC97_SLOT_PCM_SRIGHT   8 /* surround right */
 
#define AC97_SLOT_PCM_RIGHT_0   8 /* double rate operation */
 
#define AC97_SLOT_SPDIF_RIGHT   8
 
#define AC97_SLOT_LFE   9
 
#define AC97_SLOT_SPDIF_RIGHT1   9
 
#define AC97_SLOT_MODEM_LINE2   10
 
#define AC97_SLOT_PCM_LEFT_1   10 /* double rate operation */
 
#define AC97_SLOT_SPDIF_LEFT2   10
 
#define AC97_SLOT_HANDSET   11 /* output */
 
#define AC97_SLOT_PCM_RIGHT_1   11 /* double rate operation */
 
#define AC97_SLOT_SPDIF_RIGHT2   11
 
#define AC97_SLOT_MODEM_GPIO   12 /* modem GPIO */
 
#define AC97_SLOT_PCM_CENTER_1   12 /* double rate operation */
 
#define AC97_BC_DEDICATED_MIC   0x0001 /* Dedicated Mic PCM In Channel */
 
#define AC97_BC_RESERVED1   0x0002 /* Reserved (was Modem Line Codec support) */
 
#define AC97_BC_BASS_TREBLE   0x0004 /* Bass & Treble Control */
 
#define AC97_BC_SIM_STEREO   0x0008 /* Simulated stereo */
 
#define AC97_BC_HEADPHONE   0x0010 /* Headphone Out Support */
 
#define AC97_BC_LOUDNESS   0x0020 /* Loudness (bass boost) Support */
 
#define AC97_BC_16BIT_DAC   0x0000 /* 16-bit DAC resolution */
 
#define AC97_BC_18BIT_DAC   0x0040 /* 18-bit DAC resolution */
 
#define AC97_BC_20BIT_DAC   0x0080 /* 20-bit DAC resolution */
 
#define AC97_BC_DAC_MASK   0x00c0
 
#define AC97_BC_16BIT_ADC   0x0000 /* 16-bit ADC resolution */
 
#define AC97_BC_18BIT_ADC   0x0100 /* 18-bit ADC resolution */
 
#define AC97_BC_20BIT_ADC   0x0200 /* 20-bit ADC resolution */
 
#define AC97_BC_ADC_MASK   0x0300
 
#define AC97_BC_3D_TECH_ID_MASK   0x7c00 /* Per-vendor ID of 3D enhancement */
 
#define AC97_GP_DRSS_MASK   0x0c00 /* double rate slot select */
 
#define AC97_GP_DRSS_1011   0x0000 /* LR(C) 10+11(+12) */
 
#define AC97_GP_DRSS_78   0x0400 /* LR 7+8 */
 
#define AC97_PD_ADC_STATUS   0x0001 /* ADC status (RO) */
 
#define AC97_PD_DAC_STATUS   0x0002 /* DAC status (RO) */
 
#define AC97_PD_MIXER_STATUS   0x0004 /* Analog mixer status (RO) */
 
#define AC97_PD_VREF_STATUS   0x0008 /* Vref status (RO) */
 
#define AC97_PD_PR0   0x0100 /* Power down PCM ADCs and input MUX */
 
#define AC97_PD_PR1   0x0200 /* Power down PCM front DAC */
 
#define AC97_PD_PR2   0x0400 /* Power down Mixer (Vref still on) */
 
#define AC97_PD_PR3   0x0800 /* Power down Mixer (Vref off) */
 
#define AC97_PD_PR4   0x1000 /* Power down AC-Link */
 
#define AC97_PD_PR5   0x2000 /* Disable internal clock usage */
 
#define AC97_PD_PR6   0x4000 /* Headphone amplifier */
 
#define AC97_PD_EAPD   0x8000 /* External Amplifer Power Down (EAPD) */
 
#define AC97_EI_VRA   0x0001 /* Variable bit rate supported */
 
#define AC97_EI_DRA   0x0002 /* Double rate supported */
 
#define AC97_EI_SPDIF   0x0004 /* S/PDIF out supported */
 
#define AC97_EI_VRM   0x0008 /* Variable bit rate supported for MIC */
 
#define AC97_EI_DACS_SLOT_MASK   0x0030 /* DACs slot assignment */
 
#define AC97_EI_DACS_SLOT_SHIFT   4
 
#define AC97_EI_CDAC   0x0040 /* PCM Center DAC available */
 
#define AC97_EI_SDAC   0x0080 /* PCM Surround DACs available */
 
#define AC97_EI_LDAC   0x0100 /* PCM LFE DAC available */
 
#define AC97_EI_AMAP   0x0200 /* indicates optional slot/DAC mapping based on codec ID */
 
#define AC97_EI_REV_MASK   0x0c00 /* AC'97 revision mask */
 
#define AC97_EI_REV_22   0x0400 /* AC'97 revision 2.2 */
 
#define AC97_EI_REV_23   0x0800 /* AC'97 revision 2.3 */
 
#define AC97_EI_REV_SHIFT   10
 
#define AC97_EI_ADDR_MASK   0xc000 /* physical codec ID (address) */
 
#define AC97_EI_ADDR_SHIFT   14
 
#define AC97_EA_VRA   0x0001 /* Variable bit rate enable bit */
 
#define AC97_EA_DRA   0x0002 /* Double-rate audio enable bit */
 
#define AC97_EA_SPDIF   0x0004 /* S/PDIF out enable bit */
 
#define AC97_EA_VRM   0x0008 /* Variable bit rate for MIC enable bit */
 
#define AC97_EA_SPSA_SLOT_MASK   0x0030 /* Mask for slot assignment bits */
 
#define AC97_EA_SPSA_SLOT_SHIFT   4
 
#define AC97_EA_SPSA_3_4   0x0000 /* Slot assigned to 3 & 4 */
 
#define AC97_EA_SPSA_7_8   0x0010 /* Slot assigned to 7 & 8 */
 
#define AC97_EA_SPSA_6_9   0x0020 /* Slot assigned to 6 & 9 */
 
#define AC97_EA_SPSA_10_11   0x0030 /* Slot assigned to 10 & 11 */
 
#define AC97_EA_CDAC   0x0040 /* PCM Center DAC is ready (Read only) */
 
#define AC97_EA_SDAC   0x0080 /* PCM Surround DACs are ready (Read only) */
 
#define AC97_EA_LDAC   0x0100 /* PCM LFE DAC is ready (Read only) */
 
#define AC97_EA_MDAC   0x0200 /* MIC ADC is ready (Read only) */
 
#define AC97_EA_SPCV   0x0400 /* S/PDIF configuration valid (Read only) */
 
#define AC97_EA_PRI   0x0800 /* Turns the PCM Center DAC off */
 
#define AC97_EA_PRJ   0x1000 /* Turns the PCM Surround DACs off */
 
#define AC97_EA_PRK   0x2000 /* Turns the PCM LFE DAC off */
 
#define AC97_EA_PRL   0x4000 /* Turns the MIC ADC off */
 
#define AC97_SC_PRO   0x0001 /* Professional status */
 
#define AC97_SC_NAUDIO   0x0002 /* Non audio stream */
 
#define AC97_SC_COPY   0x0004 /* Copyright status */
 
#define AC97_SC_PRE   0x0008 /* Preemphasis status */
 
#define AC97_SC_CC_MASK   0x07f0 /* Category Code mask */
 
#define AC97_SC_CC_SHIFT   4
 
#define AC97_SC_L   0x0800 /* Generation Level status */
 
#define AC97_SC_SPSR_MASK   0x3000 /* S/PDIF Sample Rate bits */
 
#define AC97_SC_SPSR_SHIFT   12
 
#define AC97_SC_SPSR_44K   0x0000 /* Use 44.1kHz Sample rate */
 
#define AC97_SC_SPSR_48K   0x2000 /* Use 48kHz Sample rate */
 
#define AC97_SC_SPSR_32K   0x3000 /* Use 32kHz Sample rate */
 
#define AC97_SC_DRS   0x4000 /* Double Rate S/PDIF */
 
#define AC97_SC_V   0x8000 /* Validity status */
 
#define AC97_PAGE_MASK   0x000f /* Page Selector */
 
#define AC97_PAGE_VENDOR   0 /* Vendor-specific registers */
 
#define AC97_PAGE_1   1 /* Extended Codec Registers page 1 */
 
#define AC97_INT_ENABLE   0x0800 /* Interrupt Enable */
 
#define AC97_INT_SENSE   0x1000 /* Sense Cycle */
 
#define AC97_INT_CAUSE_SENSE   0x2000 /* Sense Cycle Completed (RO) */
 
#define AC97_INT_CAUSE_GPIO   0x4000 /* GPIO bits changed (RO) */
 
#define AC97_INT_STATUS   0x8000 /* Interrupt Status */
 
#define AC97_MEI_LINE1   0x0001 /* Line1 present */
 
#define AC97_MEI_LINE2   0x0002 /* Line2 present */
 
#define AC97_MEI_HANDSET   0x0004 /* Handset present */
 
#define AC97_MEI_CID1   0x0008 /* caller ID decode for Line1 is supported */
 
#define AC97_MEI_CID2   0x0010 /* caller ID decode for Line2 is supported */
 
#define AC97_MEI_ADDR_MASK   0xc000 /* physical codec ID (address) */
 
#define AC97_MEI_ADDR_SHIFT   14
 
#define AC97_MEA_GPIO   0x0001 /* GPIO is ready (ro) */
 
#define AC97_MEA_MREF   0x0002 /* Vref is up to nominal level (ro) */
 
#define AC97_MEA_ADC1   0x0004 /* ADC1 operational (ro) */
 
#define AC97_MEA_DAC1   0x0008 /* DAC1 operational (ro) */
 
#define AC97_MEA_ADC2   0x0010 /* ADC2 operational (ro) */
 
#define AC97_MEA_DAC2   0x0020 /* DAC2 operational (ro) */
 
#define AC97_MEA_HADC   0x0040 /* HADC operational (ro) */
 
#define AC97_MEA_HDAC   0x0080 /* HDAC operational (ro) */
 
#define AC97_MEA_PRA   0x0100 /* GPIO power down (high) */
 
#define AC97_MEA_PRB   0x0200 /* reserved */
 
#define AC97_MEA_PRC   0x0400 /* ADC1 power down (high) */
 
#define AC97_MEA_PRD   0x0800 /* DAC1 power down (high) */
 
#define AC97_MEA_PRE   0x1000 /* ADC2 power down (high) */
 
#define AC97_MEA_PRF   0x2000 /* DAC2 power down (high) */
 
#define AC97_MEA_PRG   0x4000 /* HADC power down (high) */
 
#define AC97_MEA_PRH   0x8000 /* HDAC power down (high) */
 
#define AC97_GPIO_LINE1_OH   0x0001 /* Off Hook Line1 */
 
#define AC97_GPIO_LINE1_RI   0x0002 /* Ring Detect Line1 */
 
#define AC97_GPIO_LINE1_CID   0x0004 /* Caller ID path enable Line1 */
 
#define AC97_GPIO_LINE1_LCS   0x0008 /* Loop Current Sense Line1 */
 
#define AC97_GPIO_LINE1_PULSE   0x0010 /* Opt./ Pulse Dial Line1 (out) */
 
#define AC97_GPIO_LINE1_HL1R   0x0020 /* Opt./ Handset to Line1 relay control (out) */
 
#define AC97_GPIO_LINE1_HOHD   0x0040 /* Opt./ Handset off hook detect Line1 (in) */
 
#define AC97_GPIO_LINE12_AC   0x0080 /* Opt./ Int.bit 1 / Line1/2 AC (out) */
 
#define AC97_GPIO_LINE12_DC   0x0100 /* Opt./ Int.bit 2 / Line1/2 DC (out) */
 
#define AC97_GPIO_LINE12_RS   0x0200 /* Opt./ Int.bit 3 / Line1/2 RS (out) */
 
#define AC97_GPIO_LINE2_OH   0x0400 /* Off Hook Line2 */
 
#define AC97_GPIO_LINE2_RI   0x0800 /* Ring Detect Line2 */
 
#define AC97_GPIO_LINE2_CID   0x1000 /* Caller ID path enable Line2 */
 
#define AC97_GPIO_LINE2_LCS   0x2000 /* Loop Current Sense Line2 */
 
#define AC97_GPIO_LINE2_PULSE   0x4000 /* Opt./ Pulse Dial Line2 (out) */
 
#define AC97_GPIO_LINE2_HL1R   0x8000 /* Opt./ Handset to Line2 relay control (out) */
 
#define AC97_SIGMATEL_OUTSEL   0x64 /* Output Select, STAC9758 */
 
#define AC97_SIGMATEL_INSEL   0x66 /* Input Select, STAC9758 */
 
#define AC97_SIGMATEL_IOMISC   0x68 /* STAC9758 */
 
#define AC97_SIGMATEL_ANALOG   0x6c /* Analog Special */
 
#define AC97_SIGMATEL_DAC2INVERT   0x6e
 
#define AC97_SIGMATEL_BIAS1   0x70
 
#define AC97_SIGMATEL_BIAS2   0x72
 
#define AC97_SIGMATEL_VARIOUS   0x72 /* STAC9758 */
 
#define AC97_SIGMATEL_MULTICHN   0x74 /* Multi-Channel programming */
 
#define AC97_SIGMATEL_CIC1   0x76
 
#define AC97_SIGMATEL_CIC2   0x78
 
#define AC97_AD_TEST   0x5a /* test register */
 
#define AC97_AD_TEST2   0x5c /* undocumented test register 2 */
 
#define AC97_AD_HPFD_SHIFT   12 /* High Pass Filter Disable */
 
#define AC97_AD_CODEC_CFG   0x70 /* codec configuration */
 
#define AC97_AD_JACK_SPDIF   0x72 /* Jack Sense & S/PDIF */
 
#define AC97_AD_SERIAL_CFG   0x74 /* Serial Configuration */
 
#define AC97_AD_MISC   0x76 /* Misc Control Bits */
 
#define AC97_AD_VREFD_SHIFT   2 /* V_REFOUT Disable (AD1888) */
 
#define AC97_CSR_ACMODE   0x5e /* AC Mode Register */
 
#define AC97_CSR_MISC_CRYSTAL   0x60 /* Misc Crystal Control */
 
#define AC97_CSR_SPDIF   0x68 /* S/PDIF Register */
 
#define AC97_CSR_SERIAL   0x6a /* Serial Port Control */
 
#define AC97_CSR_SPECF_ADDR   0x6c /* Special Feature Address */
 
#define AC97_CSR_SPECF_DATA   0x6e /* Special Feature Data */
 
#define AC97_CSR_BDI_STATUS   0x7a /* BDI Status */
 
#define AC97_CXR_AUDIO_MISC   0x5c
 
#define AC97_CXR_SPDIFEN   (1<<3)
 
#define AC97_CXR_COPYRGT   (1<<2)
 
#define AC97_CXR_SPDIF_MASK   (3<<0)
 
#define AC97_CXR_SPDIF_PCM   0x0
 
#define AC97_CXR_SPDIF_AC3   0x2
 
#define AC97_ALC650_SPDIF_INPUT_STATUS1   0x60
 
#define AC97_ALC650_PRO   0x0001 /* Professional status */
 
#define AC97_ALC650_NAUDIO   0x0002 /* Non audio stream */
 
#define AC97_ALC650_COPY   0x0004 /* Copyright status */
 
#define AC97_ALC650_PRE   0x0038 /* Preemphasis status */
 
#define AC97_ALC650_PRE_SHIFT   3
 
#define AC97_ALC650_MODE   0x00C0 /* Preemphasis status */
 
#define AC97_ALC650_MODE_SHIFT   6
 
#define AC97_ALC650_CC_MASK   0x7f00 /* Category Code mask */
 
#define AC97_ALC650_CC_SHIFT   8
 
#define AC97_ALC650_L   0x8000 /* Generation Level status */
 
#define AC97_ALC650_SPDIF_INPUT_STATUS2   0x62
 
#define AC97_ALC650_SOUCE_MASK   0x000f /* Source number */
 
#define AC97_ALC650_CHANNEL_MASK   0x00f0 /* Channel number */
 
#define AC97_ALC650_CHANNEL_SHIFT   4
 
#define AC97_ALC650_SPSR_MASK   0x0f00 /* S/PDIF Sample Rate bits */
 
#define AC97_ALC650_SPSR_SHIFT   8
 
#define AC97_ALC650_SPSR_44K   0x0000 /* Use 44.1kHz Sample rate */
 
#define AC97_ALC650_SPSR_48K   0x0200 /* Use 48kHz Sample rate */
 
#define AC97_ALC650_SPSR_32K   0x0300 /* Use 32kHz Sample rate */
 
#define AC97_ALC650_CLOCK_ACCURACY   0x3000 /* Clock accuracy */
 
#define AC97_ALC650_CLOCK_SHIFT   12
 
#define AC97_ALC650_CLOCK_LOCK   0x4000 /* Clock locked status */
 
#define AC97_ALC650_V   0x8000 /* Validity status */
 
#define AC97_ALC650_SURR_DAC_VOL   0x64
 
#define AC97_ALC650_LFE_DAC_VOL   0x66
 
#define AC97_ALC650_UNKNOWN1   0x68
 
#define AC97_ALC650_MULTICH   0x6a
 
#define AC97_ALC650_UNKNOWN2   0x6c
 
#define AC97_ALC650_REVISION   0x6e
 
#define AC97_ALC650_UNKNOWN3   0x70
 
#define AC97_ALC650_UNKNOWN4   0x72
 
#define AC97_ALC650_MISC   0x74
 
#define AC97_ALC650_GPIO_SETUP   0x76
 
#define AC97_ALC650_GPIO_STATUS   0x78
 
#define AC97_ALC650_CLOCK   0x7a
 
#define AC97_YMF7X3_DIT_CTRL   0x66 /* DIT Control (YMF743) / 2 (YMF753) */
 
#define AC97_YMF7X3_3D_MODE_SEL   0x68 /* 3D Mode Select */
 
#define AC97_CM9738_VENDOR_CTRL   0x5a
 
#define AC97_CM9739_MULTI_CHAN   0x64
 
#define AC97_CM9739_SPDIF_IN_STATUS   0x68 /* 32bit */
 
#define AC97_CM9739_SPDIF_CTRL   0x6c
 
#define AC97_WM97XX_FMIXER_VOL   0x72
 
#define AC97_WM9704_RMIXER_VOL   0x74
 
#define AC97_WM9704_TEST   0x5a
 
#define AC97_WM9704_RPCM_VOL   0x70
 
#define AC97_WM9711_OUT3VOL   0x16
 
#define AC97_SCAP_AUDIO   (1<<0) /* audio codec 97 */
 
#define AC97_SCAP_MODEM   (1<<1) /* modem codec 97 */
 
#define AC97_SCAP_SURROUND_DAC   (1<<2) /* surround L&R DACs are present */
 
#define AC97_SCAP_CENTER_LFE_DAC   (1<<3) /* center and LFE DACs are present */
 
#define AC97_SCAP_SKIP_AUDIO   (1<<4) /* skip audio part of codec */
 
#define AC97_SCAP_SKIP_MODEM   (1<<5) /* skip modem part of codec */
 
#define AC97_SCAP_INDEP_SDIN   (1<<6) /* independent SDIN */
 
#define AC97_SCAP_INV_EAPD   (1<<7) /* inverted EAPD */
 
#define AC97_SCAP_DETECT_BY_VENDOR   (1<<8) /* use vendor registers for read tests */
 
#define AC97_SCAP_NO_SPDIF   (1<<9) /* don't build SPDIF controls */
 
#define AC97_SCAP_EAPD_LED   (1<<10) /* EAPD as mute LED */
 
#define AC97_SCAP_POWER_SAVE   (1<<11) /* capable for aggressive power-saving */
 
#define AC97_HAS_PC_BEEP   (1<<0) /* force PC Speaker usage */
 
#define AC97_AD_MULTI   (1<<1) /* Analog Devices - multi codecs */
 
#define AC97_CS_SPDIF   (1<<2) /* Cirrus Logic uses funky SPDIF */
 
#define AC97_CX_SPDIF   (1<<3) /* Conexant's spdif interface */
 
#define AC97_STEREO_MUTES   (1<<4) /* has stereo mute bits */
 
#define AC97_DOUBLE_RATE   (1<<5) /* supports double rate playback */
 
#define AC97_HAS_NO_MASTER_VOL   (1<<6) /* no Master volume */
 
#define AC97_HAS_NO_PCM_VOL   (1<<7) /* no PCM volume */
 
#define AC97_DEFAULT_POWER_OFF   (1<<8) /* no RESET write */
 
#define AC97_MODEM_PATCH   (1<<9) /* modem patch */
 
#define AC97_HAS_NO_REC_GAIN   (1<<10) /* no Record gain */
 
#define AC97_HAS_NO_PHONE   (1<<11) /* no PHONE volume */
 
#define AC97_HAS_NO_PC_BEEP   (1<<12) /* no PC Beep volume */
 
#define AC97_HAS_NO_VIDEO   (1<<13) /* no Video volume */
 
#define AC97_HAS_NO_CD   (1<<14) /* no CD volume */
 
#define AC97_HAS_NO_MIC   (1<<15) /* no MIC volume */
 
#define AC97_HAS_NO_TONE   (1<<16) /* no Tone volume */
 
#define AC97_HAS_NO_STD_PCM   (1<<17) /* no standard AC97 PCM volume and mute */
 
#define AC97_HAS_NO_AUX   (1<<18) /* no standard AC97 AUX volume and mute */
 
#define AC97_HAS_8CH   (1<<19) /* supports 8-channel output */
 
#define AC97_RATES_FRONT_DAC   0
 
#define AC97_RATES_SURR_DAC   1
 
#define AC97_RATES_LFE_DAC   2
 
#define AC97_RATES_ADC   3
 
#define AC97_RATES_MIC_ADC   4
 
#define AC97_RATES_SPDIF   5
 
#define to_ac97_t(d)   container_of(d, struct snd_ac97, dev)
 

Enumerations

enum  {
  AC97_TUNE_DEFAULT = -1, AC97_TUNE_NONE = 0, AC97_TUNE_HP_ONLY, AC97_TUNE_SWAP_HP,
  AC97_TUNE_SWAP_SURROUND, AC97_TUNE_AD_SHARING, AC97_TUNE_ALC_JACK, AC97_TUNE_INV_EAPD,
  AC97_TUNE_MUTE_LED, AC97_TUNE_HP_MUTE_LED
}
 
enum  ac97_pcm_cfg {
  AC97_PCM_CFG_FRONT = 2, AC97_PCM_CFG_REAR = 10, AC97_PCM_CFG_LFE = 11, AC97_PCM_CFG_40 = 4,
  AC97_PCM_CFG_51 = 6, AC97_PCM_CFG_SPDIF = 20
}
 

Functions

int snd_ac97_bus (struct snd_card *card, int num, struct snd_ac97_bus_ops *ops, void *private_data, struct snd_ac97_bus **rbus)
 
int snd_ac97_mixer (struct snd_ac97_bus *bus, struct snd_ac97_template *template, struct snd_ac97 **rac97)
 
const charsnd_ac97_get_short_name (struct snd_ac97 *ac97)
 
void snd_ac97_write (struct snd_ac97 *ac97, unsigned short reg, unsigned short value)
 
unsigned short snd_ac97_read (struct snd_ac97 *ac97, unsigned short reg)
 
void snd_ac97_write_cache (struct snd_ac97 *ac97, unsigned short reg, unsigned short value)
 
int snd_ac97_update (struct snd_ac97 *ac97, unsigned short reg, unsigned short value)
 
int snd_ac97_update_bits (struct snd_ac97 *ac97, unsigned short reg, unsigned short mask, unsigned short value)
 
int snd_ac97_tune_hardware (struct snd_ac97 *ac97, struct ac97_quirk *quirk, const char *override)
 
int snd_ac97_set_rate (struct snd_ac97 *ac97, int reg, unsigned int rate)
 
int snd_ac97_pcm_assign (struct snd_ac97_bus *ac97, unsigned short pcms_count, const struct ac97_pcm *pcms)
 
int snd_ac97_pcm_open (struct ac97_pcm *pcm, unsigned int rate, enum ac97_pcm_cfg cfg, unsigned short slots)
 
int snd_ac97_pcm_close (struct ac97_pcm *pcm)
 
int snd_ac97_pcm_double_rate_rules (struct snd_pcm_runtime *runtime)
 

Variables

struct bus_type ac97_bus_type
 

Macro Definition Documentation

#define AC97_3D_CONTROL   0x22 /* 3D Control (optional) */

Definition at line 59 of file ac97_codec.h.

#define AC97_AD_CODEC_CFG   0x70 /* codec configuration */

Definition at line 293 of file ac97_codec.h.

#define AC97_AD_HPFD_SHIFT   12 /* High Pass Filter Disable */

Definition at line 292 of file ac97_codec.h.

#define AC97_AD_JACK_SPDIF   0x72 /* Jack Sense & S/PDIF */

Definition at line 294 of file ac97_codec.h.

#define AC97_AD_MISC   0x76 /* Misc Control Bits */

Definition at line 296 of file ac97_codec.h.

#define AC97_AD_MULTI   (1<<1) /* Analog Devices - multi codecs */

Definition at line 392 of file ac97_codec.h.

#define AC97_AD_SERIAL_CFG   0x74 /* Serial Configuration */

Definition at line 295 of file ac97_codec.h.

#define AC97_AD_TEST   0x5a /* test register */

Definition at line 290 of file ac97_codec.h.

#define AC97_AD_TEST2   0x5c /* undocumented test register 2 */

Definition at line 291 of file ac97_codec.h.

#define AC97_AD_VREFD_SHIFT   2 /* V_REFOUT Disable (AD1888) */

Definition at line 297 of file ac97_codec.h.

#define AC97_ALC650_CC_MASK   0x7f00 /* Category Code mask */

Definition at line 326 of file ac97_codec.h.

#define AC97_ALC650_CC_SHIFT   8

Definition at line 327 of file ac97_codec.h.

#define AC97_ALC650_CHANNEL_MASK   0x00f0 /* Channel number */

Definition at line 333 of file ac97_codec.h.

#define AC97_ALC650_CHANNEL_SHIFT   4

Definition at line 334 of file ac97_codec.h.

#define AC97_ALC650_CLOCK   0x7a

Definition at line 356 of file ac97_codec.h.

#define AC97_ALC650_CLOCK_ACCURACY   0x3000 /* Clock accuracy */

Definition at line 340 of file ac97_codec.h.

#define AC97_ALC650_CLOCK_LOCK   0x4000 /* Clock locked status */

Definition at line 342 of file ac97_codec.h.

#define AC97_ALC650_CLOCK_SHIFT   12

Definition at line 341 of file ac97_codec.h.

#define AC97_ALC650_COPY   0x0004 /* Copyright status */

Definition at line 321 of file ac97_codec.h.

#define AC97_ALC650_GPIO_SETUP   0x76

Definition at line 354 of file ac97_codec.h.

#define AC97_ALC650_GPIO_STATUS   0x78

Definition at line 355 of file ac97_codec.h.

#define AC97_ALC650_L   0x8000 /* Generation Level status */

Definition at line 328 of file ac97_codec.h.

#define AC97_ALC650_LFE_DAC_VOL   0x66

Definition at line 346 of file ac97_codec.h.

#define AC97_ALC650_MISC   0x74

Definition at line 353 of file ac97_codec.h.

#define AC97_ALC650_MODE   0x00C0 /* Preemphasis status */

Definition at line 324 of file ac97_codec.h.

#define AC97_ALC650_MODE_SHIFT   6

Definition at line 325 of file ac97_codec.h.

#define AC97_ALC650_MULTICH   0x6a

Definition at line 348 of file ac97_codec.h.

#define AC97_ALC650_NAUDIO   0x0002 /* Non audio stream */

Definition at line 320 of file ac97_codec.h.

#define AC97_ALC650_PRE   0x0038 /* Preemphasis status */

Definition at line 322 of file ac97_codec.h.

#define AC97_ALC650_PRE_SHIFT   3

Definition at line 323 of file ac97_codec.h.

#define AC97_ALC650_PRO   0x0001 /* Professional status */

Definition at line 319 of file ac97_codec.h.

#define AC97_ALC650_REVISION   0x6e

Definition at line 350 of file ac97_codec.h.

#define AC97_ALC650_SOUCE_MASK   0x000f /* Source number */

Definition at line 332 of file ac97_codec.h.

#define AC97_ALC650_SPDIF_INPUT_STATUS1   0x60

Definition at line 317 of file ac97_codec.h.

#define AC97_ALC650_SPDIF_INPUT_STATUS2   0x62

Definition at line 330 of file ac97_codec.h.

#define AC97_ALC650_SPSR_32K   0x0300 /* Use 32kHz Sample rate */

Definition at line 339 of file ac97_codec.h.

#define AC97_ALC650_SPSR_44K   0x0000 /* Use 44.1kHz Sample rate */

Definition at line 337 of file ac97_codec.h.

#define AC97_ALC650_SPSR_48K   0x0200 /* Use 48kHz Sample rate */

Definition at line 338 of file ac97_codec.h.

#define AC97_ALC650_SPSR_MASK   0x0f00 /* S/PDIF Sample Rate bits */

Definition at line 335 of file ac97_codec.h.

#define AC97_ALC650_SPSR_SHIFT   8

Definition at line 336 of file ac97_codec.h.

#define AC97_ALC650_SURR_DAC_VOL   0x64

Definition at line 345 of file ac97_codec.h.

#define AC97_ALC650_UNKNOWN1   0x68

Definition at line 347 of file ac97_codec.h.

#define AC97_ALC650_UNKNOWN2   0x6c

Definition at line 349 of file ac97_codec.h.

#define AC97_ALC650_UNKNOWN3   0x70

Definition at line 351 of file ac97_codec.h.

#define AC97_ALC650_UNKNOWN4   0x72

Definition at line 352 of file ac97_codec.h.

#define AC97_ALC650_V   0x8000 /* Validity status */

Definition at line 343 of file ac97_codec.h.

#define AC97_AUX   0x16 /* AUX Volume (optional) */

Definition at line 53 of file ac97_codec.h.

#define AC97_BC_16BIT_ADC   0x0000 /* 16-bit ADC resolution */

Definition at line 141 of file ac97_codec.h.

#define AC97_BC_16BIT_DAC   0x0000 /* 16-bit DAC resolution */

Definition at line 137 of file ac97_codec.h.

#define AC97_BC_18BIT_ADC   0x0100 /* 18-bit ADC resolution */

Definition at line 142 of file ac97_codec.h.

#define AC97_BC_18BIT_DAC   0x0040 /* 18-bit DAC resolution */

Definition at line 138 of file ac97_codec.h.

#define AC97_BC_20BIT_ADC   0x0200 /* 20-bit ADC resolution */

Definition at line 143 of file ac97_codec.h.

#define AC97_BC_20BIT_DAC   0x0080 /* 20-bit DAC resolution */

Definition at line 139 of file ac97_codec.h.

#define AC97_BC_3D_TECH_ID_MASK   0x7c00 /* Per-vendor ID of 3D enhancement */

Definition at line 145 of file ac97_codec.h.

#define AC97_BC_ADC_MASK   0x0300

Definition at line 144 of file ac97_codec.h.

#define AC97_BC_BASS_TREBLE   0x0004 /* Bass & Treble Control */

Definition at line 133 of file ac97_codec.h.

#define AC97_BC_DAC_MASK   0x00c0

Definition at line 140 of file ac97_codec.h.

#define AC97_BC_DEDICATED_MIC   0x0001 /* Dedicated Mic PCM In Channel */

Definition at line 131 of file ac97_codec.h.

#define AC97_BC_HEADPHONE   0x0010 /* Headphone Out Support */

Definition at line 135 of file ac97_codec.h.

#define AC97_BC_LOUDNESS   0x0020 /* Loudness (bass boost) Support */

Definition at line 136 of file ac97_codec.h.

#define AC97_BC_RESERVED1   0x0002 /* Reserved (was Modem Line Codec support) */

Definition at line 132 of file ac97_codec.h.

#define AC97_BC_SIM_STEREO   0x0008 /* Simulated stereo */

Definition at line 134 of file ac97_codec.h.

#define AC97_BUS_MAX_DEVICES   4

Definition at line 36 of file ac97_codec.h.

#define AC97_CD   0x12 /* CD Volume */

Definition at line 51 of file ac97_codec.h.

#define AC97_CENTER_LFE_MASTER   0x36 /* Center + LFE Master Volume */

Definition at line 70 of file ac97_codec.h.

#define AC97_CM9738_VENDOR_CTRL   0x5a

Definition at line 363 of file ac97_codec.h.

#define AC97_CM9739_MULTI_CHAN   0x64

Definition at line 364 of file ac97_codec.h.

#define AC97_CM9739_SPDIF_CTRL   0x6c

Definition at line 366 of file ac97_codec.h.

#define AC97_CM9739_SPDIF_IN_STATUS   0x68 /* 32bit */

Definition at line 365 of file ac97_codec.h.

#define AC97_CODEC_CLASS_REV   0x60 /* Codec Class/Revision */

Definition at line 92 of file ac97_codec.h.

#define AC97_CS_SPDIF   (1<<2) /* Cirrus Logic uses funky SPDIF */

Definition at line 393 of file ac97_codec.h.

#define AC97_CSR_ACMODE   0x5e /* AC Mode Register */

Definition at line 300 of file ac97_codec.h.

#define AC97_CSR_BDI_STATUS   0x7a /* BDI Status */

Definition at line 306 of file ac97_codec.h.

#define AC97_CSR_MISC_CRYSTAL   0x60 /* Misc Crystal Control */

Definition at line 301 of file ac97_codec.h.

#define AC97_CSR_SERIAL   0x6a /* Serial Port Control */

Definition at line 303 of file ac97_codec.h.

#define AC97_CSR_SPDIF   0x68 /* S/PDIF Register */

Definition at line 302 of file ac97_codec.h.

#define AC97_CSR_SPECF_ADDR   0x6c /* Special Feature Address */

Definition at line 304 of file ac97_codec.h.

#define AC97_CSR_SPECF_DATA   0x6e /* Special Feature Data */

Definition at line 305 of file ac97_codec.h.

#define AC97_CX_SPDIF   (1<<3) /* Conexant's spdif interface */

Definition at line 394 of file ac97_codec.h.

#define AC97_CXR_AUDIO_MISC   0x5c

Definition at line 309 of file ac97_codec.h.

#define AC97_CXR_COPYRGT   (1<<2)

Definition at line 311 of file ac97_codec.h.

#define AC97_CXR_SPDIF_AC3   0x2

Definition at line 314 of file ac97_codec.h.

#define AC97_CXR_SPDIF_MASK   (3<<0)

Definition at line 312 of file ac97_codec.h.

#define AC97_CXR_SPDIF_PCM   0x0

Definition at line 313 of file ac97_codec.h.

#define AC97_CXR_SPDIFEN   (1<<3)

Definition at line 310 of file ac97_codec.h.

#define AC97_DEFAULT_POWER_OFF   (1<<8) /* no RESET write */

Definition at line 399 of file ac97_codec.h.

#define AC97_DOUBLE_RATE   (1<<5) /* supports double rate playback */

Definition at line 396 of file ac97_codec.h.

#define AC97_EA_CDAC   0x0040 /* PCM Center DAC is ready (Read only) */

Definition at line 195 of file ac97_codec.h.

#define AC97_EA_DRA   0x0002 /* Double-rate audio enable bit */

Definition at line 186 of file ac97_codec.h.

#define AC97_EA_LDAC   0x0100 /* PCM LFE DAC is ready (Read only) */

Definition at line 197 of file ac97_codec.h.

#define AC97_EA_MDAC   0x0200 /* MIC ADC is ready (Read only) */

Definition at line 198 of file ac97_codec.h.

#define AC97_EA_PRI   0x0800 /* Turns the PCM Center DAC off */

Definition at line 200 of file ac97_codec.h.

#define AC97_EA_PRJ   0x1000 /* Turns the PCM Surround DACs off */

Definition at line 201 of file ac97_codec.h.

#define AC97_EA_PRK   0x2000 /* Turns the PCM LFE DAC off */

Definition at line 202 of file ac97_codec.h.

#define AC97_EA_PRL   0x4000 /* Turns the MIC ADC off */

Definition at line 203 of file ac97_codec.h.

#define AC97_EA_SDAC   0x0080 /* PCM Surround DACs are ready (Read only) */

Definition at line 196 of file ac97_codec.h.

#define AC97_EA_SPCV   0x0400 /* S/PDIF configuration valid (Read only) */

Definition at line 199 of file ac97_codec.h.

#define AC97_EA_SPDIF   0x0004 /* S/PDIF out enable bit */

Definition at line 187 of file ac97_codec.h.

#define AC97_EA_SPSA_10_11   0x0030 /* Slot assigned to 10 & 11 */

Definition at line 194 of file ac97_codec.h.

#define AC97_EA_SPSA_3_4   0x0000 /* Slot assigned to 3 & 4 */

Definition at line 191 of file ac97_codec.h.

#define AC97_EA_SPSA_6_9   0x0020 /* Slot assigned to 6 & 9 */

Definition at line 193 of file ac97_codec.h.

#define AC97_EA_SPSA_7_8   0x0010 /* Slot assigned to 7 & 8 */

Definition at line 192 of file ac97_codec.h.

#define AC97_EA_SPSA_SLOT_MASK   0x0030 /* Mask for slot assignment bits */

Definition at line 189 of file ac97_codec.h.

#define AC97_EA_SPSA_SLOT_SHIFT   4

Definition at line 190 of file ac97_codec.h.

#define AC97_EA_VRA   0x0001 /* Variable bit rate enable bit */

Definition at line 185 of file ac97_codec.h.

#define AC97_EA_VRM   0x0008 /* Variable bit rate for MIC enable bit */

Definition at line 188 of file ac97_codec.h.

#define AC97_EI_ADDR_MASK   0xc000 /* physical codec ID (address) */

Definition at line 181 of file ac97_codec.h.

#define AC97_EI_ADDR_SHIFT   14

Definition at line 182 of file ac97_codec.h.

#define AC97_EI_AMAP   0x0200 /* indicates optional slot/DAC mapping based on codec ID */

Definition at line 176 of file ac97_codec.h.

#define AC97_EI_CDAC   0x0040 /* PCM Center DAC available */

Definition at line 173 of file ac97_codec.h.

#define AC97_EI_DACS_SLOT_MASK   0x0030 /* DACs slot assignment */

Definition at line 171 of file ac97_codec.h.

#define AC97_EI_DACS_SLOT_SHIFT   4

Definition at line 172 of file ac97_codec.h.

#define AC97_EI_DRA   0x0002 /* Double rate supported */

Definition at line 168 of file ac97_codec.h.

#define AC97_EI_LDAC   0x0100 /* PCM LFE DAC available */

Definition at line 175 of file ac97_codec.h.

#define AC97_EI_REV_22   0x0400 /* AC'97 revision 2.2 */

Definition at line 178 of file ac97_codec.h.

#define AC97_EI_REV_23   0x0800 /* AC'97 revision 2.3 */

Definition at line 179 of file ac97_codec.h.

#define AC97_EI_REV_MASK   0x0c00 /* AC'97 revision mask */

Definition at line 177 of file ac97_codec.h.

#define AC97_EI_REV_SHIFT   10

Definition at line 180 of file ac97_codec.h.

#define AC97_EI_SDAC   0x0080 /* PCM Surround DACs available */

Definition at line 174 of file ac97_codec.h.

#define AC97_EI_SPDIF   0x0004 /* S/PDIF out supported */

Definition at line 169 of file ac97_codec.h.

#define AC97_EI_VRA   0x0001 /* Variable bit rate supported */

Definition at line 167 of file ac97_codec.h.

#define AC97_EI_VRM   0x0008 /* Variable bit rate supported for MIC */

Definition at line 170 of file ac97_codec.h.

#define AC97_EXTENDED_ID   0x28 /* Extended Audio ID */

Definition at line 63 of file ac97_codec.h.

#define AC97_EXTENDED_MID   0x3c /* Extended Modem ID */

Definition at line 74 of file ac97_codec.h.

#define AC97_EXTENDED_MSTATUS   0x3e /* Extended Modem Status and Control */

Definition at line 75 of file ac97_codec.h.

#define AC97_EXTENDED_STATUS   0x2a /* Extended Audio Status and Control */

Definition at line 64 of file ac97_codec.h.

#define AC97_FUNC_INFO   0x68 /* Function Information */

Definition at line 96 of file ac97_codec.h.

#define AC97_FUNC_SELECT   0x66 /* Function Select */

Definition at line 95 of file ac97_codec.h.

#define AC97_GENERAL_PURPOSE   0x20 /* General Purpose (optional) */

Definition at line 58 of file ac97_codec.h.

#define AC97_GP_DRSS_1011   0x0000 /* LR(C) 10+11(+12) */

Definition at line 149 of file ac97_codec.h.

#define AC97_GP_DRSS_78   0x0400 /* LR 7+8 */

Definition at line 150 of file ac97_codec.h.

#define AC97_GP_DRSS_MASK   0x0c00 /* double rate slot select */

Definition at line 148 of file ac97_codec.h.

#define AC97_GPIO_CFG   0x4c /* GPIO Configuration */

Definition at line 82 of file ac97_codec.h.

#define AC97_GPIO_LINE12_AC   0x0080 /* Opt./ Int.bit 1 / Line1/2 AC (out) */

Definition at line 266 of file ac97_codec.h.

#define AC97_GPIO_LINE12_DC   0x0100 /* Opt./ Int.bit 2 / Line1/2 DC (out) */

Definition at line 267 of file ac97_codec.h.

#define AC97_GPIO_LINE12_RS   0x0200 /* Opt./ Int.bit 3 / Line1/2 RS (out) */

Definition at line 268 of file ac97_codec.h.

#define AC97_GPIO_LINE1_CID   0x0004 /* Caller ID path enable Line1 */

Definition at line 261 of file ac97_codec.h.

#define AC97_GPIO_LINE1_HL1R   0x0020 /* Opt./ Handset to Line1 relay control (out) */

Definition at line 264 of file ac97_codec.h.

#define AC97_GPIO_LINE1_HOHD   0x0040 /* Opt./ Handset off hook detect Line1 (in) */

Definition at line 265 of file ac97_codec.h.

#define AC97_GPIO_LINE1_LCS   0x0008 /* Loop Current Sense Line1 */

Definition at line 262 of file ac97_codec.h.

#define AC97_GPIO_LINE1_OH   0x0001 /* Off Hook Line1 */

Definition at line 259 of file ac97_codec.h.

#define AC97_GPIO_LINE1_PULSE   0x0010 /* Opt./ Pulse Dial Line1 (out) */

Definition at line 263 of file ac97_codec.h.

#define AC97_GPIO_LINE1_RI   0x0002 /* Ring Detect Line1 */

Definition at line 260 of file ac97_codec.h.

#define AC97_GPIO_LINE2_CID   0x1000 /* Caller ID path enable Line2 */

Definition at line 271 of file ac97_codec.h.

#define AC97_GPIO_LINE2_HL1R   0x8000 /* Opt./ Handset to Line2 relay control (out) */

Definition at line 274 of file ac97_codec.h.

#define AC97_GPIO_LINE2_LCS   0x2000 /* Loop Current Sense Line2 */

Definition at line 272 of file ac97_codec.h.

#define AC97_GPIO_LINE2_OH   0x0400 /* Off Hook Line2 */

Definition at line 269 of file ac97_codec.h.

#define AC97_GPIO_LINE2_PULSE   0x4000 /* Opt./ Pulse Dial Line2 (out) */

Definition at line 273 of file ac97_codec.h.

#define AC97_GPIO_LINE2_RI   0x0800 /* Ring Detect Line2 */

Definition at line 270 of file ac97_codec.h.

#define AC97_GPIO_POLARITY   0x4e /* GPIO Pin Polarity/Type, 0=low, 1=high active */

Definition at line 83 of file ac97_codec.h.

#define AC97_GPIO_STATUS   0x54 /* GPIO Pin Status, slot 12 */

Definition at line 86 of file ac97_codec.h.

#define AC97_GPIO_STICKY   0x50 /* GPIO Pin Sticky, 0=not, 1=sticky */

Definition at line 84 of file ac97_codec.h.

#define AC97_GPIO_WAKEUP   0x52 /* GPIO Pin Wakeup, 0=no int, 1=yes int */

Definition at line 85 of file ac97_codec.h.

#define AC97_HANDSET_LEVEL   0x4a /* Handset DAC/ADC Level */

Definition at line 81 of file ac97_codec.h.

#define AC97_HANDSET_RATE   0x44 /* Handset DAC/ADC Rate */

Definition at line 78 of file ac97_codec.h.

#define AC97_HAS_8CH   (1<<19) /* supports 8-channel output */

Definition at line 410 of file ac97_codec.h.

#define AC97_HAS_NO_AUX   (1<<18) /* no standard AC97 AUX volume and mute */

Definition at line 409 of file ac97_codec.h.

#define AC97_HAS_NO_CD   (1<<14) /* no CD volume */

Definition at line 405 of file ac97_codec.h.

#define AC97_HAS_NO_MASTER_VOL   (1<<6) /* no Master volume */

Definition at line 397 of file ac97_codec.h.

#define AC97_HAS_NO_MIC   (1<<15) /* no MIC volume */

Definition at line 406 of file ac97_codec.h.

#define AC97_HAS_NO_PC_BEEP   (1<<12) /* no PC Beep volume */

Definition at line 403 of file ac97_codec.h.

#define AC97_HAS_NO_PCM_VOL   (1<<7) /* no PCM volume */

Definition at line 398 of file ac97_codec.h.

#define AC97_HAS_NO_PHONE   (1<<11) /* no PHONE volume */

Definition at line 402 of file ac97_codec.h.

#define AC97_HAS_NO_REC_GAIN   (1<<10) /* no Record gain */

Definition at line 401 of file ac97_codec.h.

#define AC97_HAS_NO_STD_PCM   (1<<17) /* no standard AC97 PCM volume and mute */

Definition at line 408 of file ac97_codec.h.

#define AC97_HAS_NO_TONE   (1<<16) /* no Tone volume */

Definition at line 407 of file ac97_codec.h.

#define AC97_HAS_NO_VIDEO   (1<<13) /* no Video volume */

Definition at line 404 of file ac97_codec.h.

#define AC97_HAS_PC_BEEP   (1<<0) /* force PC Speaker usage */

Definition at line 391 of file ac97_codec.h.

#define AC97_HEADPHONE   0x04 /* Headphone Volume (optional) */

Definition at line 44 of file ac97_codec.h.

#define AC97_INT_CAUSE_GPIO   0x4000 /* GPIO bits changed (RO) */

Definition at line 228 of file ac97_codec.h.

#define AC97_INT_CAUSE_SENSE   0x2000 /* Sense Cycle Completed (RO) */

Definition at line 227 of file ac97_codec.h.

#define AC97_INT_ENABLE   0x0800 /* Interrupt Enable */

Definition at line 225 of file ac97_codec.h.

#define AC97_INT_PAGING   0x24 /* Audio Interrupt & Paging (AC'97 2.3) */

Definition at line 60 of file ac97_codec.h.

#define AC97_INT_SENSE   0x1000 /* Sense Cycle */

Definition at line 226 of file ac97_codec.h.

#define AC97_INT_STATUS   0x8000 /* Interrupt Status */

Definition at line 229 of file ac97_codec.h.

#define AC97_LINE   0x10 /* Line In Volume */

Definition at line 50 of file ac97_codec.h.

#define AC97_LINE1_LEVEL   0x46 /* Line1 DAC/ADC Level */

Definition at line 79 of file ac97_codec.h.

#define AC97_LINE1_RATE   0x40 /* Line1 DAC/ADC Rate */

Definition at line 76 of file ac97_codec.h.

#define AC97_LINE2_LEVEL   0x48 /* Line2 DAC/ADC Level */

Definition at line 80 of file ac97_codec.h.

#define AC97_LINE2_RATE   0x42 /* Line2 DAC/ADC Rate */

Definition at line 77 of file ac97_codec.h.

#define AC97_MASTER   0x02 /* Master Volume */

Definition at line 43 of file ac97_codec.h.

#define AC97_MASTER_MONO   0x06 /* Master Volume Mono (optional) */

Definition at line 45 of file ac97_codec.h.

#define AC97_MASTER_TONE   0x08 /* Master Tone (Bass & Treble) (optional) */

Definition at line 46 of file ac97_codec.h.

#define AC97_MEA_ADC1   0x0004 /* ADC1 operational (ro) */

Definition at line 243 of file ac97_codec.h.

#define AC97_MEA_ADC2   0x0010 /* ADC2 operational (ro) */

Definition at line 245 of file ac97_codec.h.

#define AC97_MEA_DAC1   0x0008 /* DAC1 operational (ro) */

Definition at line 244 of file ac97_codec.h.

#define AC97_MEA_DAC2   0x0020 /* DAC2 operational (ro) */

Definition at line 246 of file ac97_codec.h.

#define AC97_MEA_GPIO   0x0001 /* GPIO is ready (ro) */

Definition at line 241 of file ac97_codec.h.

#define AC97_MEA_HADC   0x0040 /* HADC operational (ro) */

Definition at line 247 of file ac97_codec.h.

#define AC97_MEA_HDAC   0x0080 /* HDAC operational (ro) */

Definition at line 248 of file ac97_codec.h.

#define AC97_MEA_MREF   0x0002 /* Vref is up to nominal level (ro) */

Definition at line 242 of file ac97_codec.h.

#define AC97_MEA_PRA   0x0100 /* GPIO power down (high) */

Definition at line 249 of file ac97_codec.h.

#define AC97_MEA_PRB   0x0200 /* reserved */

Definition at line 250 of file ac97_codec.h.

#define AC97_MEA_PRC   0x0400 /* ADC1 power down (high) */

Definition at line 251 of file ac97_codec.h.

#define AC97_MEA_PRD   0x0800 /* DAC1 power down (high) */

Definition at line 252 of file ac97_codec.h.

#define AC97_MEA_PRE   0x1000 /* ADC2 power down (high) */

Definition at line 253 of file ac97_codec.h.

#define AC97_MEA_PRF   0x2000 /* DAC2 power down (high) */

Definition at line 254 of file ac97_codec.h.

#define AC97_MEA_PRG   0x4000 /* HADC power down (high) */

Definition at line 255 of file ac97_codec.h.

#define AC97_MEA_PRH   0x8000 /* HDAC power down (high) */

Definition at line 256 of file ac97_codec.h.

#define AC97_MEI_ADDR_MASK   0xc000 /* physical codec ID (address) */

Definition at line 237 of file ac97_codec.h.

#define AC97_MEI_ADDR_SHIFT   14

Definition at line 238 of file ac97_codec.h.

#define AC97_MEI_CID1   0x0008 /* caller ID decode for Line1 is supported */

Definition at line 235 of file ac97_codec.h.

#define AC97_MEI_CID2   0x0010 /* caller ID decode for Line2 is supported */

Definition at line 236 of file ac97_codec.h.

#define AC97_MEI_HANDSET   0x0004 /* Handset present */

Definition at line 234 of file ac97_codec.h.

#define AC97_MEI_LINE1   0x0001 /* Line1 present */

Definition at line 232 of file ac97_codec.h.

#define AC97_MEI_LINE2   0x0002 /* Line2 present */

Definition at line 233 of file ac97_codec.h.

#define AC97_MIC   0x0e /* MIC Volume */

Definition at line 49 of file ac97_codec.h.

#define AC97_MISC_AFE   0x56 /* Miscellaneous Modem AFE Status and Control */

Definition at line 87 of file ac97_codec.h.

#define AC97_MODEM_PATCH   (1<<9) /* modem patch */

Definition at line 400 of file ac97_codec.h.

#define AC97_MUTE_MASK_MONO   0x8000

Definition at line 100 of file ac97_codec.h.

#define AC97_MUTE_MASK_STEREO   0x8080

Definition at line 101 of file ac97_codec.h.

#define AC97_PAGE_1   1 /* Extended Codec Registers page 1 */

Definition at line 224 of file ac97_codec.h.

#define AC97_PAGE_MASK   0x000f /* Page Selector */

Definition at line 222 of file ac97_codec.h.

#define AC97_PAGE_VENDOR   0 /* Vendor-specific registers */

Definition at line 223 of file ac97_codec.h.

#define AC97_PC_BEEP   0x0a /* PC Beep Volume (optinal) */

Definition at line 47 of file ac97_codec.h.

#define AC97_PCI_SID   0x64 /* PCI Subsystem ID */

Definition at line 94 of file ac97_codec.h.

#define AC97_PCI_SVID   0x62 /* PCI Subsystem Vendor ID */

Definition at line 93 of file ac97_codec.h.

#define AC97_PCM   0x18 /* PCM Volume */

Definition at line 54 of file ac97_codec.h.

#define AC97_PCM_FRONT_DAC_RATE   0x2c /* PCM Front DAC Rate */

Definition at line 65 of file ac97_codec.h.

#define AC97_PCM_LFE_DAC_RATE   0x30 /* PCM LFE DAC Rate */

Definition at line 67 of file ac97_codec.h.

#define AC97_PCM_LR_ADC_RATE   0x32 /* PCM LR ADC Rate */

Definition at line 68 of file ac97_codec.h.

#define AC97_PCM_MIC_ADC_RATE   0x34 /* PCM MIC ADC Rate */

Definition at line 69 of file ac97_codec.h.

#define AC97_PCM_SURR_DAC_RATE   0x2e /* PCM Surround DAC Rate */

Definition at line 66 of file ac97_codec.h.

#define AC97_PD_ADC_STATUS   0x0001 /* ADC status (RO) */

Definition at line 153 of file ac97_codec.h.

#define AC97_PD_DAC_STATUS   0x0002 /* DAC status (RO) */

Definition at line 154 of file ac97_codec.h.

#define AC97_PD_EAPD   0x8000 /* External Amplifer Power Down (EAPD) */

Definition at line 164 of file ac97_codec.h.

#define AC97_PD_MIXER_STATUS   0x0004 /* Analog mixer status (RO) */

Definition at line 155 of file ac97_codec.h.

#define AC97_PD_PR0   0x0100 /* Power down PCM ADCs and input MUX */

Definition at line 157 of file ac97_codec.h.

#define AC97_PD_PR1   0x0200 /* Power down PCM front DAC */

Definition at line 158 of file ac97_codec.h.

#define AC97_PD_PR2   0x0400 /* Power down Mixer (Vref still on) */

Definition at line 159 of file ac97_codec.h.

#define AC97_PD_PR3   0x0800 /* Power down Mixer (Vref off) */

Definition at line 160 of file ac97_codec.h.

#define AC97_PD_PR4   0x1000 /* Power down AC-Link */

Definition at line 161 of file ac97_codec.h.

#define AC97_PD_PR5   0x2000 /* Disable internal clock usage */

Definition at line 162 of file ac97_codec.h.

#define AC97_PD_PR6   0x4000 /* Headphone amplifier */

Definition at line 163 of file ac97_codec.h.

#define AC97_PD_VREF_STATUS   0x0008 /* Vref status (RO) */

Definition at line 156 of file ac97_codec.h.

#define AC97_PHONE   0x0c /* Phone Volume (optional) */

Definition at line 48 of file ac97_codec.h.

#define AC97_POWERDOWN   0x26 /* Powerdown control / status */

Definition at line 61 of file ac97_codec.h.

#define AC97_RATES_ADC   3

Definition at line 416 of file ac97_codec.h.

#define AC97_RATES_FRONT_DAC   0

Definition at line 413 of file ac97_codec.h.

#define AC97_RATES_LFE_DAC   2

Definition at line 415 of file ac97_codec.h.

#define AC97_RATES_MIC_ADC   4

Definition at line 417 of file ac97_codec.h.

#define AC97_RATES_SPDIF   5

Definition at line 418 of file ac97_codec.h.

#define AC97_RATES_SURR_DAC   1

Definition at line 414 of file ac97_codec.h.

#define AC97_REC_GAIN   0x1c /* Record Gain */

Definition at line 56 of file ac97_codec.h.

#define AC97_REC_GAIN_MIC   0x1e /* Record Gain MIC (optional) */

Definition at line 57 of file ac97_codec.h.

#define AC97_REC_SEL   0x1a /* Record Select */

Definition at line 55 of file ac97_codec.h.

#define AC97_RESET   0x00 /* Reset */

Definition at line 42 of file ac97_codec.h.

#define AC97_SC_CC_MASK   0x07f0 /* Category Code mask */

Definition at line 210 of file ac97_codec.h.

#define AC97_SC_CC_SHIFT   4

Definition at line 211 of file ac97_codec.h.

#define AC97_SC_COPY   0x0004 /* Copyright status */

Definition at line 208 of file ac97_codec.h.

#define AC97_SC_DRS   0x4000 /* Double Rate S/PDIF */

Definition at line 218 of file ac97_codec.h.

#define AC97_SC_L   0x0800 /* Generation Level status */

Definition at line 212 of file ac97_codec.h.

#define AC97_SC_NAUDIO   0x0002 /* Non audio stream */

Definition at line 207 of file ac97_codec.h.

#define AC97_SC_PRE   0x0008 /* Preemphasis status */

Definition at line 209 of file ac97_codec.h.

#define AC97_SC_PRO   0x0001 /* Professional status */

Definition at line 206 of file ac97_codec.h.

#define AC97_SC_SPSR_32K   0x3000 /* Use 32kHz Sample rate */

Definition at line 217 of file ac97_codec.h.

#define AC97_SC_SPSR_44K   0x0000 /* Use 44.1kHz Sample rate */

Definition at line 215 of file ac97_codec.h.

#define AC97_SC_SPSR_48K   0x2000 /* Use 48kHz Sample rate */

Definition at line 216 of file ac97_codec.h.

#define AC97_SC_SPSR_MASK   0x3000 /* S/PDIF Sample Rate bits */

Definition at line 213 of file ac97_codec.h.

#define AC97_SC_SPSR_SHIFT   12

Definition at line 214 of file ac97_codec.h.

#define AC97_SC_V   0x8000 /* Validity status */

Definition at line 219 of file ac97_codec.h.

#define AC97_SCAP_AUDIO   (1<<0) /* audio codec 97 */

Definition at line 377 of file ac97_codec.h.

#define AC97_SCAP_CENTER_LFE_DAC   (1<<3) /* center and LFE DACs are present */

Definition at line 380 of file ac97_codec.h.

#define AC97_SCAP_DETECT_BY_VENDOR   (1<<8) /* use vendor registers for read tests */

Definition at line 385 of file ac97_codec.h.

#define AC97_SCAP_EAPD_LED   (1<<10) /* EAPD as mute LED */

Definition at line 387 of file ac97_codec.h.

#define AC97_SCAP_INDEP_SDIN   (1<<6) /* independent SDIN */

Definition at line 383 of file ac97_codec.h.

#define AC97_SCAP_INV_EAPD   (1<<7) /* inverted EAPD */

Definition at line 384 of file ac97_codec.h.

#define AC97_SCAP_MODEM   (1<<1) /* modem codec 97 */

Definition at line 378 of file ac97_codec.h.

#define AC97_SCAP_NO_SPDIF   (1<<9) /* don't build SPDIF controls */

Definition at line 386 of file ac97_codec.h.

#define AC97_SCAP_POWER_SAVE   (1<<11) /* capable for aggressive power-saving */

Definition at line 388 of file ac97_codec.h.

#define AC97_SCAP_SKIP_AUDIO   (1<<4) /* skip audio part of codec */

Definition at line 381 of file ac97_codec.h.

#define AC97_SCAP_SKIP_MODEM   (1<<5) /* skip modem part of codec */

Definition at line 382 of file ac97_codec.h.

#define AC97_SCAP_SURROUND_DAC   (1<<2) /* surround L&R DACs are present */

Definition at line 379 of file ac97_codec.h.

#define AC97_SENSE_INFO   0x6a /* Sense Details */

Definition at line 97 of file ac97_codec.h.

#define AC97_SIGMATEL_ANALOG   0x6c /* Analog Special */

Definition at line 280 of file ac97_codec.h.

#define AC97_SIGMATEL_BIAS1   0x70

Definition at line 282 of file ac97_codec.h.

#define AC97_SIGMATEL_BIAS2   0x72

Definition at line 283 of file ac97_codec.h.

#define AC97_SIGMATEL_CIC1   0x76

Definition at line 286 of file ac97_codec.h.

#define AC97_SIGMATEL_CIC2   0x78

Definition at line 287 of file ac97_codec.h.

#define AC97_SIGMATEL_DAC2INVERT   0x6e

Definition at line 281 of file ac97_codec.h.

#define AC97_SIGMATEL_INSEL   0x66 /* Input Select, STAC9758 */

Definition at line 278 of file ac97_codec.h.

#define AC97_SIGMATEL_IOMISC   0x68 /* STAC9758 */

Definition at line 279 of file ac97_codec.h.

#define AC97_SIGMATEL_MULTICHN   0x74 /* Multi-Channel programming */

Definition at line 285 of file ac97_codec.h.

#define AC97_SIGMATEL_OUTSEL   0x64 /* Output Select, STAC9758 */

Definition at line 277 of file ac97_codec.h.

#define AC97_SIGMATEL_VARIOUS   0x72 /* STAC9758 */

Definition at line 284 of file ac97_codec.h.

#define AC97_SLOT_CMD_ADDR   1

Definition at line 105 of file ac97_codec.h.

#define AC97_SLOT_CMD_DATA   2

Definition at line 106 of file ac97_codec.h.

#define AC97_SLOT_HANDSET   11 /* output */

Definition at line 124 of file ac97_codec.h.

#define AC97_SLOT_LFE   9

Definition at line 119 of file ac97_codec.h.

#define AC97_SLOT_MIC   6 /* input */

Definition at line 111 of file ac97_codec.h.

#define AC97_SLOT_MODEM_GPIO   12 /* modem GPIO */

Definition at line 127 of file ac97_codec.h.

#define AC97_SLOT_MODEM_LINE1   5

Definition at line 109 of file ac97_codec.h.

#define AC97_SLOT_MODEM_LINE2   10

Definition at line 121 of file ac97_codec.h.

#define AC97_SLOT_PCM_CENTER   6

Definition at line 110 of file ac97_codec.h.

#define AC97_SLOT_PCM_CENTER_1   12 /* double rate operation */

Definition at line 128 of file ac97_codec.h.

#define AC97_SLOT_PCM_LEFT   3

Definition at line 107 of file ac97_codec.h.

#define AC97_SLOT_PCM_LEFT_0   7 /* double rate operation */

Definition at line 114 of file ac97_codec.h.

#define AC97_SLOT_PCM_LEFT_1   10 /* double rate operation */

Definition at line 122 of file ac97_codec.h.

#define AC97_SLOT_PCM_RIGHT   4

Definition at line 108 of file ac97_codec.h.

#define AC97_SLOT_PCM_RIGHT_0   8 /* double rate operation */

Definition at line 117 of file ac97_codec.h.

#define AC97_SLOT_PCM_RIGHT_1   11 /* double rate operation */

Definition at line 125 of file ac97_codec.h.

#define AC97_SLOT_PCM_SLEFT   7 /* surround left */

Definition at line 113 of file ac97_codec.h.

#define AC97_SLOT_PCM_SRIGHT   8 /* surround right */

Definition at line 116 of file ac97_codec.h.

#define AC97_SLOT_SPDIF_LEFT   7

Definition at line 115 of file ac97_codec.h.

#define AC97_SLOT_SPDIF_LEFT1   6

Definition at line 112 of file ac97_codec.h.

#define AC97_SLOT_SPDIF_LEFT2   10

Definition at line 123 of file ac97_codec.h.

#define AC97_SLOT_SPDIF_RIGHT   8

Definition at line 118 of file ac97_codec.h.

#define AC97_SLOT_SPDIF_RIGHT1   9

Definition at line 120 of file ac97_codec.h.

#define AC97_SLOT_SPDIF_RIGHT2   11

Definition at line 126 of file ac97_codec.h.

#define AC97_SLOT_TAG   0

Definition at line 104 of file ac97_codec.h.

#define AC97_SPDIF   0x3a /* S/PDIF control */

Definition at line 72 of file ac97_codec.h.

#define AC97_STEREO_MUTES   (1<<4) /* has stereo mute bits */

Definition at line 395 of file ac97_codec.h.

#define AC97_SURROUND_MASTER   0x38 /* Surround (Rear) Master Volume */

Definition at line 71 of file ac97_codec.h.

#define AC97_VENDOR_ID1   0x7c /* Vendor ID1 */

Definition at line 89 of file ac97_codec.h.

#define AC97_VENDOR_ID2   0x7e /* Vendor ID2 / revision */

Definition at line 90 of file ac97_codec.h.

#define AC97_VIDEO   0x14 /* Video Volume (optional) */

Definition at line 52 of file ac97_codec.h.

#define AC97_WM9704_RMIXER_VOL   0x74

Definition at line 370 of file ac97_codec.h.

#define AC97_WM9704_RPCM_VOL   0x70

Definition at line 372 of file ac97_codec.h.

#define AC97_WM9704_TEST   0x5a

Definition at line 371 of file ac97_codec.h.

#define AC97_WM9711_OUT3VOL   0x16

Definition at line 373 of file ac97_codec.h.

#define AC97_WM97XX_FMIXER_VOL   0x72

Definition at line 369 of file ac97_codec.h.

#define AC97_YMF7X3_3D_MODE_SEL   0x68 /* 3D Mode Select */

Definition at line 360 of file ac97_codec.h.

#define AC97_YMF7X3_DIT_CTRL   0x66 /* DIT Control (YMF743) / 2 (YMF753) */

Definition at line 359 of file ac97_codec.h.

#define to_ac97_t (   d)    container_of(d, struct snd_ac97, dev)

Definition at line 536 of file ac97_codec.h.

Enumeration Type Documentation

anonymous enum
Enumerator:
AC97_TUNE_DEFAULT 
AC97_TUNE_NONE 
AC97_TUNE_HP_ONLY 
AC97_TUNE_SWAP_HP 
AC97_TUNE_SWAP_SURROUND 
AC97_TUNE_AD_SHARING 
AC97_TUNE_ALC_JACK 
AC97_TUNE_INV_EAPD 
AC97_TUNE_MUTE_LED 
AC97_TUNE_HP_MUTE_LED 

Definition at line 589 of file ac97_codec.h.

Enumerator:
AC97_PCM_CFG_FRONT 
AC97_PCM_CFG_REAR 
AC97_PCM_CFG_LFE 
AC97_PCM_CFG_40 
AC97_PCM_CFG_51 
AC97_PCM_CFG_SPDIF 

Definition at line 618 of file ac97_codec.h.

Function Documentation

int snd_ac97_bus ( struct snd_card card,
int  num,
struct snd_ac97_bus_ops ops,
void private_data,
struct snd_ac97_bus **  rbus 
)

snd_ac97_bus - create an AC97 bus component : the card instance : the bus number : the bus callbacks table : private data pointer for the new instance : the pointer to store the new AC97 bus instance.

Creates an AC97 bus component. An struct snd_ac97_bus instance is newly allocated and initialized.

The ops table must include valid callbacks (at least read and write). The other callbacks, wait and reset, are not mandatory.

The clock is set to 48000. If another clock is needed, set (*rbus)->clock manually.

The AC97 bus instance is registered as a low-level device, so you don't have to release it manually.

Returns zero if successful, or a negative error code on failure.

Definition at line 1915 of file ac97_codec.c.

const char* snd_ac97_get_short_name ( struct snd_ac97 ac97)

snd_ac97_get_short_name - retrieve codec name : the codec instance

Returns the short identifying name of the codec.

Definition at line 1841 of file ac97_codec.c.

int snd_ac97_mixer ( struct snd_ac97_bus bus,
struct snd_ac97_template template,
struct snd_ac97 **  rac97 
)

snd_ac97_mixer - create an Codec97 component : the AC97 bus which codec is attached to : the template of ac97, including index, callbacks and the private data. : the pointer to store the new ac97 instance.

Creates an Codec97 component. An struct snd_ac97 instance is newly allocated and initialized from the template. The codec is then initialized by the standard procedure.

The template must include the codec number (num) and address (addr), and the private data (private_data).

The ac97 instance is registered as a low-level device, so you don't have to release it manually.

Returns zero if successful, or a negative error code on failure.

Definition at line 2011 of file ac97_codec.c.

int snd_ac97_pcm_assign ( struct snd_ac97_bus bus,
unsigned short  pcms_count,
const struct ac97_pcm pcms 
)

snd_ac97_pcm_assign - assign AC97 slots to given PCM streams : the ac97 bus instance : count of PCMs to be assigned : PCMs to be assigned

It assigns available AC97 slots for given PCMs. If none or only some slots are available, pcm->xxx.slots and pcm->xxx.rslots[] members are reduced and might be zero.

Definition at line 444 of file ac97_pcm.c.

int snd_ac97_pcm_close ( struct ac97_pcm pcm)

snd_ac97_pcm_close - closes the given AC97 pcm : the ac97 pcm instance

It frees the locked AC97 slots.

Definition at line 648 of file ac97_pcm.c.

int snd_ac97_pcm_double_rate_rules ( struct snd_pcm_runtime runtime)

snd_ac97_pcm_double_rate_rules - set double rate constraints : the runtime of the ac97 front playback pcm

Installs the hardware constraint rules to prevent using double rates and more than two channels at the same time.

Definition at line 722 of file ac97_pcm.c.

int snd_ac97_pcm_open ( struct ac97_pcm pcm,
unsigned int  rate,
enum ac97_pcm_cfg  cfg,
unsigned short  slots 
)

snd_ac97_pcm_open - opens the given AC97 pcm : the ac97 pcm instance : rate in Hz, if codec does not support VRA, this value must be 48000Hz : output stream characteristics : a subset of allocated slots (snd_ac97_pcm_assign) for this pcm

It locks the specified slots and sets the given rate to AC97 registers.

Definition at line 566 of file ac97_pcm.c.

unsigned short snd_ac97_read ( struct snd_ac97 ac97,
unsigned short  reg 
)

snd_ac97_read - read a value from the given register

: the ac97 instance : the register to read

Reads a value from the given register. This will invoke the read callback directly after the register check.

Returns the read value.

Definition at line 304 of file ac97_codec.c.

int snd_ac97_set_rate ( struct snd_ac97 ac97,
int  reg,
unsigned int  rate 
)

snd_ac97_set_rate - change the rate of the given input/output. : the ac97 instance : the register to change : the sample rate to set

Changes the rate of the given input/output on the codec. If the codec doesn't support VAR, the rate must be 48000 (except for SPDIF).

The valid registers are AC97_PMC_MIC_ADC_RATE, AC97_PCM_FRONT_DAC_RATE, AC97_PCM_LR_ADC_RATE. AC97_PCM_SURR_DAC_RATE and AC97_PCM_LFE_DAC_RATE are accepted if the codec supports them. AC97_SPDIF is accepted as a pseudo register to modify the SPDIF status bits.

Returns zero if successful, or a negative error code on failure.

Definition at line 258 of file ac97_pcm.c.

int snd_ac97_tune_hardware ( struct snd_ac97 ac97,
struct ac97_quirk quirk,
const char override 
)

snd_ac97_tune_hardware - tune up the hardware : the ac97 instance : quirk list : explicit quirk value (overrides the list if non-NULL)

Do some workaround for each pci device, such as renaming of the headphone (true line-out) control as "Master". The quirk-list must be terminated with a zero-filled entry.

Returns zero if successful, or a negative error code on failure.

Definition at line 2891 of file ac97_codec.c.

int snd_ac97_update ( struct snd_ac97 ac97,
unsigned short  reg,
unsigned short  value 
)

snd_ac97_update - update the value on the given register : the ac97 instance : the register to change : the value to set

Compares the value with the register cache and updates the value only when the value is changed.

Returns 1 if the value is changed, 0 if no change, or a negative code on failure.

Definition at line 358 of file ac97_codec.c.

int snd_ac97_update_bits ( struct snd_ac97 ac97,
unsigned short  reg,
unsigned short  mask,
unsigned short  value 
)

snd_ac97_update_bits - update the bits on the given register : the ac97 instance : the register to change : the bit-mask to change : the value to set

Updates the masked-bits on the given register only when the value is changed.

Returns 1 if the bits are changed, 0 if no change, or a negative code on failure.

Definition at line 390 of file ac97_codec.c.

void snd_ac97_write ( struct snd_ac97 ac97,
unsigned short  reg,
unsigned short  value 
)

snd_ac97_write - write a value on the given register : the ac97 instance : the register to change : the value to set

Writes a value on the given register. This will invoke the write callback directly after the register check. This function doesn't change the register cache unlike #snd_ca97_write_cache(), so use this only when you don't want to reflect the change to the suspend/resume state.

Definition at line 279 of file ac97_codec.c.

void snd_ac97_write_cache ( struct snd_ac97 ac97,
unsigned short  reg,
unsigned short  value 
)

snd_ac97_write_cache - write a value on the given register and update the cache : the ac97 instance : the register to change : the value to set

Writes a value on the given register and updates the register cache. The cached values are used for the cached-read and the suspend/resume.

Definition at line 333 of file ac97_codec.c.

Variable Documentation

struct bus_type ac97_bus_type

Definition at line 52 of file ac97_bus.c.