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,

Reply via email to