Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
riptide.c File Reference
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/wait.h>
#include <linux/gameport.h>
#include <linux/device.h>
#include <linux/firmware.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <asm/io.h>
#include <sound/core.h>
#include <sound/info.h>
#include <sound/control.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/ac97_codec.h>
#include <sound/mpu401.h>
#include <sound/opl3.h>
#include <sound/initval.h>

Go to the source code of this file.

Data Structures

struct  lbuspath
 
struct  cmdport
 
struct  riptideport
 
struct  cmdif
 
struct  riptide_firmware
 
union  cmdret
 
union  firmware_version
 
struct  snd_riptide
 
struct  sgd
 
struct  pcmhw
 

Macros

#define MPU401_HW_RIPTIDE   MPU401_HW_MPU401
 
#define OPL3_HW_RIPTIDE   OPL3_HW_OPL3
 
#define PCI_EXT_CapId   0x40
 
#define PCI_EXT_NextCapPrt   0x41
 
#define PCI_EXT_PWMC   0x42
 
#define PCI_EXT_PWSCR   0x44
 
#define PCI_EXT_Data00   0x46
 
#define PCI_EXT_PMSCR_BSE   0x47
 
#define PCI_EXT_SB_Base   0x48
 
#define PCI_EXT_FM_Base   0x4a
 
#define PCI_EXT_MPU_Base   0x4C
 
#define PCI_EXT_Game_Base   0x4E
 
#define PCI_EXT_Legacy_Mask   0x50
 
#define PCI_EXT_AsicRev   0x52
 
#define PCI_EXT_Reserved3   0x53
 
#define LEGACY_ENABLE_ALL   0x8000 /* legacy device options */
 
#define LEGACY_ENABLE_SB   0x4000
 
#define LEGACY_ENABLE_FM   0x2000
 
#define LEGACY_ENABLE_MPU_INT   0x1000
 
#define LEGACY_ENABLE_MPU   0x0800
 
#define LEGACY_ENABLE_GAMEPORT   0x0400
 
#define MAX_WRITE_RETRY   10 /* cmd interface limits */
 
#define MAX_ERROR_COUNT   10
 
#define CMDIF_TIMEOUT   50000
 
#define RESET_TRIES   5
 
#define READ_PORT_ULONG(p)   inl((unsigned long)&(p))
 
#define WRITE_PORT_ULONG(p, x)   outl(x,(unsigned long)&(p))
 
#define READ_AUDIO_CONTROL(p)   READ_PORT_ULONG(p->audio_control)
 
#define WRITE_AUDIO_CONTROL(p, x)   WRITE_PORT_ULONG(p->audio_control,x)
 
#define UMASK_AUDIO_CONTROL(p, x)   WRITE_PORT_ULONG(p->audio_control,READ_PORT_ULONG(p->audio_control)|x)
 
#define MASK_AUDIO_CONTROL(p, x)   WRITE_PORT_ULONG(p->audio_control,READ_PORT_ULONG(p->audio_control)&x)
 
#define READ_AUDIO_STATUS(p)   READ_PORT_ULONG(p->audio_status)
 
#define SET_GRESET(p)   UMASK_AUDIO_CONTROL(p,0x0001) /* global reset switch */
 
#define UNSET_GRESET(p)   MASK_AUDIO_CONTROL(p,~0x0001)
 
#define SET_AIE(p)   UMASK_AUDIO_CONTROL(p,0x0004) /* interrupt enable */
 
#define UNSET_AIE(p)   MASK_AUDIO_CONTROL(p,~0x0004)
 
#define SET_AIACK(p)   UMASK_AUDIO_CONTROL(p,0x0008) /* interrupt acknowledge */
 
#define UNSET_AIACKT(p)   MASKAUDIO_CONTROL(p,~0x0008)
 
#define SET_ECMDAE(p)   UMASK_AUDIO_CONTROL(p,0x0010)
 
#define UNSET_ECMDAE(p)   MASK_AUDIO_CONTROL(p,~0x0010)
 
#define SET_ECMDBE(p)   UMASK_AUDIO_CONTROL(p,0x0020)
 
#define UNSET_ECMDBE(p)   MASK_AUDIO_CONTROL(p,~0x0020)
 
#define SET_EDATAF(p)   UMASK_AUDIO_CONTROL(p,0x0040)
 
#define UNSET_EDATAF(p)   MASK_AUDIO_CONTROL(p,~0x0040)
 
#define SET_EDATBF(p)   UMASK_AUDIO_CONTROL(p,0x0080)
 
#define UNSET_EDATBF(p)   MASK_AUDIO_CONTROL(p,~0x0080)
 
#define SET_ESBIRQON(p)   UMASK_AUDIO_CONTROL(p,0x0100)
 
#define UNSET_ESBIRQON(p)   MASK_AUDIO_CONTROL(p,~0x0100)
 
#define SET_EMPUIRQ(p)   UMASK_AUDIO_CONTROL(p,0x0200)
 
#define UNSET_EMPUIRQ(p)   MASK_AUDIO_CONTROL(p,~0x0200)
 
#define IS_CMDE(a)   (READ_PORT_ULONG(a->stat)&0x1) /* cmd empty */
 
#define IS_DATF(a)   (READ_PORT_ULONG(a->stat)&0x2) /* data filled */
 
#define IS_READY(p)   (READ_AUDIO_STATUS(p)&0x0001)
 
#define IS_DLREADY(p)   (READ_AUDIO_STATUS(p)&0x0002)
 
#define IS_DLERR(p)   (READ_AUDIO_STATUS(p)&0x0004)
 
#define IS_GERR(p)   (READ_AUDIO_STATUS(p)&0x0008) /* error ! */
 
#define IS_CMDAEIRQ(p)   (READ_AUDIO_STATUS(p)&0x0010)
 
#define IS_CMDBEIRQ(p)   (READ_AUDIO_STATUS(p)&0x0020)
 
#define IS_DATAFIRQ(p)   (READ_AUDIO_STATUS(p)&0x0040)
 
#define IS_DATBFIRQ(p)   (READ_AUDIO_STATUS(p)&0x0080)
 
#define IS_EOBIRQ(p)   (READ_AUDIO_STATUS(p)&0x0100) /* interrupt status */
 
#define IS_EOSIRQ(p)   (READ_AUDIO_STATUS(p)&0x0200)
 
#define IS_EOCIRQ(p)   (READ_AUDIO_STATUS(p)&0x0400)
 
#define IS_UNSLIRQ(p)   (READ_AUDIO_STATUS(p)&0x0800)
 
#define IS_SBIRQ(p)   (READ_AUDIO_STATUS(p)&0x1000)
 
#define IS_MPUIRQ(p)   (READ_AUDIO_STATUS(p)&0x2000)
 
#define RESP   0x00000001 /* command flags */
 
#define PARM   0x00000002
 
#define CMDA   0x00000004
 
#define CMDB   0x00000008
 
#define NILL   0x00000000
 
#define LONG0(a)   ((u32)a) /* shifts and masks */
 
#define BYTE0(a)   (LONG0(a)&0xff)
 
#define BYTE1(a)   (BYTE0(a)<<8)
 
#define BYTE2(a)   (BYTE0(a)<<16)
 
#define BYTE3(a)   (BYTE0(a)<<24)
 
#define WORD0(a)   (LONG0(a)&0xffff)
 
#define WORD1(a)   (WORD0(a)<<8)
 
#define WORD2(a)   (WORD0(a)<<16)
 
#define TRINIB0(a)   (LONG0(a)&0xffffff)
 
#define TRINIB1(a)   (TRINIB0(a)<<8)
 
#define RET(a)   ((union cmdret *)(a))
 
#define SEND_GETV(p, b)   sendcmd(p,RESP,GETV,0,RET(b)) /* get version */
 
#define SEND_GETC(p, b, c)   sendcmd(p,PARM|RESP,GETC,c,RET(b))
 
#define SEND_GUNS(p, b)   sendcmd(p,RESP,GUNS,0,RET(b))
 
#define SEND_SCID(p, b)   sendcmd(p,RESP,SCID,0,RET(b))
 
#define SEND_RMEM(p, b, c, d)   sendcmd(p,PARM|RESP,RMEM|BYTE1(b),LONG0(c),RET(d)) /* memory access for firmware write */
 
#define SEND_SMEM(p, b, c)   sendcmd(p,PARM,SMEM|BYTE1(b),LONG0(c),RET(0)) /* memory access for firmware write */
 
#define SEND_WMEM(p, b, c)   sendcmd(p,PARM,WMEM|BYTE1(b),LONG0(c),RET(0)) /* memory access for firmware write */
 
#define SEND_SDTM(p, b, c)   sendcmd(p,PARM|RESP,SDTM|TRINIB1(b),0,RET(c)) /* memory access for firmware write */
 
#define SEND_GOTO(p, b)   sendcmd(p,PARM,GOTO,LONG0(b),RET(0)) /* memory access for firmware write */
 
#define SEND_SETDPLL(p)   sendcmd(p,0,ARM_SETDPLL,0,RET(0))
 
#define SEND_SSTR(p, b, c)   sendcmd(p,PARM,SSTR|BYTE3(b),LONG0(c),RET(0)) /* start stream */
 
#define SEND_PSTR(p, b)   sendcmd(p,PARM,PSTR,BYTE3(b),RET(0)) /* pause stream */
 
#define SEND_KSTR(p, b)   sendcmd(p,PARM,KSTR,BYTE3(b),RET(0)) /* stop stream */
 
#define SEND_KDMA(p)   sendcmd(p,0,KDMA,0,RET(0)) /* stop all dma */
 
#define SEND_GPOS(p, b, c, d)   sendcmd(p,PARM|RESP,GPOS,BYTE3(c)|BYTE2(b),RET(d)) /* get position in dma */
 
#define SEND_SETF(p, b, c, d, e, f, g)   sendcmd(p,PARM,SETF|WORD1(b)|BYTE3(c),d|BYTE1(e)|BYTE2(f)|BYTE3(g),RET(0)) /* set sample format at mixer */
 
#define SEND_GSTS(p, b, c, d)   sendcmd(p,PARM|RESP,GSTS,BYTE3(c)|BYTE2(b),RET(d))
 
#define SEND_NGPOS(p, b, c, d)   sendcmd(p,PARM|RESP,NGPOS,BYTE3(c)|BYTE2(b),RET(d))
 
#define SEND_PSEL(p, b, c)   sendcmd(p,PARM,PSEL,BYTE2(b)|BYTE3(c),RET(0)) /* activate lbus path */
 
#define SEND_PCLR(p, b, c)   sendcmd(p,PARM,PCLR,BYTE2(b)|BYTE3(c),RET(0)) /* deactivate lbus path */
 
#define SEND_PLST(p, b)   sendcmd(p,PARM,PLST,BYTE3(b),RET(0))
 
#define SEND_RSSV(p, b, c, d)   sendcmd(p,PARM|RESP,RSSV,BYTE2(b)|BYTE3(c),RET(d))
 
#define SEND_LSEL(p, b, c, d, e, f, g, h)   sendcmd(p,PARM,LSEL|BYTE1(b)|BYTE2(c)|BYTE3(d),BYTE0(e)|BYTE1(f)|BYTE2(g)|BYTE3(h),RET(0)) /* select paths for internal connections */
 
#define SEND_SSRC(p, b, c, d, e)   sendcmd(p,PARM,SSRC|BYTE1(b)|WORD2(c),WORD0(d)|WORD2(e),RET(0)) /* configure source */
 
#define SEND_SLST(p, b)   sendcmd(p,PARM,SLST,BYTE3(b),RET(0))
 
#define SEND_RSRC(p, b, c)   sendcmd(p,RESP,RSRC|BYTE1(b),0,RET(c)) /* read source config */
 
#define SEND_SSRB(p, b, c)   sendcmd(p,PARM,SSRB|BYTE1(b),WORD2(c),RET(0))
 
#define SEND_SDGV(p, b, c, d, e)   sendcmd(p,PARM,SDGV|BYTE2(b)|BYTE3(c),WORD0(d)|WORD2(e),RET(0)) /* set digital mixer */
 
#define SEND_RDGV(p, b, c, d)   sendcmd(p,PARM|RESP,RDGV|BYTE2(b)|BYTE3(c),0,RET(d)) /* read digital mixer */
 
#define SEND_DLST(p, b)   sendcmd(p,PARM,DLST,BYTE3(b),RET(0))
 
#define SEND_SACR(p, b, c)   sendcmd(p,PARM,SACR,WORD0(b)|WORD2(c),RET(0)) /* set AC97 register */
 
#define SEND_RACR(p, b, c)   sendcmd(p,PARM|RESP,RACR,WORD2(b),RET(c)) /* get AC97 register */
 
#define SEND_ALST(p, b)   sendcmd(p,PARM,ALST,BYTE3(b),RET(0))
 
#define SEND_TXAC(p, b, c, d, e, f)   sendcmd(p,PARM,TXAC|BYTE1(b)|WORD2(c),WORD0(d)|BYTE2(e)|BYTE3(f),RET(0))
 
#define SEND_RXAC(p, b, c, d)   sendcmd(p,PARM|RESP,RXAC,BYTE2(b)|BYTE3(c),RET(d))
 
#define SEND_SI2S(p, b)   sendcmd(p,PARM,SI2S,WORD2(b),RET(0))
 
#define EOB_STATUS   0x80000000 /* status flags : block boundary */
 
#define EOS_STATUS   0x40000000 /* : stoppped */
 
#define EOC_STATUS   0x20000000 /* : stream end */
 
#define ERR_STATUS   0x10000000
 
#define EMPTY_STATUS   0x08000000
 
#define IEOB_ENABLE   0x1 /* enable interrupts for status notification above */
 
#define IEOS_ENABLE   0x2
 
#define IEOC_ENABLE   0x4
 
#define RDONCE   0x8
 
#define DESC_MAX_MASK   0xff
 
#define ST_PLAY   0x1 /* stream states */
 
#define ST_STOP   0x2
 
#define ST_PAUSE   0x4
 
#define I2S_INTDEC   3 /* config for I2S link */
 
#define I2S_MERGER   0
 
#define I2S_SPLITTER   0
 
#define I2S_MIXER   7
 
#define I2S_RATE   44100
 
#define MODEM_INTDEC   4 /* config for modem link */
 
#define MODEM_MERGER   3
 
#define MODEM_SPLITTER   0
 
#define MODEM_MIXER   11
 
#define FM_INTDEC   3 /* config for FM/OPL3 link */
 
#define FM_MERGER   0
 
#define FM_SPLITTER   0
 
#define FM_MIXER   9
 
#define SPLIT_PATH   0x80 /* path splitting flag */
 
#define get_pcmhwdev(substream)   (struct pcmhw *)(substream->runtime->private_data)
 
#define PLAYBACK_SUBSTREAMS   3
 
#define CMDRET_ZERO   (union cmdret){{(u32)0, (u32) 0}}
 
#define FIRMWARE_VERSIONS   1
 
#define RIPTIDE_PM_OPS   NULL
 

Enumerations

enum  FIRMWARE {
  DATA_REC = 0, EXT_END_OF_FILE, EXT_SEG_ADDR_REC, EXT_GOTO_CMD_REC,
  EXT_LIN_ADDR_REC
}
 
enum  CMDS {
  GETV = 0x00, GETC, GUNS, SCID,
  RMEM, SMEM, WMEM, SDTM,
  GOTO, SSTR, PSTR, KSTR,
  KDMA, GPOS, SETF, GSTS,
  NGPOS, PSEL, PCLR, PLST,
  RSSV, LSEL, SSRC = 0x40, SLST,
  RSRC, SSRB, SDGV, RDGV,
  DLST, SACR = 0x60, RACR, ALST,
  TXAC, RXAC, SI2S, ARM_SETDPLL = 0x72
}
 
enum  E1SOURCE {
  ARM2LBUS_FIFO0 = 0, ARM2LBUS_FIFO1, ARM2LBUS_FIFO2, ARM2LBUS_FIFO3,
  ARM2LBUS_FIFO4, ARM2LBUS_FIFO5, ARM2LBUS_FIFO6, ARM2LBUS_FIFO7,
  ARM2LBUS_FIFO8, ARM2LBUS_FIFO9, ARM2LBUS_FIFO10, ARM2LBUS_FIFO11,
  ARM2LBUS_FIFO12, ARM2LBUS_FIFO13, ARM2LBUS_FIFO14, ARM2LBUS_FIFO15,
  INTER0_OUT, INTER1_OUT, INTER2_OUT, INTER3_OUT,
  INTER4_OUT, INTERM0_OUT, INTERM1_OUT, INTERM2_OUT,
  INTERM3_OUT, INTERM4_OUT, INTERM5_OUT, INTERM6_OUT,
  DECIMM0_OUT, DECIMM1_OUT, DECIMM2_OUT, DECIMM3_OUT,
  DECIM0_OUT, SR3_4_OUT, OPL3_SAMPLE, ASRC0,
  ASRC1, ACLNK2PADC, ACLNK2MODEM0RX, ACLNK2MIC,
  ACLNK2MODEM1RX, ACLNK2HNDMIC, DIGITAL_MIXER_OUT0, GAINFUNC0_OUT,
  GAINFUNC1_OUT, GAINFUNC2_OUT, GAINFUNC3_OUT, GAINFUNC4_OUT,
  SOFTMODEMTX, SPLITTER0_OUTL, SPLITTER0_OUTR, SPLITTER1_OUTL,
  SPLITTER1_OUTR, SPLITTER2_OUTL, SPLITTER2_OUTR, SPLITTER3_OUTL,
  SPLITTER3_OUTR, MERGER0_OUT, MERGER1_OUT, MERGER2_OUT,
  MERGER3_OUT, ARM2LBUS_FIFO_DIRECT, NO_OUT
}
 
enum  E2SINK {
  LBUS2ARM_FIFO0 = 0, LBUS2ARM_FIFO1, LBUS2ARM_FIFO2, LBUS2ARM_FIFO3,
  LBUS2ARM_FIFO4, LBUS2ARM_FIFO5, LBUS2ARM_FIFO6, LBUS2ARM_FIFO7,
  INTER0_IN, INTER1_IN, INTER2_IN, INTER3_IN,
  INTER4_IN, INTERM0_IN, INTERM1_IN, INTERM2_IN,
  INTERM3_IN, INTERM4_IN, INTERM5_IN, INTERM6_IN,
  DECIMM0_IN, DECIMM1_IN, DECIMM2_IN, DECIMM3_IN,
  DECIM0_IN, SR3_4_IN, PDAC2ACLNK, MODEM0TX2ACLNK,
  MODEM1TX2ACLNK, HNDSPK2ACLNK, DIGITAL_MIXER_IN0, DIGITAL_MIXER_IN1,
  DIGITAL_MIXER_IN2, DIGITAL_MIXER_IN3, DIGITAL_MIXER_IN4, DIGITAL_MIXER_IN5,
  DIGITAL_MIXER_IN6, DIGITAL_MIXER_IN7, DIGITAL_MIXER_IN8, DIGITAL_MIXER_IN9,
  DIGITAL_MIXER_IN10, DIGITAL_MIXER_IN11, GAINFUNC0_IN, GAINFUNC1_IN,
  GAINFUNC2_IN, GAINFUNC3_IN, GAINFUNC4_IN, SOFTMODEMRX,
  SPLITTER0_IN, SPLITTER1_IN, SPLITTER2_IN, SPLITTER3_IN,
  MERGER0_INL, MERGER0_INR, MERGER1_INL, MERGER1_INR,
  MERGER2_INL, MERGER2_INR, MERGER3_INL, MERGER3_INR,
  E2SINK_MAX
}
 
enum  LBUS_SINK {
  LS_SRC_INTERPOLATOR = 0, LS_SRC_INTERPOLATORM, LS_SRC_DECIMATOR, LS_SRC_DECIMATORM,
  LS_MIXER_IN, LS_MIXER_GAIN_FUNCTION, LS_SRC_SPLITTER, LS_SRC_MERGER,
  LS_NONE1, LS_NONE2
}
 
enum  RT_CHANNEL_IDS {
  M0TX = 0, M1TX, TAMTX, HSSPKR,
  PDAC, DSNDTX0, DSNDTX1, DSNDTX2,
  DSNDTX3, DSNDTX4, DSNDTX5, DSNDTX6,
  DSNDTX7, WVSTRTX, COP3DTX, SPARE,
  M0RX, HSMIC, M1RX, CLEANRX,
  MICADC, PADC, COPRX1, COPRX2,
  CHANNEL_ID_COUNTER
}
 
enum  {
  SB_CMD = 0, MODEM_CMD, I2S_CMD0, I2S_CMD1,
  FM_CMD, MAX_CMD
}
 

Functions

 MODULE_AUTHOR ("Peter Gruber <[email protected]>")
 
 MODULE_DESCRIPTION ("riptide")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_SUPPORTED_DEVICE ("{{Conexant,Riptide}}")
 
 MODULE_FIRMWARE ("riptide.hex")
 
 module_param_array (index, int, NULL, 0444)
 
 MODULE_PARM_DESC (index,"Index value for Riptide soundcard.")
 
 module_param_array (id, charp, NULL, 0444)
 
 MODULE_PARM_DESC (id,"ID string for Riptide soundcard.")
 
 module_param_array (enable, bool, NULL, 0444)
 
 MODULE_PARM_DESC (enable,"Enable Riptide soundcard.")
 
 module_param_array (mpu_port, int, NULL, 0444)
 
 MODULE_PARM_DESC (mpu_port,"MPU401 port # for Riptide driver.")
 
 module_param_array (opl3_port, int, NULL, 0444)
 
 MODULE_PARM_DESC (opl3_port,"OPL3 port # for Riptide driver.")
 
 MODULE_DEVICE_TABLE (pci, snd_riptide_ids)
 
 module_init (alsa_card_riptide_init)
 
 module_exit (alsa_card_riptide_exit)
 

Macro Definition Documentation

#define BYTE0 (   a)    (LONG0(a)&0xff)

Definition at line 231 of file riptide.c.

#define BYTE1 (   a)    (BYTE0(a)<<8)

Definition at line 232 of file riptide.c.

#define BYTE2 (   a)    (BYTE0(a)<<16)

Definition at line 233 of file riptide.c.

#define BYTE3 (   a)    (BYTE0(a)<<24)

Definition at line 234 of file riptide.c.

#define CMDA   0x00000004

Definition at line 226 of file riptide.c.

#define CMDB   0x00000008

Definition at line 227 of file riptide.c.

#define CMDIF_TIMEOUT   50000

Definition at line 177 of file riptide.c.

#define CMDRET_ZERO   (union cmdret){{(u32)0, (u32) 0}}

Definition at line 498 of file riptide.c.

#define DESC_MAX_MASK   0xff

Definition at line 290 of file riptide.c.

#define EMPTY_STATUS   0x08000000

Definition at line 284 of file riptide.c.

#define EOB_STATUS   0x80000000 /* status flags : block boundary */

Definition at line 280 of file riptide.c.

#define EOC_STATUS   0x20000000 /* : stream end */

Definition at line 282 of file riptide.c.

#define EOS_STATUS   0x40000000 /* : stoppped */

Definition at line 281 of file riptide.c.

#define ERR_STATUS   0x10000000

Definition at line 283 of file riptide.c.

#define FIRMWARE_VERSIONS   1

Definition at line 653 of file riptide.c.

#define FM_INTDEC   3 /* config for FM/OPL3 link */

Definition at line 307 of file riptide.c.

#define FM_MERGER   0

Definition at line 308 of file riptide.c.

#define FM_MIXER   9

Definition at line 310 of file riptide.c.

#define FM_SPLITTER   0

Definition at line 309 of file riptide.c.

#define get_pcmhwdev (   substream)    (struct pcmhw *)(substream->runtime->private_data)

Definition at line 426 of file riptide.c.

#define I2S_INTDEC   3 /* config for I2S link */

Definition at line 296 of file riptide.c.

#define I2S_MERGER   0

Definition at line 297 of file riptide.c.

#define I2S_MIXER   7

Definition at line 299 of file riptide.c.

#define I2S_RATE   44100

Definition at line 300 of file riptide.c.

#define I2S_SPLITTER   0

Definition at line 298 of file riptide.c.

#define IEOB_ENABLE   0x1 /* enable interrupts for status notification above */

Definition at line 286 of file riptide.c.

#define IEOC_ENABLE   0x4

Definition at line 288 of file riptide.c.

#define IEOS_ENABLE   0x2

Definition at line 287 of file riptide.c.

#define IS_CMDAEIRQ (   p)    (READ_AUDIO_STATUS(p)&0x0010)

Definition at line 213 of file riptide.c.

#define IS_CMDBEIRQ (   p)    (READ_AUDIO_STATUS(p)&0x0020)

Definition at line 214 of file riptide.c.

#define IS_CMDE (   a)    (READ_PORT_ULONG(a->stat)&0x1) /* cmd empty */

Definition at line 207 of file riptide.c.

#define IS_DATAFIRQ (   p)    (READ_AUDIO_STATUS(p)&0x0040)

Definition at line 215 of file riptide.c.

#define IS_DATBFIRQ (   p)    (READ_AUDIO_STATUS(p)&0x0080)

Definition at line 216 of file riptide.c.

#define IS_DATF (   a)    (READ_PORT_ULONG(a->stat)&0x2) /* data filled */

Definition at line 208 of file riptide.c.

#define IS_DLERR (   p)    (READ_AUDIO_STATUS(p)&0x0004)

Definition at line 211 of file riptide.c.

#define IS_DLREADY (   p)    (READ_AUDIO_STATUS(p)&0x0002)

Definition at line 210 of file riptide.c.

#define IS_EOBIRQ (   p)    (READ_AUDIO_STATUS(p)&0x0100) /* interrupt status */

Definition at line 217 of file riptide.c.

#define IS_EOCIRQ (   p)    (READ_AUDIO_STATUS(p)&0x0400)

Definition at line 219 of file riptide.c.

#define IS_EOSIRQ (   p)    (READ_AUDIO_STATUS(p)&0x0200)

Definition at line 218 of file riptide.c.

#define IS_GERR (   p)    (READ_AUDIO_STATUS(p)&0x0008) /* error ! */

Definition at line 212 of file riptide.c.

#define IS_MPUIRQ (   p)    (READ_AUDIO_STATUS(p)&0x2000)

Definition at line 222 of file riptide.c.

#define IS_READY (   p)    (READ_AUDIO_STATUS(p)&0x0001)

Definition at line 209 of file riptide.c.

#define IS_SBIRQ (   p)    (READ_AUDIO_STATUS(p)&0x1000)

Definition at line 221 of file riptide.c.

#define IS_UNSLIRQ (   p)    (READ_AUDIO_STATUS(p)&0x0800)

Definition at line 220 of file riptide.c.

#define LEGACY_ENABLE_ALL   0x8000 /* legacy device options */

Definition at line 168 of file riptide.c.

#define LEGACY_ENABLE_FM   0x2000

Definition at line 170 of file riptide.c.

#define LEGACY_ENABLE_GAMEPORT   0x0400

Definition at line 173 of file riptide.c.

#define LEGACY_ENABLE_MPU   0x0800

Definition at line 172 of file riptide.c.

#define LEGACY_ENABLE_MPU_INT   0x1000

Definition at line 171 of file riptide.c.

#define LEGACY_ENABLE_SB   0x4000

Definition at line 169 of file riptide.c.

#define LONG0 (   a)    ((u32)a) /* shifts and masks */

Definition at line 230 of file riptide.c.

#define MASK_AUDIO_CONTROL (   p,
  x 
)    WRITE_PORT_ULONG(p->audio_control,READ_PORT_ULONG(p->audio_control)&x)

Definition at line 186 of file riptide.c.

#define MAX_ERROR_COUNT   10

Definition at line 176 of file riptide.c.

#define MAX_WRITE_RETRY   10 /* cmd interface limits */

Definition at line 175 of file riptide.c.

#define MODEM_INTDEC   4 /* config for modem link */

Definition at line 302 of file riptide.c.

#define MODEM_MERGER   3

Definition at line 303 of file riptide.c.

#define MODEM_MIXER   11

Definition at line 305 of file riptide.c.

#define MODEM_SPLITTER   0

Definition at line 304 of file riptide.c.

#define MPU401_HW_RIPTIDE   MPU401_HW_MPU401

Definition at line 151 of file riptide.c.

#define NILL   0x00000000

Definition at line 228 of file riptide.c.

#define OPL3_HW_RIPTIDE   OPL3_HW_OPL3

Definition at line 152 of file riptide.c.

#define PARM   0x00000002

Definition at line 225 of file riptide.c.

#define PCI_EXT_AsicRev   0x52

Definition at line 165 of file riptide.c.

#define PCI_EXT_CapId   0x40

Definition at line 154 of file riptide.c.

#define PCI_EXT_Data00   0x46

Definition at line 158 of file riptide.c.

#define PCI_EXT_FM_Base   0x4a

Definition at line 161 of file riptide.c.

#define PCI_EXT_Game_Base   0x4E

Definition at line 163 of file riptide.c.

#define PCI_EXT_Legacy_Mask   0x50

Definition at line 164 of file riptide.c.

#define PCI_EXT_MPU_Base   0x4C

Definition at line 162 of file riptide.c.

#define PCI_EXT_NextCapPrt   0x41

Definition at line 155 of file riptide.c.

#define PCI_EXT_PMSCR_BSE   0x47

Definition at line 159 of file riptide.c.

#define PCI_EXT_PWMC   0x42

Definition at line 156 of file riptide.c.

#define PCI_EXT_PWSCR   0x44

Definition at line 157 of file riptide.c.

#define PCI_EXT_Reserved3   0x53

Definition at line 166 of file riptide.c.

#define PCI_EXT_SB_Base   0x48

Definition at line 160 of file riptide.c.

#define PLAYBACK_SUBSTREAMS   3

Definition at line 428 of file riptide.c.

#define RDONCE   0x8

Definition at line 289 of file riptide.c.

#define READ_AUDIO_CONTROL (   p)    READ_PORT_ULONG(p->audio_control)

Definition at line 183 of file riptide.c.

#define READ_AUDIO_STATUS (   p)    READ_PORT_ULONG(p->audio_status)

Definition at line 187 of file riptide.c.

#define READ_PORT_ULONG (   p)    inl((unsigned long)&(p))

Definition at line 180 of file riptide.c.

#define RESET_TRIES   5

Definition at line 178 of file riptide.c.

#define RESP   0x00000001 /* command flags */

Definition at line 224 of file riptide.c.

#define RET (   a)    ((union cmdret *)(a))

Definition at line 241 of file riptide.c.

#define RIPTIDE_PM_OPS   NULL

Definition at line 1195 of file riptide.c.

#define SEND_ALST (   p,
  b 
)    sendcmd(p,PARM,ALST,BYTE3(b),RET(0))

Definition at line 275 of file riptide.c.

#define SEND_DLST (   p,
  b 
)    sendcmd(p,PARM,DLST,BYTE3(b),RET(0))

Definition at line 272 of file riptide.c.

#define SEND_GETC (   p,
  b,
  c 
)    sendcmd(p,PARM|RESP,GETC,c,RET(b))

Definition at line 244 of file riptide.c.

#define SEND_GETV (   p,
  b 
)    sendcmd(p,RESP,GETV,0,RET(b)) /* get version */

Definition at line 243 of file riptide.c.

#define SEND_GOTO (   p,
  b 
)    sendcmd(p,PARM,GOTO,LONG0(b),RET(0)) /* memory access for firmware write */

Definition at line 251 of file riptide.c.

#define SEND_GPOS (   p,
  b,
  c,
  d 
)    sendcmd(p,PARM|RESP,GPOS,BYTE3(c)|BYTE2(b),RET(d)) /* get position in dma */

Definition at line 257 of file riptide.c.

#define SEND_GSTS (   p,
  b,
  c,
  d 
)    sendcmd(p,PARM|RESP,GSTS,BYTE3(c)|BYTE2(b),RET(d))

Definition at line 259 of file riptide.c.

#define SEND_GUNS (   p,
  b 
)    sendcmd(p,RESP,GUNS,0,RET(b))

Definition at line 245 of file riptide.c.

#define SEND_KDMA (   p)    sendcmd(p,0,KDMA,0,RET(0)) /* stop all dma */

Definition at line 256 of file riptide.c.

#define SEND_KSTR (   p,
  b 
)    sendcmd(p,PARM,KSTR,BYTE3(b),RET(0)) /* stop stream */

Definition at line 255 of file riptide.c.

#define SEND_LSEL (   p,
  b,
  c,
  d,
  e,
  f,
  g,
  h 
)    sendcmd(p,PARM,LSEL|BYTE1(b)|BYTE2(c)|BYTE3(d),BYTE0(e)|BYTE1(f)|BYTE2(g)|BYTE3(h),RET(0)) /* select paths for internal connections */

Definition at line 265 of file riptide.c.

#define SEND_NGPOS (   p,
  b,
  c,
  d 
)    sendcmd(p,PARM|RESP,NGPOS,BYTE3(c)|BYTE2(b),RET(d))

Definition at line 260 of file riptide.c.

#define SEND_PCLR (   p,
  b,
  c 
)    sendcmd(p,PARM,PCLR,BYTE2(b)|BYTE3(c),RET(0)) /* deactivate lbus path */

Definition at line 262 of file riptide.c.

#define SEND_PLST (   p,
  b 
)    sendcmd(p,PARM,PLST,BYTE3(b),RET(0))

Definition at line 263 of file riptide.c.

#define SEND_PSEL (   p,
  b,
  c 
)    sendcmd(p,PARM,PSEL,BYTE2(b)|BYTE3(c),RET(0)) /* activate lbus path */

Definition at line 261 of file riptide.c.

#define SEND_PSTR (   p,
  b 
)    sendcmd(p,PARM,PSTR,BYTE3(b),RET(0)) /* pause stream */

Definition at line 254 of file riptide.c.

#define SEND_RACR (   p,
  b,
  c 
)    sendcmd(p,PARM|RESP,RACR,WORD2(b),RET(c)) /* get AC97 register */

Definition at line 274 of file riptide.c.

#define SEND_RDGV (   p,
  b,
  c,
  d 
)    sendcmd(p,PARM|RESP,RDGV|BYTE2(b)|BYTE3(c),0,RET(d)) /* read digital mixer */

Definition at line 271 of file riptide.c.

#define SEND_RMEM (   p,
  b,
  c,
  d 
)    sendcmd(p,PARM|RESP,RMEM|BYTE1(b),LONG0(c),RET(d)) /* memory access for firmware write */

Definition at line 247 of file riptide.c.

#define SEND_RSRC (   p,
  b,
  c 
)    sendcmd(p,RESP,RSRC|BYTE1(b),0,RET(c)) /* read source config */

Definition at line 268 of file riptide.c.

#define SEND_RSSV (   p,
  b,
  c,
  d 
)    sendcmd(p,PARM|RESP,RSSV,BYTE2(b)|BYTE3(c),RET(d))

Definition at line 264 of file riptide.c.

#define SEND_RXAC (   p,
  b,
  c,
  d 
)    sendcmd(p,PARM|RESP,RXAC,BYTE2(b)|BYTE3(c),RET(d))

Definition at line 277 of file riptide.c.

#define SEND_SACR (   p,
  b,
  c 
)    sendcmd(p,PARM,SACR,WORD0(b)|WORD2(c),RET(0)) /* set AC97 register */

Definition at line 273 of file riptide.c.

#define SEND_SCID (   p,
  b 
)    sendcmd(p,RESP,SCID,0,RET(b))

Definition at line 246 of file riptide.c.

#define SEND_SDGV (   p,
  b,
  c,
  d,
  e 
)    sendcmd(p,PARM,SDGV|BYTE2(b)|BYTE3(c),WORD0(d)|WORD2(e),RET(0)) /* set digital mixer */

Definition at line 270 of file riptide.c.

#define SEND_SDTM (   p,
  b,
  c 
)    sendcmd(p,PARM|RESP,SDTM|TRINIB1(b),0,RET(c)) /* memory access for firmware write */

Definition at line 250 of file riptide.c.

#define SEND_SETDPLL (   p)    sendcmd(p,0,ARM_SETDPLL,0,RET(0))

Definition at line 252 of file riptide.c.

#define SEND_SETF (   p,
  b,
  c,
  d,
  e,
  f,
  g 
)    sendcmd(p,PARM,SETF|WORD1(b)|BYTE3(c),d|BYTE1(e)|BYTE2(f)|BYTE3(g),RET(0)) /* set sample format at mixer */

Definition at line 258 of file riptide.c.

#define SEND_SI2S (   p,
  b 
)    sendcmd(p,PARM,SI2S,WORD2(b),RET(0))

Definition at line 278 of file riptide.c.

#define SEND_SLST (   p,
  b 
)    sendcmd(p,PARM,SLST,BYTE3(b),RET(0))

Definition at line 267 of file riptide.c.

#define SEND_SMEM (   p,
  b,
  c 
)    sendcmd(p,PARM,SMEM|BYTE1(b),LONG0(c),RET(0)) /* memory access for firmware write */

Definition at line 248 of file riptide.c.

#define SEND_SSRB (   p,
  b,
  c 
)    sendcmd(p,PARM,SSRB|BYTE1(b),WORD2(c),RET(0))

Definition at line 269 of file riptide.c.

#define SEND_SSRC (   p,
  b,
  c,
  d,
  e 
)    sendcmd(p,PARM,SSRC|BYTE1(b)|WORD2(c),WORD0(d)|WORD2(e),RET(0)) /* configure source */

Definition at line 266 of file riptide.c.

#define SEND_SSTR (   p,
  b,
  c 
)    sendcmd(p,PARM,SSTR|BYTE3(b),LONG0(c),RET(0)) /* start stream */

Definition at line 253 of file riptide.c.

#define SEND_TXAC (   p,
  b,
  c,
  d,
  e,
  f 
)    sendcmd(p,PARM,TXAC|BYTE1(b)|WORD2(c),WORD0(d)|BYTE2(e)|BYTE3(f),RET(0))

Definition at line 276 of file riptide.c.

#define SEND_WMEM (   p,
  b,
  c 
)    sendcmd(p,PARM,WMEM|BYTE1(b),LONG0(c),RET(0)) /* memory access for firmware write */

Definition at line 249 of file riptide.c.

#define SET_AIACK (   p)    UMASK_AUDIO_CONTROL(p,0x0008) /* interrupt acknowledge */

Definition at line 193 of file riptide.c.

#define SET_AIE (   p)    UMASK_AUDIO_CONTROL(p,0x0004) /* interrupt enable */

Definition at line 191 of file riptide.c.

#define SET_ECMDAE (   p)    UMASK_AUDIO_CONTROL(p,0x0010)

Definition at line 195 of file riptide.c.

#define SET_ECMDBE (   p)    UMASK_AUDIO_CONTROL(p,0x0020)

Definition at line 197 of file riptide.c.

#define SET_EDATAF (   p)    UMASK_AUDIO_CONTROL(p,0x0040)

Definition at line 199 of file riptide.c.

#define SET_EDATBF (   p)    UMASK_AUDIO_CONTROL(p,0x0080)

Definition at line 201 of file riptide.c.

#define SET_EMPUIRQ (   p)    UMASK_AUDIO_CONTROL(p,0x0200)

Definition at line 205 of file riptide.c.

#define SET_ESBIRQON (   p)    UMASK_AUDIO_CONTROL(p,0x0100)

Definition at line 203 of file riptide.c.

#define SET_GRESET (   p)    UMASK_AUDIO_CONTROL(p,0x0001) /* global reset switch */

Definition at line 189 of file riptide.c.

#define SPLIT_PATH   0x80 /* path splitting flag */

Definition at line 312 of file riptide.c.

#define ST_PAUSE   0x4

Definition at line 294 of file riptide.c.

#define ST_PLAY   0x1 /* stream states */

Definition at line 292 of file riptide.c.

#define ST_STOP   0x2

Definition at line 293 of file riptide.c.

#define TRINIB0 (   a)    (LONG0(a)&0xffffff)

Definition at line 238 of file riptide.c.

#define TRINIB1 (   a)    (TRINIB0(a)<<8)

Definition at line 239 of file riptide.c.

#define UMASK_AUDIO_CONTROL (   p,
  x 
)    WRITE_PORT_ULONG(p->audio_control,READ_PORT_ULONG(p->audio_control)|x)

Definition at line 185 of file riptide.c.

#define UNSET_AIACKT (   p)    MASKAUDIO_CONTROL(p,~0x0008)

Definition at line 194 of file riptide.c.

#define UNSET_AIE (   p)    MASK_AUDIO_CONTROL(p,~0x0004)

Definition at line 192 of file riptide.c.

#define UNSET_ECMDAE (   p)    MASK_AUDIO_CONTROL(p,~0x0010)

Definition at line 196 of file riptide.c.

#define UNSET_ECMDBE (   p)    MASK_AUDIO_CONTROL(p,~0x0020)

Definition at line 198 of file riptide.c.

#define UNSET_EDATAF (   p)    MASK_AUDIO_CONTROL(p,~0x0040)

Definition at line 200 of file riptide.c.

#define UNSET_EDATBF (   p)    MASK_AUDIO_CONTROL(p,~0x0080)

Definition at line 202 of file riptide.c.

#define UNSET_EMPUIRQ (   p)    MASK_AUDIO_CONTROL(p,~0x0200)

Definition at line 206 of file riptide.c.

#define UNSET_ESBIRQON (   p)    MASK_AUDIO_CONTROL(p,~0x0100)

Definition at line 204 of file riptide.c.

#define UNSET_GRESET (   p)    MASK_AUDIO_CONTROL(p,~0x0001)

Definition at line 190 of file riptide.c.

#define WORD0 (   a)    (LONG0(a)&0xffff)

Definition at line 235 of file riptide.c.

#define WORD1 (   a)    (WORD0(a)<<8)

Definition at line 236 of file riptide.c.

#define WORD2 (   a)    (WORD0(a)<<16)

Definition at line 237 of file riptide.c.

#define WRITE_AUDIO_CONTROL (   p,
  x 
)    WRITE_PORT_ULONG(p->audio_control,x)

Definition at line 184 of file riptide.c.

#define WRITE_PORT_ULONG (   p,
  x 
)    outl(x,(unsigned long)&(p))

Definition at line 181 of file riptide.c.

Enumeration Type Documentation

anonymous enum
Enumerator:
SB_CMD 
MODEM_CMD 
I2S_CMD0 
I2S_CMD1 
FM_CMD 
MAX_CMD 

Definition at line 375 of file riptide.c.

enum CMDS
Enumerator:
GETV 
GETC 
GUNS 
SCID 
RMEM 
SMEM 
WMEM 
SDTM 
GOTO 
SSTR 
PSTR 
KSTR 
KDMA 
GPOS 
SETF 
GSTS 
NGPOS 
PSEL 
PCLR 
PLST 
RSSV 
LSEL 
SSRC 
SLST 
RSRC 
SSRB 
SDGV 
RDGV 
DLST 
SACR 
RACR 
ALST 
TXAC 
RXAC 
SI2S 
ARM_SETDPLL 

Definition at line 319 of file riptide.c.

enum E1SOURCE
Enumerator:
ARM2LBUS_FIFO0 
ARM2LBUS_FIFO1 
ARM2LBUS_FIFO2 
ARM2LBUS_FIFO3 
ARM2LBUS_FIFO4 
ARM2LBUS_FIFO5 
ARM2LBUS_FIFO6 
ARM2LBUS_FIFO7 
ARM2LBUS_FIFO8 
ARM2LBUS_FIFO9 
ARM2LBUS_FIFO10 
ARM2LBUS_FIFO11 
ARM2LBUS_FIFO12 
ARM2LBUS_FIFO13 
ARM2LBUS_FIFO14 
ARM2LBUS_FIFO15 
INTER0_OUT 
INTER1_OUT 
INTER2_OUT 
INTER3_OUT 
INTER4_OUT 
INTERM0_OUT 
INTERM1_OUT 
INTERM2_OUT 
INTERM3_OUT 
INTERM4_OUT 
INTERM5_OUT 
INTERM6_OUT 
DECIMM0_OUT 
DECIMM1_OUT 
DECIMM2_OUT 
DECIMM3_OUT 
DECIM0_OUT 
SR3_4_OUT 
OPL3_SAMPLE 
ASRC0 
ASRC1 
ACLNK2PADC 
ACLNK2MODEM0RX 
ACLNK2MIC 
ACLNK2MODEM1RX 
ACLNK2HNDMIC 
DIGITAL_MIXER_OUT0 
GAINFUNC0_OUT 
GAINFUNC1_OUT 
GAINFUNC2_OUT 
GAINFUNC3_OUT 
GAINFUNC4_OUT 
SOFTMODEMTX 
SPLITTER0_OUTL 
SPLITTER0_OUTR 
SPLITTER1_OUTL 
SPLITTER1_OUTR 
SPLITTER2_OUTL 
SPLITTER2_OUTR 
SPLITTER3_OUTL 
SPLITTER3_OUTR 
MERGER0_OUT 
MERGER1_OUT 
MERGER2_OUT 
MERGER3_OUT 
ARM2LBUS_FIFO_DIRECT 
NO_OUT 

Definition at line 328 of file riptide.c.

enum E2SINK
Enumerator:
LBUS2ARM_FIFO0 
LBUS2ARM_FIFO1 
LBUS2ARM_FIFO2 
LBUS2ARM_FIFO3 
LBUS2ARM_FIFO4 
LBUS2ARM_FIFO5 
LBUS2ARM_FIFO6 
LBUS2ARM_FIFO7 
INTER0_IN 
INTER1_IN 
INTER2_IN 
INTER3_IN 
INTER4_IN 
INTERM0_IN 
INTERM1_IN 
INTERM2_IN 
INTERM3_IN 
INTERM4_IN 
INTERM5_IN 
INTERM6_IN 
DECIMM0_IN 
DECIMM1_IN 
DECIMM2_IN 
DECIMM3_IN 
DECIM0_IN 
SR3_4_IN 
PDAC2ACLNK 
MODEM0TX2ACLNK 
MODEM1TX2ACLNK 
HNDSPK2ACLNK 
DIGITAL_MIXER_IN0 
DIGITAL_MIXER_IN1 
DIGITAL_MIXER_IN2 
DIGITAL_MIXER_IN3 
DIGITAL_MIXER_IN4 
DIGITAL_MIXER_IN5 
DIGITAL_MIXER_IN6 
DIGITAL_MIXER_IN7 
DIGITAL_MIXER_IN8 
DIGITAL_MIXER_IN9 
DIGITAL_MIXER_IN10 
DIGITAL_MIXER_IN11 
GAINFUNC0_IN 
GAINFUNC1_IN 
GAINFUNC2_IN 
GAINFUNC3_IN 
GAINFUNC4_IN 
SOFTMODEMRX 
SPLITTER0_IN 
SPLITTER1_IN 
SPLITTER2_IN 
SPLITTER3_IN 
MERGER0_INL 
MERGER0_INR 
MERGER1_INL 
MERGER1_INR 
MERGER2_INL 
MERGER2_INR 
MERGER3_INL 
MERGER3_INR 
E2SINK_MAX 

Definition at line 345 of file riptide.c.

enum FIRMWARE
Enumerator:
DATA_REC 
EXT_END_OF_FILE 
EXT_SEG_ADDR_REC 
EXT_GOTO_CMD_REC 
EXT_LIN_ADDR_REC 

Definition at line 314 of file riptide.c.

enum LBUS_SINK
Enumerator:
LS_SRC_INTERPOLATOR 
LS_SRC_INTERPOLATORM 
LS_SRC_DECIMATOR 
LS_SRC_DECIMATORM 
LS_MIXER_IN 
LS_MIXER_GAIN_FUNCTION 
LS_SRC_SPLITTER 
LS_SRC_MERGER 
LS_NONE1 
LS_NONE2 

Definition at line 362 of file riptide.c.

Enumerator:
M0TX 
M1TX 
TAMTX 
HSSPKR 
PDAC 
DSNDTX0 
DSNDTX1 
DSNDTX2 
DSNDTX3 
DSNDTX4 
DSNDTX5 
DSNDTX6 
DSNDTX7 
WVSTRTX 
COP3DTX 
SPARE 
M0RX 
HSMIC 
M1RX 
CLEANRX 
MICADC 
PADC 
COPRX1 
COPRX2 
CHANNEL_ID_COUNTER 

Definition at line 368 of file riptide.c.

Function Documentation

MODULE_AUTHOR ( "Peter Gruber <[email protected]>"  )
MODULE_DESCRIPTION ( "riptide"  )
MODULE_DEVICE_TABLE ( pci  ,
snd_riptide_ids   
)
module_exit ( alsa_card_riptide_exit  )
MODULE_FIRMWARE ( "riptide.hex"  )
module_init ( alsa_card_riptide_init  )
MODULE_LICENSE ( "GPL"  )
module_param_array ( index  ,
int  ,
NULL  ,
0444   
)
module_param_array ( id  ,
charp  ,
NULL  ,
0444   
)
module_param_array ( enable  ,
bool  ,
NULL  ,
0444   
)
module_param_array ( mpu_port  ,
int  ,
NULL  ,
0444   
)
module_param_array ( opl3_port  ,
int  ,
NULL  ,
0444   
)
MODULE_PARM_DESC ( index  ,
"Index value for Riptide soundcard."   
)
MODULE_PARM_DESC ( id  ,
"ID string for Riptide soundcard."   
)
MODULE_PARM_DESC ( enable  ,
"Enable Riptide soundcard."   
)
MODULE_PARM_DESC ( mpu_port  ,
"MPU401 port # for Riptide driver."   
)
MODULE_PARM_DESC ( opl3_port  ,
"OPL3 port # for Riptide driver."   
)
MODULE_SUPPORTED_DEVICE ( "{{Conexant,Riptide}}"  )