[Prism54-devel] 2.6.8-rc2 oops and PCI poking again
Margit Schubert-While
margitsw at t-online.de
Tue Jul 20 17:59:31 UTC 2004
OK, this is getting beyond a joke.
We now have at least three reports that NOT poking 0 into the
TRDY_TIMEOUT and RETRY_TIMEOUT registers results in
not being able to communicate with the device. (mgt timeout).
I have one report that even poking 0xFF into them doesn't help.
On the other hand, my ancient P133 goes on strike if ANYTHING
is poked into the registers.
There again, with my available adapters (WG511, ALL271,
SMC2802WV1, T-SINUS 154) and other available boxes/
lappies, I do NOT have any problem with NOT poking the registers.
Tim, can you get your engineers to explain why this behaviour
exists. AFAIK, NO other in-kernel, in-windows, external kernel/
windows driver pokes these registers (At least that I am able to find)
Are there Prism GT devices that are not PCI compliant or am I missing
something ?
In the meantime, I suggest the following.
Define a module parameter init_pcitm = 0
If >= 0, set TRDY/TIMEOUT to this value.
If negative, don't poke at all.
Patch code :
---
linux-2.6.8-01/drivers/net/wireless/prism54/islpci_hotplug.c
2004-07-01 07:23:52.000000000 +0200
+++
linux-2.6.8-04/drivers/net/wireless/prism54/islpci_hotplug.c
2004-07-20 19:07:30.000000000 +0200
@@ -36,6 +36,9 @@
MODULE_DESCRIPTION("The Prism54 802.11 Wireless LAN adapter");
MODULE_LICENSE("GPL");
+static int init_pcitm = 0;
+module_param(init_pcitm, int, 0);
+
/* In this order: vendor, device, subvendor, subdevice, class, class_mask,
* driver_data
* If you have an update for this please contact prism54-devel at prism54.org
@@ -292,14 +295,14 @@
*
* Writing zero to both these two registers will disable both
timeouts and
* *can* solve problems caused by devices that are slow to
respond.
+ * Make this configurable - MSW
*/
- /* I am taking these out, we should not be poking around in the
- * programmable timers - MSW
- */
-/* Do not zero the programmable timers
- pci_write_config_byte(pdev, 0x40, 0);
- pci_write_config_byte(pdev, 0x41, 0);
-*/
+ if ( init_pcitm >= 0 ) {
+ pci_write_config_byte(pdev, 0x40, (u8)init_pcitm);
+ pci_write_config_byte(pdev, 0x41, (u8)init_pcitm);
+ } else {
+ printk(KERN_INFO "PCI TRDY/RETRY unchanged\n");
+ }
/* request the pci device I/O regions */
rvalue = pci_request_regions(pdev, DRV_NAME);
Margit
More information about the Prism54-devel
mailing list