From: Wilfried Weissmann <Wilfried.Weissmann@gmx.at>
To: Takashi Iwai <tiwai@suse.de>
Cc: manuel.jander@mat.utfsm.cl, alsa-devel@lists.sourceforge.net
Subject: Re: Aureal Vortex PATCH [Fwd: via workaround error]
Date: Mon, 12 Jan 2004 19:08:21 +0100 [thread overview]
Message-ID: <4002E295.3050001@gmx.at> (raw)
In-Reply-To: <s5hbrp9gtc8.wl@alsa2.suse.de>
[-- Attachment #1: Type: text/plain, Size: 806 bytes --]
Takashi Iwai wrote:
> At Fri, 09 Jan 2004 23:04:49 -0400,
> Manuel Jander wrote:
>
>>Please apply to CVS. Thanks
>>
>>-----Forwarded Message-----
>>From: Wilfried Weissmann <Wilfried.Weissmann@gmx.at>
>>To: openvortex-dev@nongnu.org, manuel.jander@mat.utfsm.cl
>>Subject: via workaround error
>>Date: Fri, 09 Jan 2004 20:16:01 +0100
>>
>>i made a stupid error when i wrote the via workaround patch. the pci
>>latency for the vortex was still set to 0xff when using autodetection
>>and no via chipset was found. i discovered this after i exchanged my
>>motherboard from a via kt133 to a sis 735. the fix is attached. the bug
>>should not have caused any troubles but it is just not right...
>
>
> i didn't receive the VIA workaround patch itself yet.
> could you send the whole patch?
here we go...
[-- Attachment #2: alsa-0.9.7c-aureal-via-quirks.patch --]
[-- Type: text/plain, Size: 2897 bytes --]
--- alsa-driver-0.9.7c/pci/au88x0/au88x0.c 2003-10-06 16:01:04.000000000 +0200
+++ alsa-driver-0.9.7c-ww/pci/au88x0/au88x0.c 2003-10-25 22:31:09.000000000 +0200
@@ -26,6 +26,7 @@
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
+static int pcifix[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 255 };
MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");
@@ -36,6 +37,9 @@ MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard.");
MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
+MODULE_PARM(pcifix, "1-255i");
+MODULE_PARM_DESC(pcifix, "Enable VIA-workaround for " CARD_NAME " soundcard.");
+MODULE_PARM_SYNTAX(pcifix, SNDRV_ENABLED ",allows:{{0,Disabled},{1,Latency},{2,Bridge},{3,Both},{255,Auto}},default:4,dialog:check");
MODULE_DESCRIPTION("Aureal vortex");
MODULE_CLASSES("{sound}");
@@ -61,6 +65,56 @@ __setup("snd-au88x0=", alsa_card_vortex_
MODULE_DEVICE_TABLE(pci, snd_vortex_ids);
+static void __devinit snd_vortex_workaround(struct pci_dev *vortex, int fix) {
+ struct pci_dev *via=NULL;
+ /* autodetect if workarounds are required */
+ while( (via = pci_find_device(PCI_VENDOR_ID_VIA,
+ PCI_DEVICE_ID_VIA_8365_1, via)) ) {
+ if(fix == 255) {
+ printk(KERN_INFO CARD_NAME
+ ": detected VIA KT133/KM133. activating workaround...\n");
+ fix = 3; // do latency and via bridge workaround
+ }
+ break;
+ }
+
+ int rc;
+
+ /* fix vortex latency */
+ if(fix & 0x01) {
+ if( !(rc = pci_write_config_byte(vortex, 0x40, 0xff)) ) {
+ printk(KERN_INFO CARD_NAME
+ ": vortex latency is 0xff\n");
+ }
+ else {
+ printk(KERN_WARNING CARD_NAME ": could not set vortex latency: pci error 0x%x\n", rc);
+ }
+ }
+
+ /* fix via agp bridge */
+ if(via && (fix & 0x02)) {
+ u8 value;
+
+ /*
+ * only set the bit (Extend PCI#2 Internal Master for
+ * Efficient Handling of Dummy Requests) if the can
+ * read the config and it is not already set
+ */
+
+ if( !(rc = pci_read_config_byte(via, 0x42, &value)) && (
+ (value & 0x10) ||
+ !(rc=pci_write_config_byte(via, 0x42, value|0x10)) ) ) {
+
+ printk(KERN_INFO CARD_NAME
+ ": bridge config is 0x%x\n",
+ value|0x10);
+ }
+ else {
+ printk(KERN_WARNING CARD_NAME ": could not set vortex latency: pci error 0x%x\n", rc);
+ }
+ }
+}
+
// component-destructor
// (see "Management of Cards and Components")
@@ -198,6 +252,7 @@ snd_vortex_probe(struct pci_dev *pci, co
snd_card_free(card);
return err;
}
+ snd_vortex_workaround(pci, pcifix[dev]);
// (4) Alloc components.
// ADB pcm.
if ((err = snd_vortex_new_pcm(chip, VORTEX_PCM_ADB, NR_ADB)) < 0) {
next prev parent reply other threads:[~2004-01-12 18:08 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-10 3:04 Aureal Vortex PATCH [Fwd: via workaround error] Manuel Jander
2004-01-12 14:00 ` Takashi Iwai
2004-01-12 18:08 ` Wilfried Weissmann [this message]
2004-01-12 18:23 ` Takashi Iwai
2004-01-13 19:47 ` Wilfried Weissmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4002E295.3050001@gmx.at \
--to=wilfried.weissmann@gmx.at \
--cc=alsa-devel@lists.sourceforge.net \
--cc=manuel.jander@mat.utfsm.cl \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox