[Asterisk-Users] Intel 537EP is NOT the MD3200 aka X100P [Re: Intel
537EP chipset, revisited]
Andrew Athan
aathan-asterisk-1529 at cloakmail.com
Sun Feb 6 22:38:17 MST 2005
It seems the information out there on this topic was confusing enough to
cause me to waste a lot of time, and that this topic is rehashed
periodically. So now it's my turn....
I had a modem with an Intel 537EP chip on it and thought it might work
with the zaptel drivers. Initially, it seemed the only issue would be
the PCI device & vendor codes. Then, I ran into the problem that the
serial driver claimed the device, disallowing the zaptel wcfxo driver to
grab it. The following patches fix those problems, BUT, further
investigation reveals this card is not compatible. It's not clear how
different the 537EP is from teh MD3200 / X100P; might be worth checking
into.
http://linmodems.technion.ac.il/packages/Intel/537/ is Intel's site
containing linux modem drivers for the 537 line, and these appear to
include voice features. Not sure if duplex and if compatible with
Asterisk voicemodem driver. Again, might be worth checking into.
In the meantime, make sure you purchase the X100P or MD3200 !
*** wcfxo.c 2005-01-15 17:59:18.000000000 -0500
--- wcfxo.c.new 2005-02-06 22:47:06.343556005 -0500
***************
*** 980,985 ****
--- 980,986 ----
{ 0xe159, 0x0001, 0x8086, PCI_ANY_ID, 0, 0, (unsigned long)
&generic },
{ 0xe159, 0x0001, 0x8087, PCI_ANY_ID, 0, 0, (unsigned long)
&generic },
{ 0x1057, 0x5608, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long)
&wcx100p },
+ { 0x8086, 0x1080, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long)
&generic },
{ 0 }
};
***************
*** 1000,1005 ****
--- 1001,1048 ----
{
int res;
int x;
+
+
+ struct pci_dev *pdev;
+ int i;
+
+ /* workaround for serial driver falsely claiming to handle our
devices. */
+ for(i=0; wcfxo_pci_tbl[i].vendor; i++) {
+ pdev = NULL;
+ while( (pdev = pci_find_device(wcfxo_pci_tbl[i].vendor,
wcfxo_pci_tbl[i].device, pdev)) ) {
+ if ((((pdev->class >> 8) != PCI_CLASS_COMMUNICATION_SERIAL) &&
+ ((pdev->class >> 8) !=
PCI_CLASS_COMMUNICATION_MODEM)) ||
+ (pdev->class & 0xff) > 6)
+ continue;
+
+ if(pdev->driver) {
+ if(pdev->driver->name && !strcmp(pdev->driver->name,
"serial")) {
+ printk(KERN_WARNING"wcfxo: %s driver grabbed our
device (%s), reclaiming it..\n", pdev->driver->name, pdev->slot_name);
+ #if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) )
+ {
+ struct device *dev = get_device(&pdev->dev);
+
+ if(dev) {
+ device_release_driver(dev);
+ put_device(dev);
+ }
+ }
+ #else
+ if(pdev->driver) {
+ if(pdev->driver->remove) {
+ pdev->driver->remove(pdev);
+ }
+ pdev->driver = NULL;
+ }
+ #endif
+
+ }
+ }
+ }
+ }
+
+
+
if ((opermode >= sizeof(fxo_modes) / sizeof(fxo_modes[0])) ||
(opermode < 0)) {
printk("Invalid/unknown operating mode specified.
Please choose one of:\n");
for (x=0;x<sizeof(fxo_modes) / sizeof(fxo_modes[0]); x++)
More information about the asterisk-users
mailing list