Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
bt87x.c File Reference
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/bitops.h>
#include <asm/io.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/control.h>
#include <sound/initval.h>

Go to the source code of this file.

Data Structures

struct  snd_bt87x_board
 
struct  snd_bt87x
 

Macros

#define REG_INT_STAT   0x100 /* interrupt status */
 
#define REG_INT_MASK   0x104 /* interrupt mask */
 
#define REG_GPIO_DMA_CTL   0x10c /* audio control */
 
#define REG_PACKET_LEN   0x110 /* audio packet lengths */
 
#define REG_RISC_STRT_ADD   0x114 /* RISC program start address */
 
#define REG_RISC_COUNT   0x120 /* RISC program counter */
 
#define INT_OFLOW   (1 << 3) /* audio A/D overflow */
 
#define INT_RISCI   (1 << 11) /* RISC instruction IRQ bit set */
 
#define INT_FBUS   (1 << 12) /* FIFO overrun due to bus access latency */
 
#define INT_FTRGT   (1 << 13) /* FIFO overrun due to target latency */
 
#define INT_FDSR   (1 << 14) /* FIFO data stream resynchronization */
 
#define INT_PPERR   (1 << 15) /* PCI parity error */
 
#define INT_RIPERR   (1 << 16) /* RISC instruction parity error */
 
#define INT_PABORT   (1 << 17) /* PCI master or target abort */
 
#define INT_OCERR   (1 << 18) /* invalid opcode */
 
#define INT_SCERR   (1 << 19) /* sync counter overflow */
 
#define INT_RISC_EN   (1 << 27) /* DMA controller running */
 
#define INT_RISCS_SHIFT   28 /* RISC status bits */
 
#define CTL_FIFO_ENABLE   (1 << 0) /* enable audio data FIFO */
 
#define CTL_RISC_ENABLE   (1 << 1) /* enable audio DMA controller */
 
#define CTL_PKTP_4   (0 << 2) /* packet mode FIFO trigger point - 4 DWORDs */
 
#define CTL_PKTP_8   (1 << 2) /* 8 DWORDs */
 
#define CTL_PKTP_16   (2 << 2) /* 16 DWORDs */
 
#define CTL_ACAP_EN   (1 << 4) /* enable audio capture */
 
#define CTL_DA_APP   (1 << 5) /* GPIO input */
 
#define CTL_DA_IOM_AFE   (0 << 6) /* audio A/D input */
 
#define CTL_DA_IOM_DA   (1 << 6) /* digital audio input */
 
#define CTL_DA_SDR_SHIFT   8 /* DDF first stage decimation rate */
 
#define CTL_DA_SDR_MASK   (0xf<< 8)
 
#define CTL_DA_LMT   (1 << 12) /* limit audio data values */
 
#define CTL_DA_ES2   (1 << 13) /* enable DDF stage 2 */
 
#define CTL_DA_SBR   (1 << 14) /* samples rounded to 8 bits */
 
#define CTL_DA_DPM   (1 << 15) /* data packet mode */
 
#define CTL_DA_LRD_SHIFT   16 /* ALRCK delay */
 
#define CTL_DA_MLB   (1 << 21) /* MSB/LSB format */
 
#define CTL_DA_LRI   (1 << 22) /* left/right indication */
 
#define CTL_DA_SCE   (1 << 23) /* sample clock edge */
 
#define CTL_A_SEL_STV   (0 << 24) /* TV tuner audio input */
 
#define CTL_A_SEL_SFM   (1 << 24) /* FM audio input */
 
#define CTL_A_SEL_SML   (2 << 24) /* mic/line audio input */
 
#define CTL_A_SEL_SMXC   (3 << 24) /* MUX bypass */
 
#define CTL_A_SEL_SHIFT   24
 
#define CTL_A_SEL_MASK   (3 << 24)
 
#define CTL_A_PWRDN   (1 << 26) /* analog audio power-down */
 
#define CTL_A_G2X   (1 << 27) /* audio gain boost */
 
#define CTL_A_GAIN_SHIFT   28 /* audio input gain */
 
#define CTL_A_GAIN_MASK   (0xf<<28)
 
#define RISC_WRITE   (0x1 << 28) /* write FIFO data to memory at address */
 
#define RISC_WRITEC   (0x5 << 28) /* write FIFO data to memory at current address */
 
#define RISC_SKIP   (0x2 << 28) /* skip FIFO data */
 
#define RISC_JUMP   (0x7 << 28) /* jump to address */
 
#define RISC_SYNC   (0x8 << 28) /* synchronize with FIFO */
 
#define RISC_BYTES_ENABLE   (0xf << 12) /* byte enable bits */
 
#define RISC_RESYNC   ( 1 << 15) /* disable FDSR errors */
 
#define RISC_SET_STATUS_SHIFT   16 /* set status bits */
 
#define RISC_RESET_STATUS_SHIFT   20 /* clear status bits */
 
#define RISC_IRQ   ( 1 << 24) /* interrupt */
 
#define RISC_EOL   ( 1 << 26) /* end of line */
 
#define RISC_SOL   ( 1 << 27) /* start of line */
 
#define RISC_SYNC_FM1   0x6
 
#define RISC_SYNC_VRO   0xc
 
#define ANALOG_CLOCK   1792000
 
#define CLOCK_DIV_MIN   4
 
#define CLOCK_DIV_MAX   15
 
#define ERROR_INTERRUPTS
 
#define MY_INTERRUPTS   (INT_RISCI | ERROR_INTERRUPTS)
 
#define MAX_RISC_SIZE   ((1 + 255 + (PAGE_ALIGN(255 * 4092) / PAGE_SIZE - 1) + 1 + 1) * 8)
 
#define snd_bt87x_capture_boost_info   snd_ctl_boolean_mono_info
 
#define BT_DEVICE(chip, subvend, subdev, id)
 

Enumerations

enum  snd_bt87x_boardid {
  SND_BT87X_BOARD_UNKNOWN, SND_BT87X_BOARD_GENERIC, SND_BT87X_BOARD_ANALOG, SND_BT87X_BOARD_OSPREY2x0,
  SND_BT87X_BOARD_OSPREY440, SND_BT87X_BOARD_AVPHONE98
}
 
enum  { DEVICE_DIGITAL, DEVICE_ANALOG }
 

Functions

 MODULE_AUTHOR ("Clemens Ladisch <[email protected]>")
 
 MODULE_DESCRIPTION ("Brooktree Bt87x audio driver")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_SUPPORTED_DEVICE ("{{Brooktree,Bt878},""{Brooktree,Bt879}}")
 
 module_param_array (index, int, NULL, 0444)
 
 MODULE_PARM_DESC (index,"Index value for Bt87x soundcard")
 
 module_param_array (id, charp, NULL, 0444)
 
 MODULE_PARM_DESC (id,"ID string for Bt87x soundcard")
 
 module_param_array (enable, bool, NULL, 0444)
 
 MODULE_PARM_DESC (enable,"Enable Bt87x soundcard")
 
 module_param_array (digital_rate, int, NULL, 0444)
 
 MODULE_PARM_DESC (digital_rate,"Digital input rate for Bt87x soundcard")
 
 module_param (load_all, bool, 0444)
 
 MODULE_PARM_DESC (load_all,"Allow to load the non-whitelisted cards")
 
 MODULE_DEVICE_TABLE (pci, snd_bt87x_ids)
 
 module_pci_driver (bt87x_driver)
 

Macro Definition Documentation

#define ANALOG_CLOCK   1792000

Definition at line 134 of file bt87x.c.

#define BT_DEVICE (   chip,
  subvend,
  subdev,
  id 
)
Value:
.device = chip, \
.subvendor = subvend, .subdevice = subdev, \
.driver_data = SND_BT87X_BOARD_ ## id }

Definition at line 785 of file bt87x.c.

#define CLOCK_DIV_MAX   15

Definition at line 140 of file bt87x.c.

#define CLOCK_DIV_MIN   4

Definition at line 138 of file bt87x.c.

#define CTL_A_G2X   (1 << 27) /* audio gain boost */

Definition at line 110 of file bt87x.c.

#define CTL_A_GAIN_MASK   (0xf<<28)

Definition at line 112 of file bt87x.c.

#define CTL_A_GAIN_SHIFT   28 /* audio input gain */

Definition at line 111 of file bt87x.c.

#define CTL_A_PWRDN   (1 << 26) /* analog audio power-down */

Definition at line 109 of file bt87x.c.

#define CTL_A_SEL_MASK   (3 << 24)

Definition at line 108 of file bt87x.c.

#define CTL_A_SEL_SFM   (1 << 24) /* FM audio input */

Definition at line 104 of file bt87x.c.

#define CTL_A_SEL_SHIFT   24

Definition at line 107 of file bt87x.c.

#define CTL_A_SEL_SML   (2 << 24) /* mic/line audio input */

Definition at line 105 of file bt87x.c.

#define CTL_A_SEL_SMXC   (3 << 24) /* MUX bypass */

Definition at line 106 of file bt87x.c.

#define CTL_A_SEL_STV   (0 << 24) /* TV tuner audio input */

Definition at line 103 of file bt87x.c.

#define CTL_ACAP_EN   (1 << 4) /* enable audio capture */

Definition at line 89 of file bt87x.c.

#define CTL_DA_APP   (1 << 5) /* GPIO input */

Definition at line 90 of file bt87x.c.

#define CTL_DA_DPM   (1 << 15) /* data packet mode */

Definition at line 98 of file bt87x.c.

#define CTL_DA_ES2   (1 << 13) /* enable DDF stage 2 */

Definition at line 96 of file bt87x.c.

#define CTL_DA_IOM_AFE   (0 << 6) /* audio A/D input */

Definition at line 91 of file bt87x.c.

#define CTL_DA_IOM_DA   (1 << 6) /* digital audio input */

Definition at line 92 of file bt87x.c.

#define CTL_DA_LMT   (1 << 12) /* limit audio data values */

Definition at line 95 of file bt87x.c.

#define CTL_DA_LRD_SHIFT   16 /* ALRCK delay */

Definition at line 99 of file bt87x.c.

#define CTL_DA_LRI   (1 << 22) /* left/right indication */

Definition at line 101 of file bt87x.c.

#define CTL_DA_MLB   (1 << 21) /* MSB/LSB format */

Definition at line 100 of file bt87x.c.

#define CTL_DA_SBR   (1 << 14) /* samples rounded to 8 bits */

Definition at line 97 of file bt87x.c.

#define CTL_DA_SCE   (1 << 23) /* sample clock edge */

Definition at line 102 of file bt87x.c.

#define CTL_DA_SDR_MASK   (0xf<< 8)

Definition at line 94 of file bt87x.c.

#define CTL_DA_SDR_SHIFT   8 /* DDF first stage decimation rate */

Definition at line 93 of file bt87x.c.

#define CTL_FIFO_ENABLE   (1 << 0) /* enable audio data FIFO */

Definition at line 84 of file bt87x.c.

#define CTL_PKTP_16   (2 << 2) /* 16 DWORDs */

Definition at line 88 of file bt87x.c.

#define CTL_PKTP_4   (0 << 2) /* packet mode FIFO trigger point - 4 DWORDs */

Definition at line 86 of file bt87x.c.

#define CTL_PKTP_8   (1 << 2) /* 8 DWORDs */

Definition at line 87 of file bt87x.c.

#define CTL_RISC_ENABLE   (1 << 1) /* enable audio DMA controller */

Definition at line 85 of file bt87x.c.

#define ERROR_INTERRUPTS
Value:
INT_RIPERR | INT_PABORT | INT_OCERR)

Definition at line 142 of file bt87x.c.

#define INT_FBUS   (1 << 12) /* FIFO overrun due to bus access latency */

Definition at line 72 of file bt87x.c.

#define INT_FDSR   (1 << 14) /* FIFO data stream resynchronization */

Definition at line 74 of file bt87x.c.

#define INT_FTRGT   (1 << 13) /* FIFO overrun due to target latency */

Definition at line 73 of file bt87x.c.

#define INT_OCERR   (1 << 18) /* invalid opcode */

Definition at line 78 of file bt87x.c.

#define INT_OFLOW   (1 << 3) /* audio A/D overflow */

Definition at line 70 of file bt87x.c.

#define INT_PABORT   (1 << 17) /* PCI master or target abort */

Definition at line 77 of file bt87x.c.

#define INT_PPERR   (1 << 15) /* PCI parity error */

Definition at line 75 of file bt87x.c.

#define INT_RIPERR   (1 << 16) /* RISC instruction parity error */

Definition at line 76 of file bt87x.c.

#define INT_RISC_EN   (1 << 27) /* DMA controller running */

Definition at line 80 of file bt87x.c.

#define INT_RISCI   (1 << 11) /* RISC instruction IRQ bit set */

Definition at line 71 of file bt87x.c.

#define INT_RISCS_SHIFT   28 /* RISC status bits */

Definition at line 81 of file bt87x.c.

#define INT_SCERR   (1 << 19) /* sync counter overflow */

Definition at line 79 of file bt87x.c.

#define MAX_RISC_SIZE   ((1 + 255 + (PAGE_ALIGN(255 * 4092) / PAGE_SIZE - 1) + 1 + 1) * 8)

Definition at line 147 of file bt87x.c.

#define MY_INTERRUPTS   (INT_RISCI | ERROR_INTERRUPTS)

Definition at line 144 of file bt87x.c.

#define REG_GPIO_DMA_CTL   0x10c /* audio control */

Definition at line 64 of file bt87x.c.

#define REG_INT_MASK   0x104 /* interrupt mask */

Definition at line 63 of file bt87x.c.

#define REG_INT_STAT   0x100 /* interrupt status */

Definition at line 62 of file bt87x.c.

#define REG_PACKET_LEN   0x110 /* audio packet lengths */

Definition at line 65 of file bt87x.c.

#define REG_RISC_COUNT   0x120 /* RISC program counter */

Definition at line 67 of file bt87x.c.

#define REG_RISC_STRT_ADD   0x114 /* RISC program start address */

Definition at line 66 of file bt87x.c.

#define RISC_BYTES_ENABLE   (0xf << 12) /* byte enable bits */

Definition at line 122 of file bt87x.c.

#define RISC_EOL   ( 1 << 26) /* end of line */

Definition at line 127 of file bt87x.c.

#define RISC_IRQ   ( 1 << 24) /* interrupt */

Definition at line 126 of file bt87x.c.

#define RISC_JUMP   (0x7 << 28) /* jump to address */

Definition at line 118 of file bt87x.c.

#define RISC_RESET_STATUS_SHIFT   20 /* clear status bits */

Definition at line 125 of file bt87x.c.

#define RISC_RESYNC   ( 1 << 15) /* disable FDSR errors */

Definition at line 123 of file bt87x.c.

#define RISC_SET_STATUS_SHIFT   16 /* set status bits */

Definition at line 124 of file bt87x.c.

#define RISC_SKIP   (0x2 << 28) /* skip FIFO data */

Definition at line 117 of file bt87x.c.

#define RISC_SOL   ( 1 << 27) /* start of line */

Definition at line 128 of file bt87x.c.

#define RISC_SYNC   (0x8 << 28) /* synchronize with FIFO */

Definition at line 119 of file bt87x.c.

#define RISC_SYNC_FM1   0x6

Definition at line 131 of file bt87x.c.

#define RISC_SYNC_VRO   0xc

Definition at line 132 of file bt87x.c.

#define RISC_WRITE   (0x1 << 28) /* write FIFO data to memory at address */

Definition at line 115 of file bt87x.c.

#define RISC_WRITEC   (0x5 << 28) /* write FIFO data to memory at current address */

Definition at line 116 of file bt87x.c.

#define snd_bt87x_capture_boost_info   snd_ctl_boolean_mono_info

Definition at line 601 of file bt87x.c.

Enumeration Type Documentation

anonymous enum
Enumerator:
DEVICE_DIGITAL 
DEVICE_ANALOG 

Definition at line 215 of file bt87x.c.

Enumerator:
SND_BT87X_BOARD_UNKNOWN 
SND_BT87X_BOARD_GENERIC 
SND_BT87X_BOARD_ANALOG 
SND_BT87X_BOARD_OSPREY2x0 
SND_BT87X_BOARD_OSPREY440 
SND_BT87X_BOARD_AVPHONE98 

Definition at line 150 of file bt87x.c.

Function Documentation

MODULE_AUTHOR ( "Clemens Ladisch <[email protected]>"  )
MODULE_DESCRIPTION ( "Brooktree Bt87x audio driver )
MODULE_DEVICE_TABLE ( pci  ,
snd_bt87x_ids   
)
MODULE_LICENSE ( "GPL"  )
module_param ( load_all  ,
bool  ,
0444   
)
module_param_array ( index  ,
int  ,
NULL  ,
0444   
)
module_param_array ( id  ,
charp  ,
NULL  ,
0444   
)
module_param_array ( enable  ,
bool  ,
NULL  ,
0444   
)
module_param_array ( digital_rate  ,
int  ,
NULL  ,
0444   
)
MODULE_PARM_DESC ( index  ,
"Index value for Bt87x soundcard"   
)
MODULE_PARM_DESC ( id  ,
"ID string for Bt87x soundcard"   
)
MODULE_PARM_DESC ( enable  ,
"Enable Bt87x soundcard"   
)
MODULE_PARM_DESC ( digital_rate  ,
"Digital input rate for Bt87x soundcard"   
)
MODULE_PARM_DESC ( load_all  ,
"Allow to load the non-whitelisted cards  
)
module_pci_driver ( bt87x_driver  )
MODULE_SUPPORTED_DEVICE ( "{{Brooktree,Bt878},""{Brooktree,Bt879}}"  )

Variable Documentation

unsigned short subdevice

Definition at line 824 of file bt87x.c.

unsigned short subvendor

Definition at line 824 of file bt87x.c.