kern/118546: snd_ich: recording broken
Ariff Abdullah
ariff at FreeBSD.org
Tue Dec 11 02:50:02 PST 2007
The following reply was made to PR kern/118546; it has been noted by GNATS.
From: Ariff Abdullah <ariff at FreeBSD.org>
To: bug-followup at FreeBSD.org, uyamba at gmail.com
Cc:
Subject: Re: kern/118546: snd_ich: recording broken
Date: Tue, 11 Dec 2007 18:44:42 +0800
This is a multi-part message in MIME format.
--Multipart=_Tue__11_Dec_2007_18_44_42_+0800_5xfqKp2NlJR+0LXn
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
> pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 9 bufsz 16384
> kld snd_ich [MPSAFE] (1p:1v/2r:1v channels duplex default)
^^
I have doubt for this 2nd record channel for a long time..
1) Try disabling vchan for record channel (vrec) through
sysctl dev.pcm.0.rec.vchans=0. This basically restore 6.x
behaviour.
2) If #1 works, try the attached patch even with vrec enabled.
--
Ariff Abdullah
FreeBSD
... Recording in stereo is obviously too advanced
and confusing for us idiot ***** users :P ........
--Multipart=_Tue__11_Dec_2007_18_44_42_+0800_5xfqKp2NlJR+0LXn
Content-Type: text/x-diff;
name="ich.c.diff"
Content-Disposition: attachment;
filename="ich.c.diff"
Content-Transfer-Encoding: 7bit
Index: src/sys/dev/sound/pci/ich.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/sound/pci/ich.c,v
retrieving revision 1.78
diff -u -r1.78 ich.c
--- src/sys/dev/sound/pci/ich.c 11 Jul 2007 14:27:45 -0000 1.78
+++ src/sys/dev/sound/pci/ich.c 11 Dec 2007 09:52:27 -0000
@@ -91,6 +91,7 @@
#define ICH_FIXED_RATE (1 << 3)
#define ICH_DMA_NOCACHE (1 << 4)
#define ICH_HIGH_LATENCY (1 << 5)
+#define ICH_MCH_ENABLED (1 << 6)
static const struct ich_type {
uint16_t vendor;
@@ -980,6 +981,10 @@
device_get_unit(dev), "fixedrate", &i) == 0 && i != 0)
sc->flags |= ICH_FIXED_RATE;
+ if (resource_int_value(device_get_name(dev),
+ device_get_unit(dev), "mch_enabled", &i) == 0 && i != 0)
+ sc->flags |= ICH_MCH_ENABLED;
+
sc->irqid = 0;
sc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->irqid,
RF_ACTIVE | RF_SHAREABLE);
@@ -1026,7 +1031,11 @@
extcaps = ac97_getextcaps(sc->codec);
sc->hasvra = extcaps & AC97_EXTCAP_VRA;
sc->hasvrm = extcaps & AC97_EXTCAP_VRM;
- sc->hasmic = ac97_getcaps(sc->codec) & AC97_CAP_MICCHANNEL;
+ if ((sc->flags & ICH_MCH_ENABLED) &&
+ (ac97_getcaps(sc->codec) & AC97_CAP_MICCHANNEL))
+ sc->hasmic = 1;
+ else
+ sc->flags &= ~ICH_MCH_ENABLED;
ac97_setextmode(sc->codec, sc->hasvra | sc->hasvrm);
sc->dtbl_size = sizeof(struct ich_desc) * ICH_DTBL_LENGTH *
--Multipart=_Tue__11_Dec_2007_18_44_42_+0800_5xfqKp2NlJR+0LXn--
More information about the freebsd-multimedia
mailing list