FreeBSD kernel sound device code
ess.c File Reference
#include <dev/sound/pcm/sound.h>
#include <dev/sound/isa/sb.h>
#include <dev/sound/chip.h>
#include <isa/isavar.h>
#include "mixer_if.h"
Include dependency graph for ess.c:

Go to the source code of this file.

Data Structures

struct  ess_chinfo
 
struct  ess_info
 

Macros

#define ESS_BUFFSIZE   (4096)
 
#define ABS(x)   (((x) < 0)? -(x) : (x))
 
#define ESS18XX_NEWSPEED
 

Functions

 SND_DECLARE_FILE ("$FreeBSD$")
 
static void ess_lock (struct ess_info *sc)
 
static void ess_unlock (struct ess_info *sc)
 
static int port_rd (struct resource *port, int off)
 
static void port_wr (struct resource *port, int off, u_int8_t data)
 
static int ess_rd (struct ess_info *sc, int reg)
 
static void ess_wr (struct ess_info *sc, int reg, u_int8_t val)
 
static int ess_dspready (struct ess_info *sc)
 
static int ess_dspwr (struct ess_info *sc, u_char val)
 
static int ess_cmd (struct ess_info *sc, u_char val)
 
static int ess_cmd1 (struct ess_info *sc, u_char cmd, int val)
 
static void ess_setmixer (struct ess_info *sc, u_int port, u_int value)
 
static int ess_getmixer (struct ess_info *sc, u_int port)
 
static int ess_get_byte (struct ess_info *sc)
 
static int ess_write (struct ess_info *sc, u_char reg, int val)
 
static int ess_read (struct ess_info *sc, u_char reg)
 
static int ess_reset_dsp (struct ess_info *sc)
 
static void ess_release_resources (struct ess_info *sc, device_t dev)
 
static int ess_alloc_resources (struct ess_info *sc, device_t dev)
 
static void ess_intr (void *arg)
 
static u_int8_t ess_calcspeed8 (int *spd)
 
static u_int8_t ess_calcspeed9 (int *spd)
 
static u_int8_t ess_calcfilter (int spd)
 
static int ess_setupch (struct ess_info *sc, int ch, int dir, int spd, u_int32_t fmt, int len)
 
static int ess_start (struct ess_chinfo *ch)
 
static int ess_stop (struct ess_chinfo *ch)
 
static void * esschan_init (kobj_t obj, void *devinfo, struct snd_dbuf *b, struct pcm_channel *c, int dir)
 
static int esschan_setformat (kobj_t obj, void *data, u_int32_t format)
 
static u_int32_t esschan_setspeed (kobj_t obj, void *data, u_int32_t speed)
 
static u_int32_t esschan_setblocksize (kobj_t obj, void *data, u_int32_t blocksize)
 
static int esschan_trigger (kobj_t obj, void *data, int go)
 
static u_int32_t esschan_getptr (kobj_t obj, void *data)
 
static struct pcmchan_capsesschan_getcaps (kobj_t obj, void *data)
 
 CHANNEL_DECLARE (esschan)
 
static int essmix_init (struct snd_mixer *m)
 
static int essmix_set (struct snd_mixer *m, unsigned dev, unsigned left, unsigned right)
 
static u_int32_t essmix_setrecsrc (struct snd_mixer *m, u_int32_t src)
 
 MIXER_DECLARE (essmixer)
 
static int ess_probe (device_t dev)
 
static int ess_attach (device_t dev)
 
static int ess_detach (device_t dev)
 
static int ess_resume (device_t dev)
 
 DRIVER_MODULE (snd_ess, sbc, ess_driver, pcm_devclass, 0, 0)
 
 MODULE_DEPEND (snd_ess, sound, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER)
 
 MODULE_DEPEND (snd_ess, snd_sbc, 1, 1, 1)
 
 MODULE_VERSION (snd_ess, 1)
 
static int esscontrol_probe (device_t dev)
 
static int esscontrol_attach (device_t dev)
 
static int esscontrol_detach (device_t dev)
 
 DRIVER_MODULE (esscontrol, isa, esscontrol_driver, esscontrol_devclass, 0, 0)
 
 DRIVER_MODULE (esscontrol, acpi, esscontrol_driver, esscontrol_devclass, 0, 0)
 
 ISA_PNP_INFO (essc_ids)
 

Variables

static u_int32_t ess_pfmt []
 
static struct pcmchan_caps ess_playcaps = {6000, 48000, ess_pfmt, 0}
 
static u_int32_t ess_rfmt []
 
static struct pcmchan_caps ess_reccaps = {6000, 48000, ess_rfmt, 0}
 
static kobj_method_t esschan_methods []
 
static kobj_method_t essmixer_methods []
 
static device_method_t ess_methods []
 
static driver_t ess_driver
 
static devclass_t esscontrol_devclass
 
static struct isa_pnp_id essc_ids []
 
static device_method_t esscontrol_methods []
 
static driver_t esscontrol_driver
 

Macro Definition Documentation

◆ ABS

#define ABS (   x)    (((x) < 0)? -(x) : (x))

Definition at line 50 of file ess.c.

◆ ESS18XX_NEWSPEED

#define ESS18XX_NEWSPEED

Definition at line 56 of file ess.c.

◆ ESS_BUFFSIZE

#define ESS_BUFFSIZE   (4096)

Definition at line 49 of file ess.c.

Function Documentation

◆ CHANNEL_DECLARE()

CHANNEL_DECLARE ( esschan  )

◆ DRIVER_MODULE() [1/3]

DRIVER_MODULE ( esscontrol  ,
acpi  ,
esscontrol_driver  ,
esscontrol_devclass  ,
,
 
)

◆ DRIVER_MODULE() [2/3]

DRIVER_MODULE ( esscontrol  ,
isa  ,
esscontrol_driver  ,
esscontrol_devclass  ,
,
 
)

◆ DRIVER_MODULE() [3/3]

DRIVER_MODULE ( snd_ess  ,
sbc  ,
ess_driver  ,
pcm_devclass  ,
,
 
)

◆ ess_alloc_resources()

static int ess_alloc_resources ( struct ess_info sc,
device_t  dev 
)
static

Definition at line 318 of file ess.c.

References ess_info::bufsize, dev, ess_info::drq1, ess_info::drq2, ess_info::io_base, ess_info::irq, and rid.

Referenced by ess_attach().

Here is the caller graph for this function:

◆ ess_attach()

◆ ess_calcfilter()

static u_int8_t ess_calcfilter ( int  spd)
static

Definition at line 450 of file ess.c.

References spd.

Referenced by ess_setupch().

Here is the caller graph for this function:

◆ ess_calcspeed8()

static u_int8_t ess_calcspeed8 ( int *  spd)
static

Definition at line 409 of file ess.c.

References spd, and speed.

Referenced by ess_setupch(), and esschan_setspeed().

Here is the caller graph for this function:

◆ ess_calcspeed9()

static u_int8_t ess_calcspeed9 ( int *  spd)
static

Definition at line 428 of file ess.c.

References ABS, spd, and speed.

Referenced by ess_setupch(), and esschan_setspeed().

Here is the caller graph for this function:

◆ ess_cmd()

static int ess_cmd ( struct ess_info sc,
u_char  val 
)
static

Definition at line 205 of file ess.c.

References ess_dspwr(), and val.

Referenced by ess_read(), ess_reset_dsp(), ess_start(), and ess_stop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_cmd1()

static int ess_cmd1 ( struct ess_info sc,
u_char  cmd,
int  val 
)
static

Definition at line 214 of file ess.c.

References ess_dspwr(), and val.

Referenced by ess_write().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_detach()

static int ess_detach ( device_t  dev)
static

Definition at line 893 of file ess.c.

References dev, ess_release_resources(), pcm_getdevinfo(), pcm_unregister(), and r.

Here is the call graph for this function:

◆ ess_dspready()

static int ess_dspready ( struct ess_info sc)
static

Definition at line 183 of file ess.c.

References ess_rd(), and SBDSP_STATUS.

Referenced by ess_dspwr().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_dspwr()

static int ess_dspwr ( struct ess_info sc,
u_char  val 
)
static

Definition at line 189 of file ess.c.

References ess_dspready(), ess_wr(), SBDSP_CMD, and val.

Referenced by ess_cmd(), and ess_cmd1().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_get_byte()

static int ess_get_byte ( struct ess_info sc)
static

Definition at line 247 of file ess.c.

References DSP_DATA_AVAIL, DSP_READ, and ess_rd().

Referenced by ess_read(), and ess_reset_dsp().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_getmixer()

static int ess_getmixer ( struct ess_info sc,
u_int  port 
)
static

Definition at line 235 of file ess.c.

References ess_rd(), ess_wr(), SB_MIX_ADDR, SB_MIX_DATA, and val.

Referenced by ess_attach(), ess_intr(), ess_start(), and ess_stop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_intr()

static void ess_intr ( void *  arg)
static

Definition at line 353 of file ess.c.

References ess_chinfo::buffer, ess_chinfo::channel, chn_intr(), DSP_DATA_AVAIL, ess_getmixer(), ess_lock(), ess_rd(), ess_read(), ess_setmixer(), ess_unlock(), ess_write(), ess_chinfo::hwch, PCMTRIG_STOP, ess_info::rch, ess_chinfo::run, sndbuf_dma(), src, and ess_chinfo::stopping.

Referenced by ess_attach().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_lock()

static void ess_lock ( struct ess_info sc)
static

Definition at line 145 of file ess.c.

References ess_info::parent_dev, and sbc_lock().

Referenced by ess_intr(), ess_start(), and ess_stop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_probe()

static int ess_probe ( device_t  dev)
static

Definition at line 789 of file ess.c.

References BD_F_ESS, dev, func, r, and SCF_PCM.

◆ ess_rd()

static int ess_rd ( struct ess_info sc,
int  reg 
)
static

Definition at line 171 of file ess.c.

References ess_info::io_base, port_rd(), and reg.

Referenced by ess_attach(), ess_dspready(), ess_get_byte(), ess_getmixer(), and ess_intr().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_read()

static int ess_read ( struct ess_info sc,
u_char  reg 
)
static

Definition at line 267 of file ess.c.

References ess_cmd(), ess_get_byte(), and reg.

Referenced by ess_intr(), ess_setupch(), ess_start(), and ess_stop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_release_resources()

static void ess_release_resources ( struct ess_info sc,
device_t  dev 
)
static

Definition at line 288 of file ess.c.

References dev, ess_info::drq1, ess_info::drq2, free, ess_info::ih, ess_info::io_base, ess_info::irq, and ess_info::parent_dmat.

Referenced by ess_attach(), and ess_detach().

Here is the caller graph for this function:

◆ ess_reset_dsp()

static int ess_reset_dsp ( struct ess_info sc)
static

Definition at line 273 of file ess.c.

References DEB, ess_cmd(), ess_get_byte(), ess_wr(), ess_info::io_base, and SBDSP_RST.

Referenced by ess_attach(), and ess_resume().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_resume()

static int ess_resume ( device_t  dev)
static

Definition at line 908 of file ess.c.

References dev, ess_reset_dsp(), mixer_reinit(), and pcm_getdevinfo().

Here is the call graph for this function:

◆ ess_setmixer()

static void ess_setmixer ( struct ess_info sc,
u_int  port,
u_int  value 
)
static

Definition at line 225 of file ess.c.

References DEB, ess_wr(), SB_MIX_ADDR, SB_MIX_DATA, and value.

Referenced by ess_attach(), ess_intr(), ess_setupch(), ess_start(), ess_stop(), essmix_init(), essmix_set(), and essmix_setrecsrc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_setupch()

static int ess_setupch ( struct ess_info sc,
int  ch,
int  dir,
int  spd,
u_int32_t  fmt,
int  len 
)
static

Definition at line 461 of file ess.c.

References AFMT_16BIT, AFMT_CHANNEL, dir, ess_calcfilter(), ess_calcspeed8(), ess_calcspeed9(), ess_read(), ess_setmixer(), ess_write(), fmt, len, ess_info::newspeed, PCMDIR_PLAY, PCMDIR_REC, spd, and stereo.

Referenced by ess_start().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_start()

static int ess_start ( struct ess_chinfo ch)
static

Definition at line 523 of file ess.c.

References ess_chinfo::blksz, ess_chinfo::dir, DSP_CMD_SPKON, ess_cmd(), ess_getmixer(), ess_lock(), ess_read(), ess_setmixer(), ess_setupch(), ess_unlock(), ess_write(), ess_chinfo::fmt, ess_chinfo::hwch, ess_chinfo::parent, PCMDIR_PLAY, ess_chinfo::spd, and ess_chinfo::stopping.

Referenced by esschan_trigger().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_stop()

static int ess_stop ( struct ess_chinfo ch)
static

Definition at line 542 of file ess.c.

References ess_chinfo::dir, DSP_CMD_SPKOFF, ess_cmd(), ess_getmixer(), ess_lock(), ess_read(), ess_setmixer(), ess_unlock(), ess_write(), ess_chinfo::hwch, ess_chinfo::parent, PCMDIR_PLAY, and ess_chinfo::stopping.

Referenced by esschan_trigger().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_unlock()

static void ess_unlock ( struct ess_info sc)
static

Definition at line 150 of file ess.c.

References ess_info::parent_dev, and sbc_unlock().

Referenced by ess_intr(), ess_start(), and ess_stop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_wr()

static void ess_wr ( struct ess_info sc,
int  reg,
u_int8_t  val 
)
static

Definition at line 177 of file ess.c.

References ess_info::io_base, port_wr(), reg, and val.

Referenced by ess_dspwr(), ess_getmixer(), ess_reset_dsp(), and ess_setmixer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ess_write()

static int ess_write ( struct ess_info sc,
u_char  reg,
int  val 
)
static

Definition at line 261 of file ess.c.

References ess_cmd1(), reg, and val.

Referenced by ess_intr(), ess_setupch(), ess_start(), and ess_stop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ esschan_getcaps()

static struct pcmchan_caps * esschan_getcaps ( kobj_t  obj,
void *  data 
)
static

Definition at line 645 of file ess.c.

References data, ess_chinfo::dir, ess_playcaps, ess_reccaps, and PCMDIR_PLAY.

◆ esschan_getptr()

static u_int32_t esschan_getptr ( kobj_t  obj,
void *  data 
)
static

Definition at line 637 of file ess.c.

References ess_chinfo::buffer, data, and sndbuf_dmaptr().

Here is the call graph for this function:

◆ esschan_init()

static void * esschan_init ( kobj_t  obj,
void *  devinfo,
struct snd_dbuf b,
struct pcm_channel c,
int  dir 
)
static

◆ esschan_setblocksize()

static u_int32_t esschan_setblocksize ( kobj_t  obj,
void *  data,
u_int32_t  blocksize 
)
static

Definition at line 604 of file ess.c.

References ess_chinfo::blksz, blocksize, and data.

◆ esschan_setformat()

static int esschan_setformat ( kobj_t  obj,
void *  data,
u_int32_t  format 
)
static

Definition at line 581 of file ess.c.

References data, ess_chinfo::fmt, and format.

◆ esschan_setspeed()

static u_int32_t esschan_setspeed ( kobj_t  obj,
void *  data,
u_int32_t  speed 
)
static

Definition at line 590 of file ess.c.

References data, ess_calcspeed8(), ess_calcspeed9(), ess_info::newspeed, ess_chinfo::parent, ess_chinfo::spd, and speed.

Here is the call graph for this function:

◆ esschan_trigger()

static int esschan_trigger ( kobj_t  obj,
void *  data,
int  go 
)
static

Definition at line 613 of file ess.c.

References ess_chinfo::buffer, data, ess_start(), ess_stop(), go, PCMTRIG_ABORT, PCMTRIG_COMMON, PCMTRIG_START, PCMTRIG_STOP, ess_chinfo::run, and sndbuf_dma().

Here is the call graph for this function:

◆ esscontrol_attach()

static int esscontrol_attach ( device_t  dev)
static

Definition at line 968 of file ess.c.

References dev, port_rd(), port_wr(), and rid.

Here is the call graph for this function:

◆ esscontrol_detach()

static int esscontrol_detach ( device_t  dev)
static

Definition at line 994 of file ess.c.

◆ esscontrol_probe()

static int esscontrol_probe ( device_t  dev)
static

Definition at line 957 of file ess.c.

References dev, and essc_ids.

◆ essmix_init()

static int essmix_init ( struct snd_mixer m)
static

Definition at line 667 of file ess.c.

References ess_setmixer(), m, mix_getdevinfo(), mix_setdevs(), and mix_setrecdevs().

Here is the call graph for this function:

◆ essmix_set()

static int essmix_set ( struct snd_mixer m,
unsigned  dev,
unsigned  left,
unsigned  right 
)
static

Definition at line 684 of file ess.c.

References dev, ess_setmixer(), left, m, mix_getdevinfo(), r, and right.

Here is the call graph for this function:

◆ essmix_setrecsrc()

static u_int32_t essmix_setrecsrc ( struct snd_mixer m,
u_int32_t  src 
)
static

Definition at line 748 of file ess.c.

References ess_setmixer(), m, mix_getdevinfo(), and src.

Here is the call graph for this function:

◆ ISA_PNP_INFO()

ISA_PNP_INFO ( essc_ids  )

◆ MIXER_DECLARE()

MIXER_DECLARE ( essmixer  )

◆ MODULE_DEPEND() [1/2]

MODULE_DEPEND ( snd_ess  ,
snd_sbc  ,
,
,
 
)

◆ MODULE_DEPEND() [2/2]

MODULE_DEPEND ( snd_ess  ,
sound  ,
SOUND_MINVER  ,
SOUND_PREFVER  ,
SOUND_MAXVER   
)

◆ MODULE_VERSION()

MODULE_VERSION ( snd_ess  ,
 
)

◆ port_rd()

static int port_rd ( struct resource *  port,
int  off 
)
static

Definition at line 155 of file ess.c.

Referenced by ess_rd(), and esscontrol_attach().

Here is the caller graph for this function:

◆ port_wr()

static void port_wr ( struct resource *  port,
int  off,
u_int8_t  data 
)
static

Definition at line 163 of file ess.c.

References data.

Referenced by ess_wr(), and esscontrol_attach().

Here is the caller graph for this function:

◆ SND_DECLARE_FILE()

SND_DECLARE_FILE ( "$FreeBSD$"  )

Variable Documentation

◆ ess_driver

driver_t ess_driver
static
Initial value:
= {
"pcm",
}
static device_method_t ess_methods[]
Definition: ess.c:927
#define PCM_SOFTC_SIZE
Definition: sound.h:96

Definition at line 936 of file ess.c.

◆ ess_methods

device_method_t ess_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, ess_probe),
DEVMETHOD(device_attach, ess_attach),
DEVMETHOD(device_detach, ess_detach),
DEVMETHOD(device_resume, ess_resume),
{ 0, 0 }
}
static int ess_resume(device_t dev)
Definition: ess.c:908
static int ess_attach(device_t dev)
Definition: ess.c:809
static int ess_probe(device_t dev)
Definition: ess.c:789
static int ess_detach(device_t dev)
Definition: ess.c:893

Definition at line 927 of file ess.c.

◆ ess_pfmt

u_int32_t ess_pfmt[]
static
Initial value:
= {
SND_FORMAT(AFMT_U8, 1, 0),
SND_FORMAT(AFMT_U8, 2, 0),
SND_FORMAT(AFMT_S8, 1, 0),
SND_FORMAT(AFMT_S8, 2, 0),
SND_FORMAT(AFMT_S16_LE, 1, 0),
SND_FORMAT(AFMT_S16_LE, 2, 0),
SND_FORMAT(AFMT_U16_LE, 1, 0),
SND_FORMAT(AFMT_U16_LE, 2, 0),
0
}
#define SND_FORMAT(f, c, e)
Definition: sound.h:238

Definition at line 58 of file ess.c.

◆ ess_playcaps

struct pcmchan_caps ess_playcaps = {6000, 48000, ess_pfmt, 0}
static

Definition at line 70 of file ess.c.

Referenced by esschan_getcaps().

◆ ess_reccaps

struct pcmchan_caps ess_reccaps = {6000, 48000, ess_rfmt, 0}
static

Definition at line 84 of file ess.c.

Referenced by esschan_getcaps().

◆ ess_rfmt

u_int32_t ess_rfmt[]
static
Initial value:
= {
SND_FORMAT(AFMT_U8, 1, 0),
SND_FORMAT(AFMT_U8, 2, 0),
SND_FORMAT(AFMT_S8, 1, 0),
SND_FORMAT(AFMT_S8, 2, 0),
SND_FORMAT(AFMT_S16_LE, 1, 0),
SND_FORMAT(AFMT_S16_LE, 2, 0),
SND_FORMAT(AFMT_U16_LE, 1, 0),
SND_FORMAT(AFMT_U16_LE, 2, 0),
0
}

Definition at line 72 of file ess.c.

◆ essc_ids

struct isa_pnp_id essc_ids[]
static
Initial value:
= {
{0x06007316, "ESS Control"},
{0}
}

Definition at line 951 of file ess.c.

Referenced by esscontrol_probe().

◆ esschan_methods

kobj_method_t esschan_methods[]
static
Initial value:
= {
KOBJMETHOD(channel_init, esschan_init),
KOBJMETHOD(channel_setformat, esschan_setformat),
KOBJMETHOD(channel_setspeed, esschan_setspeed),
KOBJMETHOD(channel_setblocksize, esschan_setblocksize),
KOBJMETHOD(channel_trigger, esschan_trigger),
KOBJMETHOD(channel_getptr, esschan_getptr),
KOBJMETHOD(channel_getcaps, esschan_getcaps),
}
static void * esschan_init(kobj_t obj, void *devinfo, struct snd_dbuf *b, struct pcm_channel *c, int dir)
Definition: ess.c:562
static struct pcmchan_caps * esschan_getcaps(kobj_t obj, void *data)
Definition: ess.c:645
static int esschan_setformat(kobj_t obj, void *data, u_int32_t format)
Definition: ess.c:581
static u_int32_t esschan_setblocksize(kobj_t obj, void *data, u_int32_t blocksize)
Definition: ess.c:604
static int esschan_trigger(kobj_t obj, void *data, int go)
Definition: ess.c:613
static u_int32_t esschan_setspeed(kobj_t obj, void *data, u_int32_t speed)
Definition: ess.c:590
static u_int32_t esschan_getptr(kobj_t obj, void *data)
Definition: ess.c:637
#define KOBJMETHOD_END
Definition: midi.c:76

Definition at line 652 of file ess.c.

◆ esscontrol_devclass

devclass_t esscontrol_devclass
static

Definition at line 949 of file ess.c.

◆ esscontrol_driver

driver_t esscontrol_driver
static
Initial value:
= {
"esscontrol",
1,
}
static device_method_t esscontrol_methods[]
Definition: ess.c:999

Definition at line 1007 of file ess.c.

◆ esscontrol_methods

device_method_t esscontrol_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, esscontrol_probe),
DEVMETHOD(device_attach, esscontrol_attach),
DEVMETHOD(device_detach, esscontrol_detach),
{ 0, 0 }
}
static int esscontrol_detach(device_t dev)
Definition: ess.c:994
static int esscontrol_probe(device_t dev)
Definition: ess.c:957
static int esscontrol_attach(device_t dev)
Definition: ess.c:968

Definition at line 999 of file ess.c.

◆ essmixer_methods

kobj_method_t essmixer_methods[]
static
Initial value:
= {
KOBJMETHOD(mixer_init, essmix_init),
KOBJMETHOD(mixer_set, essmix_set),
}
static int essmix_set(struct snd_mixer *m, unsigned dev, unsigned left, unsigned right)
Definition: ess.c:684
static u_int32_t essmix_setrecsrc(struct snd_mixer *m, u_int32_t src)
Definition: ess.c:748
static int essmix_init(struct snd_mixer *m)
Definition: ess.c:667
static int mixer_setrecsrc(struct snd_mixer *mixer, u_int32_t src)
Definition: mixer.c:373
int mixer_init(device_t dev, kobj_class_t cls, void *devinfo)
Definition: mixer.c:725
static int mixer_set(struct snd_mixer *m, u_int dev, u_int32_t muted, u_int lev)
Definition: mixer.c:247

Definition at line 778 of file ess.c.