Update of /cvsroot/alsa/alsa-kernel/pci
In directory sc8-pr-cvs1:/tmp/cvs-serv16537/pci
Modified Files:
via82xx.c
Log Message:
- added the check of DXS supports (so far, empty).
the default value of dxs_support is again 0.
- fixed the description.
Index: via82xx.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/via82xx.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- via82xx.c 27 Aug 2003 16:12:03 -0000 1.47
+++ via82xx.c 28 Aug 2003 15:07:25 -0000 1.48
@@ -74,7 +74,7 @@
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */
static long mpu_port[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = -1};
static int ac97_clock[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 48000};
-static int dxs_support[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 3};
+static int dxs_support[SNDRV_CARDS];
MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(index, "Index value for VIA 82xx bridge.");
@@ -286,6 +286,15 @@
/*
*/
+#define VIA_DXS_AUTO 0
+#define VIA_DXS_ENABLE 1
+#define VIA_DXS_DISABLE 2
+#define VIA_DXS_48K 3
+
+
+/*
+ */
+
typedef struct _snd_via82xx via82xx_t;
typedef struct via_dev viadev_t;
#define chip_t via82xx_t
@@ -1944,6 +1953,41 @@
{ VIA_REV_8235, "VIA 8235", TYPE_VIA8233 },
};
+/*
+ * auto detection of DXS channel supports.
+ */
+struct dxs_whitelist {
+ unsigned short vendor;
+ unsigned short device;
+ int action; /* new dxs_support value */
+};
+
+static int __devinit check_dxs_list(struct pci_dev *pci)
+{
+ static struct dxs_whitelist whitelist[] = {
+ // { .vendor = xxxx, .device = yyyy, .action = x },
+ { } /* terminator */
+ };
+ struct dxs_whitelist *w;
+ unsigned short subsystem_vendor;
+ unsigned short subsystem_device;
+
+ pci_read_config_word(pci, PCI_SUBSYSTEM_VENDOR_ID, &subsystem_vendor);
+ pci_read_config_word(pci, PCI_SUBSYSTEM_ID, &subsystem_device);
+
+ for (w = whitelist; w->vendor; w++)
+ if (w->vendor == subsystem_vendor &&
+ w->device == subsystem_device)
+ return w->action;
+
+ /*
+ * not detected, try 48k rate only to be sure.
+ */
+ printk(KERN_INFO "via82xx: Assuming DXS channels with 48k fixed sample
rate.\n");
+ printk(KERN_INFO " Please try dxs_support=1 option and report if it
works on your machine.\n");
+ return VIA_DXS_48K;
+};
+
static int __devinit snd_via82xx_probe(struct pci_dev *pci,
const struct pci_device_id *pci_id)
{
@@ -1984,13 +2028,16 @@
break;
}
}
+ if (dxs_support[dev] == VIA_DXS_AUTO)
+ dxs_support[dev] = check_dxs_list(pci);
/* force to use VIA8233 or 8233A model according to
* dxs_support module option
*/
- if (dxs_support[dev] == 1)
- chip_type = TYPE_VIA8233;
- else if (dxs_support[dev] == 2)
+ if (dxs_support[dev] == VIA_DXS_DISABLE)
chip_type = TYPE_VIA8233A;
+ else
+ chip_type = TYPE_VIA8233;
+
if (chip_type == TYPE_VIA8233A)
strcpy(card->driver, "VIA8233A");
else
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog