From owner-FreeBSD-users-jp@jp.FreeBSD.org Tue Feb 19 00:07:31 2002
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id g1IF7Vi79102;
	Tue, 19 Feb 2002 00:07:31 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from mail501.nifty.com (mail501.nifty.com [202.248.37.209])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet id g1IF7VW79097
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Tue, 19 Feb 2002 00:07:31 +0900 (JST)
	(envelope-from t.ichinoseki@nifty.com)
Received: from localhost
	by mail501.nifty.com (8.11.6+3.4W/3.7W-01/21/02) with ESMTP id g1IF5WJ19193
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Tue, 19 Feb 2002 00:05:32 +0900
Date: Tue, 19 Feb 2002 00:02:06 +0900 (JST)
Message-Id: <20020219.000206.59460567.t.ichinoseki@nifty.com>
To: FreeBSD-users-jp@jp.FreeBSD.org
From: ICHINOSEKI (=?iso-2022-jp?B?GyRCMGw0WBsoQg==?=)
 <t.ichinoseki@nifty.com>
In-Reply-To: <3C7061AC.3020706@cac.co.jp>
References: <20020217.233123.74739022.t.ichinoseki@nifty.com>
	<3C7061AC.3020706@cac.co.jp>
X-Mailer: Mew version 2.1 on Emacs 20.7 / Mule 4.1 (AOI)
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
 boundary="--Next_Part(Tue_Feb_19_00:02:06_2002_291)--"
Content-Transfer-Encoding: 7bit
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+011218
X-Sequence: FreeBSD-users-jp 66984
Subject: [FreeBSD-users-jp 66984] Re: Neomagic Sound Driver Patch (4.4R
 =?ISO-2022-JP?B?GyRCIUEbKEI=?=)
Errors-To: owner-FreeBSD-users-jp@jp.FreeBSD.org
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: t.ichinoseki@nifty.com

----Next_Part(Tue_Feb_19_00:02:06_2002_291)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

$B0l4X(B $B$G$9!#(B

koich> Let's note CF-M2XR $B$G!"(B4-Stable $B;H$C$F$^$9!#(B
koich> 
koich> 4.4-RELEASE $B$ND>A0$"$?$j$G;H$($J$/$J$C$F!"(B
koich> $B$=$N;~$KF~$C$?(B Code $B$r0lIt(B Comment Out $B$7$F;H$C$F$^$7$?!#(B
koich> http://home.jp.freebsd.org/cgi-bin/showmail/bsd-nomads/15822
$B;d$b:G=i$OF1MM$N$3$H$r$7$F$^$7$?!#F1$8$/!"(Bemacs $B$G(B mpg123.el $B$r;H$C$F(B
$B:F@8$9$k$H$"$C$H$$$&$^$K:F@8$,=*$C$F$7$^$F$^$7$?!#(B($B<B$O!"$3$3$iJU$r$$(B
$B$8$C$F;n$7$F$$$k;~$K0lC66/@)E*$KG'<1$5$;$?8e$@$H(B kldunload $B$7$?8e$G(B $B:F(B
$BEY(B kldload $B$7$?;~$K@5>o$K(B probe $B$9$k(B($B$D$^$j(B mixer $B$,8+$($k(B)$B$N$K5$$,$D(B
$B$$$F!":G=*E*$K%j%;%C%H$9$k%3!<%I$rF~$l$?$H$3$m(B mixer $B$,8+$($k$h$&$K$J(B
$B$j$^$7$?!#(B)

koich> $B$H$3$m$G!"0l4X$5$s$N$H$3$m$G$O!"(B
koich> zzz $B$G(B Suspend $B$5$;$?8e(B Resume $B$7$F$+$i$b!"$A$c$s$H2;$,LD$j$^$9$+(B?
koich> $B;d$N(B Machine $B$G$O!"2;$OLD$k$b$N$N!"$R$I$$;(2;$,:.$6$k$h$&$K$J$j$^$9!#(B
koich> CD $B$rJ9$/;~$K$O!";(2;$O:.$6$i$J$$$N$G$9$,!"(B
koich> mpg123 $B$d(B xmms$B!"(BRealPlayer $B$r;H$C$?;~$K:.$6$j$^$9!#(B
koich> $B$3$l$O!"0l4X$5$s$N(B Patch $B$NE,MQA08e$G>I>u$OJQ$o$j$^$;$s$G$7$?!#(B
koich> Reboot $B$7$F$"$2$l$P!"$-$l$$$K2;$,LD$k$N$G$9$,!D(B

$B;d$N(B CF-M2EV $B$O%G%9%/%H%C%W$J$i$L%F!<%V%k%H%C%W$H2=$7$F$$$k$?$a(B
suspend/resume $B$OLGB?$K$7$J$$$N$G;n$7$F$$$^$;$s$G$7$?!#$=$l$G$5$C$=$/(B
zzz $B$G(B suspend $B8e(B resume $B$7$F$+$i(B mpg123 $B$G;n$7$F$_$^$7$?$,!"FC$K;(2;(B
$B$,:.$6$k$h$&$J$3$H$b$J$/$A$c$s$H2;$,LD$j$^$9!#:F@8Cf$K(B suspend/resume 
$B$7$?>l9g$G$bBg>fIW$G$7$?!#$?$@!":F@8Cf$K(B suspend $B$9$k$H!"$R$I$$%N%$%:(B
$B$,$9$k$N$GE:IU$N%Q%C%A(B(66965$B$N%Q%C%A$rEv$F$?J*$H$N:9J,$G$9(B)$B$N$h$&$JJQ(B
$B99$r2C$($F$_$?$H$3$m!"@E$+$K(B suspend $B$9$k$h$&$K$J$j$^$7$?(B (mute $B$5$;$k(B
$B$@$1$G$b$$$$$+$b$7$l$^$;$s(B)$B!#(B

$B$H$3$m$G!"NkLZ$5$s$N(B $B%^%7%s$G(B resume $B8e$G;(2;$,=P$k$h$&$K$J$C$?>uBV$G!"(B
snd_neomagic (snd_pcm $B$b(B?)$B$r0lC6(B kldunload $B$7$F$+$i(B kldload $B$7$F$d$k$H(B
$B$I$&$J$j$^$9$G$7$g$&$+!#(Bresume $B;~$N:F=i4|2=$G2?$+B-$j$J$$$N$G$"$l$P$3(B
$B$l$G@5>o$K$J$C$?$j$9$k$+$bCN$l$^$;$s!#(B

koich> 
koich> ($B>e5-(B nomads $B$K=P$7$?(B Mail $B$K=q$$$?!"(BResume $B;~$N(B Message $B$O!"(B
koich>  $B4X78$J$$$h$&$G$9!#(B
koich>  $B$3$NITMW$J(B Message $B$O=P$J$$$h$&!"4{$K=$@5$5$l$F$$$^$9!#(B
koich> http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/sound/pcm/ac97.c#rev1.24 )
$B$=$N$h$&$G$9$M!#(Bcvs $B$N(B log $B$G3NG'$7$^$7$?!#(B

P.S. bsd-nomad $B$O$3$N%"%I%l%9$G$O%a!<%k$G$-$J$$(B($BEPO?$7$F$$$J$$(B)$B$N$G(B Cc
$B$7$F$^$;$s!#0-$7$+$i$:!#(B
--
// $B0l4X(B t.ichinoseki@nifty.com

----Next_Part(Tue_Feb_19_00:02:06_2002_291)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="neomagic.c.diff2"

--- neomagic.c.old	Sat Feb 16 16:47:05 2002
+++ neomagic.c	Mon Feb 18 22:21:57 2002
@@ -47,7 +47,7 @@
 
 /* channel registers */
 struct sc_chinfo {
-	int spd, dir, fmt;
+	int active, spd, dir, fmt;
 	u_int32_t blksize, wmark;
 	struct snd_dbuf *buffer;
 	struct pcm_channel *channel;
@@ -342,6 +342,7 @@
 
 	chnbuf = (dir == PCMDIR_PLAY)? sc->pbuf : sc->rbuf;
 	ch = (dir == PCMDIR_PLAY)? &sc->pch : &sc->rch;
+	ch->active = 0;
 	ch->blksize = 0;
 	ch->wmark = 0;
 	ch->buffer = b;
@@ -405,6 +406,7 @@
 
 	if (ch->dir == PCMDIR_PLAY) {
 		if (go == PCMTRIG_START) {
+			ch->active = 1;
 			ch->wmark = ch->blksize;
 			nm_wr(sc, NM_PBUFFER_START, sc->pbuf, 4);
 			nm_wr(sc, NM_PBUFFER_END, sc->pbuf + NM_BUFFSIZE - ssz, 4);
@@ -414,11 +416,13 @@
 				NM_PLAYBACK_ENABLE_FLAG, 1);
 			nm_wr(sc, NM_AUDIO_MUTE_REG, 0, 2);
 		} else {
+			ch->active = 0;
 			nm_wr(sc, NM_PLAYBACK_ENABLE_REG, 0, 1);
 			nm_wr(sc, NM_AUDIO_MUTE_REG, NM_AUDIO_MUTE_BOTH, 2);
 		}
 	} else {
 		if (go == PCMTRIG_START) {
+			ch->active = 1;
 			ch->wmark = ch->blksize;
 			nm_wr(sc, NM_RECORD_ENABLE_REG, NM_RECORD_FREERUN |
 				NM_RECORD_ENABLE_FLAG, 1);
@@ -427,6 +431,7 @@
 			nm_wr(sc, NM_RBUFFER_CURRP, sc->rbuf, 4);
 			nm_wr(sc, NM_RBUFFER_WMARK, sc->rbuf + ch->wmark, 4);
 		} else {
+			ch->active = 0;
 			nm_wr(sc, NM_RECORD_ENABLE_REG, 0, 1);
 		}
 	}
@@ -736,6 +741,25 @@
 }
 
 static int
+nm_pci_suspend(device_t dev)
+{
+	struct sc_info *sc;
+
+	sc = pcm_getdevinfo(dev);
+
+	/* stop playing */
+	if (sc->pch.active) {
+		nm_wr(sc, NM_PLAYBACK_ENABLE_REG, 0, 1);
+		nm_wr(sc, NM_AUDIO_MUTE_REG, NM_AUDIO_MUTE_BOTH, 2);
+	}
+	/* stop recording */
+	if (sc->rch.active) {
+		nm_wr(sc, NM_RECORD_ENABLE_REG, 0, 1);
+	}
+	return 0;
+}
+
+static int
 nm_pci_resume(device_t dev)
 {
 	struct sc_info *sc;
@@ -752,6 +776,17 @@
 		device_printf(dev, "unable to reinitialize the mixer\n");
 		return ENXIO;
 	}
+	/* restart playing */
+	if (sc->pch.active) {
+		nm_wr(sc, NM_PLAYBACK_ENABLE_REG, NM_PLAYBACK_FREERUN |
+			  NM_PLAYBACK_ENABLE_FLAG, 1);
+		nm_wr(sc, NM_AUDIO_MUTE_REG, 0, 2);
+	}
+	/* restart recording */
+	if (sc->rch.active) {
+		nm_wr(sc, NM_RECORD_ENABLE_REG, NM_RECORD_FREERUN |
+			  NM_RECORD_ENABLE_FLAG, 1);
+	}
 	return 0;
 }
 
@@ -760,6 +795,7 @@
 	DEVMETHOD(device_probe,		nm_pci_probe),
 	DEVMETHOD(device_attach,	nm_pci_attach),
 	DEVMETHOD(device_detach,	nm_pci_detach),
+	DEVMETHOD(device_suspend,	nm_pci_suspend),
 	DEVMETHOD(device_resume,	nm_pci_resume),
 	{ 0, 0 }
 };

----Next_Part(Tue_Feb_19_00:02:06_2002_291)----
