Subject: FYI: USB audio
To: None <port-playstation2@netbsd.org>
From: TAMURA Kent <kent@netbsd.org>
List: port-playstation2
Date: 08/12/2002 23:48:48
This is an instruction to make USB audio work on
NetBSD/playstation2.

1. Apply a patch to sys/arch/playstation2/playstation2/conf.c
   and etc/etc.playstation2/MAKEDEV.
2. Add the following to a kernel config file.
	# USB audio
	uaudio*	at uhub? port ? configuration ?
	audio*	at uaudio?
3. Rebuild the kernel and reboot.
4. Go to /dev, and "./MAKEDEV audio"
5. Plug an USB audio device, and enjoy.

The sound had little noise even for playing 16bit PCM wav.  I'm
not sure what caused the problem (USB driver? USB audio driver?
CPU power? NFS root?).

-- 
TAMURA Kent <kent2002@hauN.org> <kent@netbsd.org>



Index: conf.c
===================================================================
RCS file: /cvsroot/syssrc/sys/arch/playstation2/playstation2/conf.c,v
retrieving revision 1.4
diff -u -u -r1.4 conf.c
--- conf.c	2002/07/19 16:38:22	1.4
+++ conf.c	2002/08/12 14:35:42
@@ -140,6 +140,9 @@
 #include "clockctl.h"
 cdev_decl(clockctl);
 
+#include "audio.h"
+cdev_decl(audio);
+
 struct bdevsw bdevsw[] =
 {
 	bdev_swap_init(1,sw),		/* 0: swap pseudo-device */
@@ -205,6 +208,7 @@
 #else
 	cdev_notdef(),			/* 39: system call tracing */
 #endif
+	cdev_audio_init(NAUDIO,audio),	/* 40: /dev/audio */
 };
 
 static int chrtoblktbl[] =  {
@@ -250,6 +254,7 @@
 	/* 37 */	NODEV,
 	/* 38 */	NODEV,
 	/* 39 */	NODEV,
+	/* 40 */	NODEV,
 };
 
 /*
Index: MAKEDEV
===================================================================
RCS file: /cvsroot/basesrc/etc/etc.playstation2/MAKEDEV,v
retrieving revision 1.18
diff -u -u -r1.18 MAKEDEV
--- MAKEDEV	2002/08/09 02:39:29	1.18
+++ MAKEDEV	2002/08/12 14:36:17
@@ -108,6 +108,7 @@
 	makedev ipl
 	makedev tun0 tun1
 	makedev md0
+	makedev audio
 	makedev usbs
 	makedev clockctl
 	makedev systrace
@@ -132,6 +133,14 @@
 	fi
 	;;
 
+audio)
+	makedev audio0 audio1 audio2 audio3
+	ln -fs sound0 sound
+	ln -fs audio0 audio
+	ln -fs mixer0 mixer
+	ln -fs audioctl0 audioctl
+	;;
+
 ramdisk)
 	makedev md0
 	;;
@@ -331,6 +340,22 @@
 	mknod ipstate c 23 2
 	mknod ipauth c 23 3
 	chmod 600 ipl ipnat ipstate ipauth
+	;;
+
+audio*)
+	unit=${i#audio}
+	audio=audio$unit
+	sound=sound$unit
+	mixer=mixer$unit
+	major=40
+	audioctl=audioctl$unit
+	if [ "$unit" = "" ]; then unit=0; fi
+	rm -f $audio $sound $mixer $audioctl
+	mknod $sound    c $major $(($unit + 0))
+	mknod $audio    c $major $(($unit + 128))
+	mknod $mixer    c $major $(($unit + 16))
+	mknod $audioctl c $major $(($unit + 192))
+	chmod 666 $audio $sound $mixer $audioctl
 	;;
 
 random)