FreeBSD kernel sound device code
emu10kx-midi.c File Reference
#include <sys/param.h>
#include <sys/types.h>
#include <sys/bus.h>
#include <machine/bus.h>
#include <sys/rman.h>
#include <sys/systm.h>
#include <sys/sbuf.h>
#include <sys/queue.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <dev/sound/chip.h>
#include <dev/sound/pcm/sound.h>
#include <dev/sound/midi/midi.h>
#include <dev/sound/midi/mpu401.h>
#include "mpufoi_if.h"
#include <dev/sound/pci/emuxkireg.h>
#include <dev/sound/pci/emu10kx.h>
Include dependency graph for emu10kx-midi.c:

Go to the source code of this file.

Data Structures

struct  emu_midi_softc
 

Functions

static uint32_t emu_midi_card_intr (void *p, uint32_t arg)
 
static unsigned char emu_mread (struct mpu401 *arg __unused, void *cookie, int reg)
 
static void emu_mwrite (struct mpu401 *arg __unused, void *cookie, int reg, unsigned char b)
 
static int emu_muninit (struct mpu401 *arg __unused, void *cookie)
 
static DEFINE_CLASS (emu_mpu, emu_mpu_methods, 0)
 
static void emu_midi_intr (void *p)
 
static int emu_midi_probe (device_t dev)
 
static int emu_midi_attach (device_t dev)
 
static int emu_midi_detach (device_t dev)
 
 DRIVER_MODULE (snd_emu10kx_midi, emu10kx, emu_midi_driver, emu_midi_devclass, 0, 0)
 
 MODULE_DEPEND (snd_emu10kx_midi, snd_emu10kx, SND_EMU10KX_MINVER, SND_EMU10KX_PREFVER, SND_EMU10KX_MAXVER)
 
 MODULE_DEPEND (snd_emu10kx_midi, sound, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER)
 
 MODULE_VERSION (snd_emu10kx_midi, SND_EMU10KX_PREFVER)
 

Variables

static devclass_t emu_midi_devclass
 
static kobj_method_t emu_mpu_methods []
 
static device_method_t emu_midi_methods []
 
static driver_t emu_midi_driver
 

Function Documentation

◆ DEFINE_CLASS()

static DEFINE_CLASS ( emu_mpu  ,
emu_mpu_methods  ,
 
)
static

◆ DRIVER_MODULE()

DRIVER_MODULE ( snd_emu10kx_midi  ,
emu10kx  ,
emu_midi_driver  ,
emu_midi_devclass  ,
,
 
)

◆ emu_midi_attach()

◆ emu_midi_card_intr()

static uint32_t emu_midi_card_intr ( void *  p,
uint32_t  arg 
)
static

Definition at line 120 of file emu10kx-midi.c.

References emu_midi_softc::dev, emu_mread(), emu_midi_softc::mpu, and emu_midi_softc::mpu_intr.

Referenced by emu_midi_attach(), and emu_midi_intr().

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

◆ emu_midi_detach()

static int emu_midi_detach ( device_t  dev)
static

Definition at line 227 of file emu10kx-midi.c.

References emu_midi_softc::card, dev, emu_intr_unregister(), emu_midi_softc::ihandle, emu_midi_softc::mpu, mpu401_uninit(), and emu_midi_softc::mtx.

Here is the call graph for this function:

◆ emu_midi_intr()

static void emu_midi_intr ( void *  p)
static

Definition at line 136 of file emu10kx-midi.c.

References emu_midi_card_intr().

Referenced by emu_midi_attach().

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

◆ emu_midi_probe()

static int emu_midi_probe ( device_t  dev)
static

Definition at line 142 of file emu10kx-midi.c.

References dev, EMU_VAR_ISEMU10K1, func, emu_midi_softc::is_emu10k1, r, and SCF_MIDI.

◆ emu_mread()

static unsigned char emu_mread ( struct mpu401 *arg  __unused,
void *  cookie,
int  reg 
)
static

Definition at line 74 of file emu10kx-midi.c.

References emu_midi_softc::card, emu_rd(), emu_rdptr(), emu_midi_softc::is_emu10k1, emu_midi_softc::port, and reg.

Referenced by emu_midi_card_intr().

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

◆ emu_muninit()

static int emu_muninit ( struct mpu401 *arg  __unused,
void *  cookie 
)
static

Definition at line 100 of file emu10kx-midi.c.

References emu_midi_softc::mpu_intr, and emu_midi_softc::mtx.

◆ emu_mwrite()

static void emu_mwrite ( struct mpu401 *arg  __unused,
void *  cookie,
int  reg,
unsigned char  b 
)
static

Definition at line 89 of file emu10kx-midi.c.

References b, emu_midi_softc::card, emu_wr(), emu_wrptr(), emu_midi_softc::is_emu10k1, emu_midi_softc::port, and reg.

Here is the call graph for this function:

◆ MODULE_DEPEND() [1/2]

MODULE_DEPEND ( snd_emu10kx_midi  ,
snd_emu10kx  ,
SND_EMU10KX_MINVER  ,
SND_EMU10KX_PREFVER  ,
SND_EMU10KX_MAXVER   
)

◆ MODULE_DEPEND() [2/2]

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

◆ MODULE_VERSION()

MODULE_VERSION ( snd_emu10kx_midi  ,
SND_EMU10KX_PREFVER   
)

Variable Documentation

◆ emu_midi_devclass

devclass_t emu_midi_devclass
static

Definition at line 71 of file emu10kx-midi.c.

◆ emu_midi_driver

driver_t emu_midi_driver
static
Initial value:
= {
"midi",
sizeof(struct emu_midi_softc),
}
static device_method_t emu_midi_methods[]
Definition: emu10kx-midi.c:238

Definition at line 246 of file emu10kx-midi.c.

◆ emu_midi_methods

device_method_t emu_midi_methods[]
static
Initial value:
= {
DEVMETHOD(device_probe, emu_midi_probe),
DEVMETHOD(device_attach, emu_midi_attach),
DEVMETHOD(device_detach, emu_midi_detach),
DEVMETHOD_END
}
static int emu_midi_attach(device_t dev)
Definition: emu10kx-midi.c:161
static int emu_midi_detach(device_t dev)
Definition: emu10kx-midi.c:227
static int emu_midi_probe(device_t dev)
Definition: emu10kx-midi.c:142

Definition at line 238 of file emu10kx-midi.c.

◆ emu_mpu_methods

kobj_method_t emu_mpu_methods[]
static
Initial value:
= {
KOBJMETHOD(mpufoi_read, emu_mread),
KOBJMETHOD(mpufoi_write, emu_mwrite),
KOBJMETHOD(mpufoi_uninit, emu_muninit),
}
static void emu_mwrite(struct mpu401 *arg __unused, void *cookie, int reg, unsigned char b)
Definition: emu10kx-midi.c:89
static int emu_muninit(struct mpu401 *arg __unused, void *cookie)
Definition: emu10kx-midi.c:100
static unsigned char emu_mread(struct mpu401 *arg __unused, void *cookie, int reg)
Definition: emu10kx-midi.c:74
#define KOBJMETHOD_END
Definition: midi.c:76

Definition at line 111 of file emu10kx-midi.c.