aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2011-07-25 12:50:22 -0500
committerDan Williams <dcbw@redhat.com>2011-07-25 12:57:59 -0500
commit1df8dd7361d4afbaf3e0fa46529cdd2460fa503d (patch)
treee5553e7ad58237a43abb5760fa1b6354c521c469
parentb02dc7f50fd918075c43d93d91f4bc3879b91b4c (diff)
option: plugin is supposed to support Nozomi devices too
The Nozomi cards were early CardBus devices that used a direct PCI interface (instead of the more usual PCI<->USB controller) and the 'nozomi' kernel driver. They use the same command set as most other early Option NV modems. Nozomi was always supposed to be driven by the option plugin, but apparently that got broken when adding some of the driver/vendor checks.
-rw-r--r--plugins/mm-plugin-option.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/plugins/mm-plugin-option.c b/plugins/mm-plugin-option.c
index 0e279c03..8c16879a 100644
--- a/plugins/mm-plugin-option.c
+++ b/plugins/mm-plugin-option.c
@@ -58,7 +58,7 @@ supports_port (MMPluginBase *base,
{
GUdevDevice *port;
const char *driver, *subsys, *name;
- guint16 vendor = 0;
+ guint16 vendor = 0, product = 0;
/* Can't do anything with non-serial ports */
port = mm_plugin_base_supports_task_get_port (task);
@@ -69,13 +69,14 @@ supports_port (MMPluginBase *base,
name = g_udev_device_get_name (port);
driver = mm_plugin_base_supports_task_get_driver (task);
- if (!driver || (strcmp (driver, "option1") && strcmp (driver, "option")))
+ if (!driver || (strcmp (driver, "option1") && strcmp (driver, "option") && strcmp (driver, "nozomi")))
return MM_PLUGIN_SUPPORTS_PORT_UNSUPPORTED;
- if (!mm_plugin_base_get_device_ids (base, subsys, name, &vendor, NULL))
+ if (!mm_plugin_base_get_device_ids (base, subsys, name, &vendor, &product))
return MM_PLUGIN_SUPPORTS_PORT_UNSUPPORTED;
- if (vendor != 0x0af0)
+ if ( (vendor != 0x0af0) /* Option USB devices */
+ && (vendor != 0x1931 || product != 0x000c)) /* Nozomi CardBus devices */
return MM_PLUGIN_SUPPORTS_PORT_UNSUPPORTED;
/* Check if a previous probing was already launched in this port */