FreeBSD kernel sound device code
davbus.c File Reference
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/module.h>
#include <sys/mutex.h>
#include <sys/rman.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/sound/pcm/sound.h>
#include <dev/sound/macio/aoa.h>
#include <dev/sound/macio/davbusreg.h>
#include <machine/intr_machdep.h>
#include <machine/resource.h>
#include <machine/bus.h>
#include "mixer_if.h"
Include dependency graph for davbus.c:

Go to the source code of this file.

Data Structures

struct  davbus_softc
 

Functions

static int davbus_probe (device_t)
 
static int davbus_attach (device_t)
 
static void davbus_cint (void *)
 
 DRIVER_MODULE (pcm_davbus, macio, pcm_davbus_driver, pcm_devclass, 0, 0)
 
 MODULE_DEPEND (pcm_davbus, sound, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER)
 
static int burgundy_init (struct snd_mixer *m)
 
static int burgundy_uninit (struct snd_mixer *m)
 
static int burgundy_reinit (struct snd_mixer *m)
 
static void burgundy_write_locked (struct davbus_softc *, u_int, u_int)
 
static void burgundy_set_outputs (struct davbus_softc *d, u_int mask)
 
static u_int burgundy_read_status (struct davbus_softc *d, u_int status)
 
static int burgundy_set (struct snd_mixer *m, unsigned dev, unsigned left, unsigned right)
 
static u_int32_t burgundy_setrecsrc (struct snd_mixer *m, u_int32_t src)
 
 MIXER_DECLARE (burgundy_mixer)
 
static int screamer_init (struct snd_mixer *m)
 
static int screamer_uninit (struct snd_mixer *m)
 
static int screamer_reinit (struct snd_mixer *m)
 
static void screamer_write_locked (struct davbus_softc *, u_int, u_int)
 
static void screamer_set_outputs (struct davbus_softc *d, u_int mask)
 
static u_int screamer_read_status (struct davbus_softc *d, u_int status)
 
static int screamer_set (struct snd_mixer *m, unsigned dev, unsigned left, unsigned right)
 
static u_int32_t screamer_setrecsrc (struct snd_mixer *m, u_int32_t src)
 
 MIXER_DECLARE (screamer_mixer)
 

Variables

static device_method_t pcm_davbus_methods []
 
static driver_t pcm_davbus_driver
 
static kobj_method_t burgundy_mixer_methods []
 
static kobj_method_t screamer_mixer_methods []
 

Function Documentation

◆ burgundy_init()

◆ burgundy_read_status()

static u_int burgundy_read_status ( struct davbus_softc d,
u_int  status 
)
static

Definition at line 265 of file davbus.c.

References status.

Referenced by burgundy_init().

Here is the caller graph for this function:

◆ burgundy_reinit()

static int burgundy_reinit ( struct snd_mixer m)
static

Definition at line 199 of file davbus.c.

◆ burgundy_set()

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

◆ burgundy_set_outputs()

static void burgundy_set_outputs ( struct davbus_softc d,
u_int  mask 
)
static

Definition at line 231 of file davbus.c.

References BURGUNDY_MUTE_REG, BURGUNDY_P14L_EN, BURGUNDY_P14R_EN, BURGUNDY_P17M_EN, burgundy_write_locked(), DPRINTF, mask, and davbus_softc::output_mask.

Referenced by burgundy_init().

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

◆ burgundy_setrecsrc()

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

Definition at line 304 of file davbus.c.

◆ burgundy_uninit()

static int burgundy_uninit ( struct snd_mixer m)
static

Definition at line 193 of file davbus.c.

◆ burgundy_write_locked()

static void burgundy_write_locked ( struct davbus_softc d,
u_int  reg,
u_int  val 
)
static

Definition at line 205 of file davbus.c.

References addr, BURGUNDY_CTRL_RESET, BURGUNDY_CTRL_WRITE, data, DAVBUS_CODEC_BUSY, DAVBUS_CODEC_CTRL, offset, davbus_softc::reg, reg, size, and val.

Referenced by burgundy_init(), burgundy_set(), and burgundy_set_outputs().

Here is the caller graph for this function:

◆ davbus_attach()

◆ davbus_cint()

static void davbus_cint ( void *  ptr)
static

Definition at line 577 of file davbus.c.

References DAVBUS_CODEC_STATUS, DAVBUS_PORTCHG, DAVBUS_SOUND_CTRL, mask, davbus_softc::mutex, davbus_softc::read_status, davbus_softc::reg, reg, davbus_softc::set_outputs, and status.

Referenced by davbus_attach().

Here is the caller graph for this function:

◆ davbus_probe()

static int davbus_probe ( device_t  self)
static

Definition at line 97 of file davbus.c.

References name.

◆ DRIVER_MODULE()

DRIVER_MODULE ( pcm_davbus  ,
macio  ,
pcm_davbus_driver  ,
pcm_devclass  ,
,
 
)

◆ MIXER_DECLARE() [1/2]

MIXER_DECLARE ( burgundy_mixer  )

◆ MIXER_DECLARE() [2/2]

MIXER_DECLARE ( screamer_mixer  )

◆ MODULE_DEPEND()

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

◆ screamer_init()

◆ screamer_read_status()

static u_int screamer_read_status ( struct davbus_softc d,
u_int  status 
)
static

Definition at line 436 of file davbus.c.

References davbus_softc::device_id, and status.

Referenced by screamer_init().

Here is the caller graph for this function:

◆ screamer_reinit()

static int screamer_reinit ( struct snd_mixer m)
static

Definition at line 371 of file davbus.c.

◆ screamer_set()

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

Definition at line 462 of file davbus.c.

References dev, DPRINTF, left, m, mix_getdevinfo(), davbus_softc::mutex, right, SCREAMER_CODEC_ADDR2, SCREAMER_CODEC_ADDR4, and screamer_write_locked().

Here is the call graph for this function:

◆ screamer_set_outputs()

static void screamer_set_outputs ( struct davbus_softc d,
u_int  mask 
)
static

Definition at line 397 of file davbus.c.

References davbus_softc::device_id, DPRINTF, mask, davbus_softc::output_mask, SCREAMER_CODEC_ADDR1, SCREAMER_MUTE_HEADPHONES, SCREAMER_MUTE_SPEAKER, SCREAMER_PROG_OUTPUT0, SCREAMER_PROG_OUTPUT1, and screamer_write_locked().

Referenced by screamer_init().

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

◆ screamer_setrecsrc()

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

Definition at line 489 of file davbus.c.

◆ screamer_uninit()

static int screamer_uninit ( struct snd_mixer m)
static

Definition at line 365 of file davbus.c.

◆ screamer_write_locked()

static void screamer_write_locked ( struct davbus_softc d,
u_int  reg,
u_int  val 
)
static

Definition at line 377 of file davbus.c.

References DAVBUS_CODEC_BUSY, DAVBUS_CODEC_CTRL, davbus_softc::reg, reg, SCREAMER_CODEC_EMSEL0, and val.

Referenced by screamer_init(), screamer_set(), and screamer_set_outputs().

Here is the caller graph for this function:

Variable Documentation

◆ burgundy_mixer_methods

kobj_method_t burgundy_mixer_methods[]
static
Initial value:
= {
KOBJMETHOD(mixer_init, burgundy_init),
KOBJMETHOD(mixer_set, burgundy_set),
}
static int burgundy_uninit(struct snd_mixer *m)
Definition: davbus.c:193
static int burgundy_set(struct snd_mixer *m, unsigned dev, unsigned left, unsigned right)
Definition: davbus.c:274
static int burgundy_reinit(struct snd_mixer *m)
Definition: davbus.c:199
static u_int32_t burgundy_setrecsrc(struct snd_mixer *m, u_int32_t src)
Definition: davbus.c:304
static int burgundy_init(struct snd_mixer *m)
Definition: davbus.c:139
#define KOBJMETHOD_END
Definition: midi.c:76
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
int mixer_uninit(device_t dev)
Definition: mixer.c:805
int mixer_reinit(device_t dev)
Definition: mixer.c:860

Definition at line 127 of file davbus.c.

◆ pcm_davbus_driver

driver_t pcm_davbus_driver
static
Initial value:
= {
"pcm",
}
static device_method_t pcm_davbus_methods[]
Definition: davbus.c:77
#define PCM_SOFTC_SIZE
Definition: sound.h:96

Definition at line 84 of file davbus.c.

◆ pcm_davbus_methods

device_method_t pcm_davbus_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, davbus_probe),
DEVMETHOD(device_attach, davbus_attach),
{ 0, 0 }
}
static int davbus_attach(device_t)
Definition: davbus.c:495
static int davbus_probe(device_t)
Definition: davbus.c:97

Definition at line 77 of file davbus.c.

◆ screamer_mixer_methods

kobj_method_t screamer_mixer_methods[]
static
Initial value:
= {
KOBJMETHOD(mixer_init, screamer_init),
KOBJMETHOD(mixer_set, screamer_set),
}
static int screamer_uninit(struct snd_mixer *m)
Definition: davbus.c:365
static int screamer_set(struct snd_mixer *m, unsigned dev, unsigned left, unsigned right)
Definition: davbus.c:462
static u_int32_t screamer_setrecsrc(struct snd_mixer *m, u_int32_t src)
Definition: davbus.c:489
static int screamer_reinit(struct snd_mixer *m)
Definition: davbus.c:371
static int screamer_init(struct snd_mixer *m)
Definition: davbus.c:335

Definition at line 323 of file davbus.c.