kern/54176: [PATCH] Updates for AC97 audio (ICH5/R & ALC-655 Codec)
Chris Keladis
chris at cmc.optus.net.au
Mon Jul 7 04:10:16 PDT 2003
>Number: 54176
>Category: kern
>Synopsis: [PATCH] Updates for AC97 audio (ICH5/R & ALC-655 Codec)
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: update
>Submitter-Id: current-users
>Arrival-Date: Mon Jul 07 04:10:14 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Chris Keladis
>Release: FreeBSD 5.1-RELEASE i386
>Organization:
>Environment:
Tracking RELENG_5_1 (19/06/2003 snapshot)
ich.c:
$FreeBSD: src/sys/dev/sound/pci/ich.c,v 1.28 2003/04/16 03:16:55 mdodd Exp $
ac97.c:
$FreeBSD: src/sys/dev/sound/pcm/ac97.c,v 1.42 2003/04/23 16:49:53 jhb Exp $
>Description:
Kernel does not detect pcm device at all on bootup with such hardware.
>How-To-Repeat:
N/A
>Fix:
Patches Below. Seem to work ok, no problem with audio. Have not tested
recording or other features apart from playback but i expect they would
work ok.
--- ac97.c.diff begins here ---
--- ac97_28-07-2003.c Thu Apr 24 02:49:53 2003
+++ ac97.c Sat Jun 28 12:36:20 2003
@@ -136,6 +136,7 @@
{ 0x414c4710, 0x0f, 0, "ALC200", 0 },
{ 0x414c4740, 0x0f, 0, "ALC202", 0 },
{ 0x414c4720, 0x0f, 0, "ALC650", 0 },
+ { 0x414c4760, 0x0f, 0, "ALC655", 0 },
{ 0x43525900, 0x07, 0, "CS4297", 0 },
{ 0x43525910, 0x07, 0, "CS4297A", 0 },
{ 0x43525920, 0x07, 0, "CS4294/98", 0 },
--- ac97.c.diff ends here ---
--- ich.c.diff begins here ---
--- ich_28-06-2003.c Wed Apr 16 13:16:55 2003
+++ ich.c Sun Jun 29 16:17:17 2003
@@ -43,6 +43,7 @@
#define SIS7012ID 0x70121039 /* SiS 7012 needs special
handling */
#define ICH4ID 0x24c58086 /* ICH4 needs special handling too */
+#define ICH5ID 0x24d58086 /* ICH5 special handling */
/* buffer descriptor */
struct ich_desc {
@@ -577,8 +578,8 @@
stat = ich_rd(sc, ICH_REG_GLOB_STA, 4);
if ((stat & ICH_GLOB_STA_PCR) == 0) {
- /* ICH4 may fail when busmastering is enabled. Continue */
- if (pci_get_devid(sc->dev) != ICH4ID) {
+ /* ICH4/ICH5 may fail when busmastering is enabled. Continue */
+ if (pci_get_devid(sc->dev) != ICH4ID && pci_get_devid(sc->dev) !=
ICH5ID) {
return ENXIO;
}
}
@@ -630,6 +631,10 @@
device_set_desc(dev, "Intel 82801DB (ICH4)");
return 0;
+ case ICH5ID:
+ device_set_desc(dev, "Intel 82801EB (ICH5/ICH5R)");
+ return 0;
+
case SIS7012ID:
device_set_desc(dev, "SiS 7012");
return 0;
@@ -681,7 +686,7 @@
* but doing so will mess things up here. ich4 has enough new
* features it warrants it's own driver.
*/
- if (pci_get_devid(dev) == ICH4ID) {
+ if (pci_get_devid(dev) == ICH4ID || pci_get_devid(dev) == ICH5ID) {
pci_write_config(dev, PCIR_ICH_LEGACY, ICH_LEGACY_ENABLE, 1);
}
--- ich.c.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list