From owner-freebsd-multimedia@FreeBSD.ORG Mon Jul 28 16:00:51 2008 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E2411106567B for ; Mon, 28 Jul 2008 16:00:51 +0000 (UTC) (envelope-from CQG00620@nifty.ne.jp) Received: from mail.asahi-net.or.jp (mail2.asahi-net.or.jp [202.224.39.198]) by mx1.freebsd.org (Postfix) with ESMTP id 85B178FC27 for ; Mon, 28 Jul 2008 16:00:51 +0000 (UTC) (envelope-from CQG00620@nifty.ne.jp) Received: from asahi-net.jp (i223105.dynamic.ppp.asahi-net.or.jp [61.125.223.105]) by mail.asahi-net.or.jp (Postfix) with ESMTP id 2757F517E6 for ; Tue, 29 Jul 2008 01:00:50 +0900 (JST) Date: Tue, 29 Jul 2008 01:00:49 +0900 From: WATANABE Kazuhiro To: freebsd-multimedia In-Reply-To: <18678895.post@talk.nabble.com> References: <18678895.post@talk.nabble.com> User-Agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (=?ISO-8859-4?Q?Shij=F2?=) APEL/10.7 Emacs/21.3 (i386--freebsd) MULE/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Message-Id: <20080728160050.2757F517E6@mail.asahi-net.or.jp> Subject: AD1985 microphone input (Re: Problem recording, using ) X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Jul 2008 16:00:52 -0000 Hello. Changed the subject. At Sun, 27 Jul 2008 11:11:38 -0700 (PDT), DoctorD wrote: > Hi! > > I have the same problem, but I have a bit different card: > > pcm0: port 0xc000-0xc0ff,0xc400-0xc43f mem > 0xf7dff800-0xf7dff9ff,0xf7dff400-0xf7dff4ff irq 17 at device 31.5 on pci0 > pcm0: [ITHREAD] > pcm0: > > MB: ASUS P4P800 Deluxe > > I tried to apply you last patch, but my card didn't work... > Could you please, create a one more patch for my card. > > Thanx. Would you apply the patch below? If your ICH audio controller has a different card ID, change the value of the "case" statement in ad1985_patch(). To settle the ID, I've referred the following mail: http://lists.freebsd.org/pipermail/freebsd-multimedia/2003-October/000497.html --- sys/dev/sound/pcm/ac97.c.releng70 2007-10-30 03:47:47.000000000 +0900 +++ sys/dev/sound/pcm/ac97.c 2008-07-28 18:29:02.000000000 +0900 @@ -141,8 +141,8 @@ { 0x41445370, 0x00, 0, "AD1980", ad198x_patch }, { 0x41445372, 0x00, 0, "AD1981A", 0 }, { 0x41445374, 0x00, 0, "AD1981B", ad1981b_patch }, - { 0x41445375, 0x00, 0, "AD1985", ad198x_patch }, - { 0x41445378, 0x00, 0, "AD1986", ad198x_patch }, + { 0x41445375, 0x00, 0, "AD1985", ad1985_patch }, + { 0x41445378, 0x00, 0, "AD1986", ad1986_patch }, { 0x414b4d00, 0x00, 1, "AK4540", 0 }, { 0x414b4d01, 0x00, 1, "AK4542", 0 }, { 0x414b4d02, 0x00, 1, "AK4543", 0 }, --- sys/dev/sound/pcm/ac97_patch.c.releng70 2007-10-30 03:47:27.000000000 +0900 +++ sys/dev/sound/pcm/ac97_patch.c 2008-07-28 21:33:56.000000000 +0900 @@ -69,6 +69,66 @@ } } +void ad1985_patch(struct ac97_info* codec) +{ + /* + * Disable outputs of the SURR_OUT and CENTER_OUT/LFE_OUT pins. + * Select the CENTER_OUT/LFE_OUT pins as the MIC inputs. + * Enable the stereo microphone mode. + * + * Set the voltage of the VREFOUT pin. + */ + switch (ac97_getsubvendor(codec)) { + case 0x80f31043: /* ASUS P4P800 Deluxe (SE) */ + ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x1800); + ac97_wrcd(codec, 0x74, ac97_rdcd(codec, 0x74) | 0x0200); + ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x0040); + + /* + * 0x0 = 2.25V (default) + * 0x1 = High-Z + * 0x2 = 3.7V + * 0x3 = 0V + */ + ac97_wrcd(codec, 0x76, (ac97_rdcd(codec, 0x76) & ~0xc) + | 0x0 << 2); + break; + default: + break; + } +} + +void ad1986_patch(struct ac97_info* codec) +{ + /* + * Disable outputs of the SURR_OUT and CENTER_OUT/LFE_OUT pins. + * Select the SURR_OUT pins as the LINE_IN inputs. + * Select the CENTER_OUT/LFE_OUT pins as the MIC inputs. + * Enable the stereo microphone mode. + * + * Set the voltage of the C/LFE VREF_OUT pin. + */ + switch (ac97_getsubvendor(codec)) { + case 0x818f1043: /* ASUS P5SD2-X (SE) */ + ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x1800); + ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x0004); + ac97_wrcd(codec, 0x74, ac97_rdcd(codec, 0x74) | 0x0200); + ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x0040); + + /* + * 0x0 = High-Z (default) + * 0x1 = 2.25V + * 0x2 = 0V + * 0x4 = 3.70V + */ + ac97_wrcd(codec, 0x70, (ac97_rdcd(codec, 0x70) & ~0x1c) + | 0x1 << 2); + break; + default: + break; + } +} + void cmi9739_patch(struct ac97_info* codec) { /* --- sys/dev/sound/pcm/ac97_patch.h.releng70 2007-04-19 22:54:22.000000000 +0900 +++ sys/dev/sound/pcm/ac97_patch.h 2008-07-28 18:29:21.000000000 +0900 @@ -31,5 +31,7 @@ void ad1886_patch(struct ac97_info*); void ad198x_patch(struct ac97_info*); void ad1981b_patch(struct ac97_info*); +void ad1985_patch(struct ac97_info*); +void ad1986_patch(struct ac97_info*); void cmi9739_patch(struct ac97_info*); void alc655_patch(struct ac97_info*); --- WATANABE Kazuhiro (CQG00620@nifty.ne.jp)