[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