patch-2.4.20 linux-2.4.20/drivers/sound/ac97_codec.c
Next file: linux-2.4.20/drivers/sound/ali5455.c
Previous file: linux-2.4.20/drivers/sound/Makefile
Back to the patch index
Back to the overall index
- Lines: 68
- Date:
Thu Nov 28 15:53:14 2002
- Orig file:
linux-2.4.19/drivers/sound/ac97_codec.c
- Orig date:
Fri Aug 2 17:39:44 2002
diff -urN linux-2.4.19/drivers/sound/ac97_codec.c linux-2.4.20/drivers/sound/ac97_codec.c
@@ -654,6 +654,27 @@
}
/**
+ * codec_id - Turn id1/id2 into a PnP string
+ * @id1: Vendor ID1
+ * @id2: Vendor ID2
+ * @buf: 10 byte buffer
+ *
+ * Fills buf with a zero terminated PnP ident string for the id1/id2
+ * pair. For convenience the return is the passed in buffer pointer.
+ */
+
+static char *codec_id(u16 id1, u16 id2, char *buf)
+{
+ if(id1&0x8080)
+ snprintf(buf, 10, "%0x4X:%0x4X", id1, id2);
+ buf[0] = (id1 >> 8);
+ buf[1] = (id1 & 0xFF);
+ buf[2] = (id2 >> 8);
+ snprintf(buf+3, 7, "%d", id2&0xFF);
+ return buf;
+}
+
+/**
* ac97_probe_codec - Initialize and setup AC97-compatible codec
* @codec: (in/out) Kernel info for a single AC97 codec
*
@@ -681,6 +702,7 @@
u16 id1, id2;
u16 audio, modem;
int i;
+ char cidbuf[10];
/* probing AC97 codec, AC97 2.0 says that bit 15 of register 0x00 (reset) should
* be read zero.
@@ -698,13 +720,16 @@
if ((audio = codec->codec_read(codec, AC97_RESET)) & 0x8000) {
printk(KERN_ERR "ac97_codec: %s ac97 codec not present\n",
- codec->id ? "Secondary" : "Primary");
+ (codec->id & 0x2) ? (codec->id&1 ? "4th" : "Tertiary")
+ : (codec->id&1 ? "Secondary": "Primary"));
return 0;
}
/* probe for Modem Codec */
codec->codec_write(codec, AC97_EXTENDED_MODEM_ID, 0L);
- modem = codec->codec_read(codec, AC97_EXTENDED_MODEM_ID);
+ modem = codec->codec_read(codec, AC97_EXTENDED_MODEM_ID) & 1;
+ modem |= (audio&2);
+ audio &= ~2;
codec->name = NULL;
codec->codec_ops = &null_ops;
@@ -721,9 +746,9 @@
}
if (codec->name == NULL)
codec->name = "Unknown";
- printk(KERN_INFO "ac97_codec: AC97 %s codec, id: 0x%04x:"
- "0x%04x (%s)\n", audio ? "Audio" : (modem ? "Modem" : ""),
- id1, id2, codec->name);
+ printk(KERN_INFO "ac97_codec: AC97 %s codec, id: %s(%s)\n",
+ modem ? "Modem" : (audio ? "Audio" : ""),
+ codec_id(id1, id2, cidbuf), codec->name);
return ac97_init_mixer(codec);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)