Module Name: src
Committed By: mrg
Date: Sun Nov 20 10:27:36 UTC 2011
Modified Files:
src/sys/arch/amiga/dev [jmcneill-audiomp3]: repulse.c
Log Message:
port this to audiomp branch. no allocm/freem here, no detach, so just
add/initialise sc_lock and sc_intr_lock, and add get_locks() support.
XXX: untested, but amiga kernels compile now.
To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.17.4.1 src/sys/arch/amiga/dev/repulse.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/amiga/dev/repulse.c
diff -u src/sys/arch/amiga/dev/repulse.c:1.17 src/sys/arch/amiga/dev/repulse.c:1.17.4.1
--- src/sys/arch/amiga/dev/repulse.c:1.17 Tue Jul 19 15:55:27 2011
+++ src/sys/arch/amiga/dev/repulse.c Sun Nov 20 10:27:36 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: repulse.c,v 1.17 2011/07/19 15:55:27 dyoung Exp $ */
+/* $NetBSD: repulse.c,v 1.17.4.1 2011/11/20 10:27:36 mrg Exp $ */
/*-
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: repulse.c,v 1.17 2011/07/19 15:55:27 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: repulse.c,v 1.17.4.1 2011/11/20 10:27:36 mrg Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -85,6 +85,7 @@ int rep_set_port(void *, mixer_ctrl_t *)
int rep_get_port(void *, mixer_ctrl_t *);
int rep_query_devinfo(void *, mixer_devinfo_t *);
size_t rep_round_buffersize(void *, int, size_t);
+void rep_get_locks(void *, kmutex_t **, kmutex_t **);
int rep_start_input(void *, void *, int, void (*)(void *), void *);
int rep_start_output(void *, void *, int, void (*)(void *), void *);
@@ -122,6 +123,8 @@ const struct audio_hw_if rep_hw_if = {
/* trigger_output */ 0,
/* trigger_input */ 0,
/* dev_ioctl */ 0,
+ /* powerstate */ 0,
+ rep_get_locks,
};
/* hardware registers */
@@ -219,6 +222,8 @@ struct repulse_softc {
int sc_playscale;
unsigned sc_playflags;
+ kmutex_t sc_lock;
+ kmutex_t sc_intr_lock;
};
int repulse_match (struct device *, struct cfdata *, void *);
@@ -310,7 +315,10 @@ repulse_attach(struct device *parent, st
sc->sc_achost.attach = repac_attach;
sc->sc_achost.flags = 0;
- if (ac97_attach(&sc->sc_achost, self)) {
+ mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE);
+ mutex_init(&sc->sc_intr_lock, MUTEX_DEFAULT, IPL_SCHED);
+
+ if (ac97_attach(&sc->sc_achost, self, &sc->sc_lock)) {
printf("%s: error attaching codec\n", self->dv_xname);
return;
}
@@ -579,6 +587,15 @@ rep_round_buffersize(void *arg, int dire
return size;
}
+void
+rep_get_locks(void *opaque, kmutex_t **intr, kmutex_t **thread)
+{
+ struct repulse_softc *sc = opaque;
+
+ *intr = &sc->sc_intr_lock;
+ *thread = &sc->sc_lock;
+}
+
int
rep_set_params(void *addr, int setmode, int usemode,