36#include <sys/kernel.h>
42#include <sys/malloc.h>
45#ifdef HAVE_KERNEL_OPTION_HEADERS
56#define KOBJMETHOD_END { NULL, NULL }
65#define MPU_STATMASK 0xc0
66#define MPU_OUTPUTBUSY 0x40
67#define MPU_INPUTBUSY 0x80
71#define CMD(m,d) MPUFOI_WRITE(m, m->cookie, MPU_CMDPORT,d)
72#define STATUS(m) MPUFOI_READ(m, m->cookie, MPU_STATPORT)
73#define READ(m) MPUFOI_READ(m, m->cookie, MPU_DATAPORT)
74#define WRITE(m,d) MPUFOI_WRITE(m, m->cookie, MPU_DATAPORT,d)
123#define MPU_INTR_BUF 16
131#define RXRDY(m) ( (STATUS(m) & MPU_INPUTBUSY) == 0)
132#define TXRDY(m) ( (STATUS(m) & MPU_OUTPUTBUSY) == 0)
134#define D(x,l) printf("mpu401_intr %d %x %s %s\n",l, x, x&MPU_INPUTBUSY?"RX":"", x&MPU_OUTPUTBUSY?"TX":"")
170 if ((
m->flags &
M_TXEN) && (
m->si)) {
183 m = malloc(
sizeof(*
m), M_MIDI, M_NOWAIT | M_ZERO);
188 kobj_init((kobj_t)
m, cls);
190 callout_init(&
m->timer, 1);
202 printf(
"mpu401_init error\n");
240 printf(
"mpu401_minit failed active sensing\n");
249 return MPUFOI_UNINIT(
m,
m->cookie);
269 printf(
"mpu401_callback %s %s %s %s\n",
292 return "descr mpu401";
298 return "provider mpu401";
struct pcmchan_matrix * m
int midi_in(struct snd_midi *m, MIDI_TYPE *buf, int size)
int midi_uninit(struct snd_midi *m)
struct snd_midi * midi_init(kobj_class_t cls, int unit, int channel, void *cookie)
int midi_out(struct snd_midi *m, MIDI_TYPE *buf, int size)
static int mpu401_moutqsize(struct snd_midi *, void *)
static kobj_method_t mpu401_methods[]
static int mpu401_minqsize(struct snd_midi *, void *)
static void mpu401_timeout(void *m)
static int mpu401_minit(struct snd_midi *, void *)
static void mpu401_mcallbackp(struct snd_midi *, void *, int)
static mpu401_intr_t mpu401_intr
DEFINE_CLASS(mpu401, mpu401_methods, 0)
static const char * mpu401_mdescr(struct snd_midi *, void *, int)
int mpu401_uninit(struct mpu401 *m)
static void mpu401_mcallback(struct snd_midi *, void *, int)
struct mpu401 * mpu401_init(kobj_class_t cls, void *cookie, driver_intr_t softintr, mpu401_intr_t **cb)
static int mpu401_muninit(struct snd_midi *, void *)
static const char * mpu401_mprovider(struct snd_midi *, void *)
int mpu401_intr_t(struct mpu401 *_obj)