Module Name:    src
Committed By:   mlelstv
Date:           Wed Jan 22 21:21:24 UTC 2020

Modified Files:
        src/sys/arch/arm/broadcom: bcm2835_vcaudio.c bcm2835_vcaudioreg.h

Log Message:
Adapt to changed 64bit vchiq interface.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h

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/arm/broadcom/bcm2835_vcaudio.c
diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.14 src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.15
--- src/sys/arch/arm/broadcom/bcm2835_vcaudio.c:1.14	Wed May  8 13:40:14 2019
+++ src/sys/arch/arm/broadcom/bcm2835_vcaudio.c	Wed Jan 22 21:21:24 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_vcaudio.c,v 1.14 2019/05/08 13:40:14 isaki Exp $ */
+/* $NetBSD: bcm2835_vcaudio.c,v 1.15 2020/01/22 21:21:24 mlelstv Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill <[email protected]>
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.14 2019/05/08 13:40:14 isaki Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_vcaudio.c,v 1.15 2020/01/22 21:21:24 mlelstv Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -371,8 +371,6 @@ vcaudio_service_callback(void *priv, con
 	VC_AUDIO_MSG_T msg;
 	int32_t msglen = 0;
 	int error;
-	void (*intr)(void *) = NULL;
-	void *intrarg = NULL;
 
 	if (sc == NULL || reason != VCHI_CALLBACK_MSG_AVAILABLE)
 		return;
@@ -396,9 +394,8 @@ vcaudio_service_callback(void *priv, con
 		break;
 
 	case VC_AUDIO_MSG_TYPE_COMPLETE:
-		intr = msg.u.complete.callback;
-		intrarg = msg.u.complete.cookie;
-		if (intr && intrarg) {
+		if (msg.u.complete.cookie1 == VC_AUDIO_WRITE_COOKIE1 &&
+		    msg.u.complete.cookie2 == VC_AUDIO_WRITE_COOKIE2) {
 			int count = msg.u.complete.count & 0xffff;
 			int perr = (msg.u.complete.count & __BIT(30)) != 0;
 			bool sched = false;
@@ -420,7 +417,7 @@ vcaudio_service_callback(void *priv, con
 			}
 
 			if (sched && sc->sc_pint) {
-				intr(intrarg);
+				sc->sc_pint(sc->sc_pintarg);
 				sc->sc_abytes += sc->sc_pblksize;
 				cv_signal(&sc->sc_datacv);
 			}
@@ -465,8 +462,8 @@ vcaudio_worker(void *priv)
 		msg.type = VC_AUDIO_MSG_TYPE_WRITE;
 		msg.u.write.max_packet = VCAUDIO_MSGSIZE;
 		msg.u.write.count = count;
-		msg.u.write.callback = intr;
-		msg.u.write.cookie = intrarg;
+		msg.u.write.cookie1 = VC_AUDIO_WRITE_COOKIE1;
+		msg.u.write.cookie2 = VC_AUDIO_WRITE_COOKIE2;
 		msg.u.write.silence = 0;
 
 		block = (uint8_t *)sc->sc_pstart + sc->sc_ppos;

Index: src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h
diff -u src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h:1.3 src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h:1.4
--- src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h:1.3	Fri Apr 25 15:51:12 2014
+++ src/sys/arch/arm/broadcom/bcm2835_vcaudioreg.h	Wed Jan 22 21:21:24 2020
@@ -33,6 +33,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
 
 // FourCC code used for VCHI connection
 #define VC_AUDIO_SERVER_NAME  MAKE_FOURCC("AUDS")
+#define VC_AUDIO_WRITE_COOKIE1  MAKE_FOURCC("BCMA")
+#define VC_AUDIO_WRITE_COOKIE2  MAKE_FOURCC("DATA")
 
 // Maximum message length
 #define VC_AUDIO_MAX_MSG_LEN  (sizeof( VC_AUDIO_MSG_T ))
@@ -115,8 +117,8 @@ typedef struct
 typedef struct
 {
    uint32_t count; // in bytes
-   void *callback;
-   void *cookie;
+   uint32_t cookie1;
+   uint32_t cookie2;
    uint16_t silence;
    uint16_t max_packet;
 } VC_AUDIO_WRITE_T;
@@ -132,8 +134,8 @@ typedef struct
 typedef struct
 {
    int32_t count;  // Success value
-   void *callback;
-   void *cookie;
+   uint32_t cookie1;
+   uint32_t cookie2;
 } VC_AUDIO_COMPLETE_T;
 
 // Message header for all messages in HOST->VC direction

Reply via email to