Recognition for ECS K7VTA3 integrated VIA 8233A in via82xx.c

From: Marco Matarazzo
Date: Tue Dec 28 2004 - 09:40:39 EST


This is a fast little patch to add automatic recognition of some (older?) model of
VIA8233A integrated audio that have to be configured with dxs_support = 4 (NO_VRA).

With dxs_support set to 1 (ENABLE) or 3 (48K, default without that) the audio works but
it's REALLY REALLY REALLY poor.

I see that ECS K7VTA3 support is already there, but mine shows a different vendor/device
codes. I tried to find out what revision my board is, and i THINK it's a 6.0a, I'm not
sure (it's not clear on both manual and board itself, at least to me). I tried that patch
with a friend's board (same version, we bought them togheter) and it works. I hope to
hear from someone else that have the same version I have.

diff -ur linux-2.6.10/sound/pci/via82xx.c linux-2.6.10-storm/sound/pci/via82xx.c
--- linux-2.6.10/sound/pci/via82xx.c 2004-12-24 22:35:24.000000000 +0100
+++ linux-2.6.10-storm/sound/pci/via82xx.c 2004-12-27 17:26:07.368716640 +0100
@@ -2094,6 +2094,7 @@
{ .vendor = 0x1005, .device = 0x4710, .action = VIA_DXS_ENABLE }, /* Avance Logic Mobo */
{ .vendor = 0x1019, .device = 0x0996, .action = VIA_DXS_48K },
{ .vendor = 0x1019, .device = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */
+ { .vendor = 0x1019, .device = 0x1841, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 (maybe v6.0a) */
{ .vendor = 0x1019, .device = 0x0a85, .action = VIA_DXS_NO_VRA }, /* ECS L7VMM2 */
{ .vendor = 0x1025, .device = 0x0033, .action = VIA_DXS_NO_VRA }, /* Acer Inspire 1353LM */
{ .vendor = 0x1043, .device = 0x8095, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8X (FIXME: possibly VIA_DXS_ENABLE?)*/


I also applied the following patch to identify vendor/device codes.

BTW, i would like to have some explainations here. I can accept an answer
like "Go Learn By Yourself" :-)

I wrote this patch using an approach that needs not so much knowledge of
hardware, I just looked in the code and understood more or less how it works.
I guess the two codes that come out from :

pci_read_config_word(pci, PCI_SUBSYSTEM_VENDOR_ID, &subsystem_vendor);
pci_read_config_word(pci, PCI_SUBSYSTEM_ID, &subsystem_device);

*should* be the vendor id and the device id, as usual. BUT these are not, as
shown in /proc/pci:

[...]
Bus 0, device 17, function 5:
Class 0401: PCI device 1106:3059 (rev 80).
IRQ 5.
I/O at 0xe400 [0xe4ff].
[...]

and in fact the following patch (that i used to find the two values) shown
something else.

I know that probably I am wrong, and probably these pairs are simply
different things. Can someone can enlighten me or point me somewhere to read anything?

Noobish thanks =)

diff -ur linux-2.6.10/sound/pci/via82xx.c linux-2.6.10-storm/sound/pci/via82xx.c
--- linux-2.6.10/sound/pci/via82xx.c 2004-12-24 22:35:24.000000000 +0100
+++ linux-2.6.10-storm/sound/pci/via82xx.c 2004-12-27 17:26:07.368716640 +0100
@@ -2146,6 +2147,7 @@
printk(KERN_INFO "via82xx: Assuming DXS channels with 48k fixed sample rate.\n");
printk(KERN_INFO " Please try dxs_support=1 or dxs_support=4 option\n");
printk(KERN_INFO " and report if it works on your machine.\n");
+ printk(KERN_INFO " (vendor = 0x%x , device = 0x%x).\n", subsystem_vendor, subsystem_device);
return VIA_DXS_48K;
};


BTW2: the [PATCH] tag have to/should/could be used when submitting patches like that?

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/