Update from Qualcomm to support smd devices in Modem Manager

Review URL: http://codereview.chromium.org/661471
(cherry picked from commit 8475eb44b7ea41afa823919b017a39d82b07a5a2)

Conflicts:

	src/mm-plugin-base.c

Change-Id: I825886cad62a27acb39dfe74da7028d83adf692a
This commit is contained in:
Elly Jones
2010-12-20 11:05:49 -05:00
parent 00b0b70f5d
commit d32eeec9ea

View File

@@ -48,6 +48,8 @@ G_DEFINE_TYPE_EXTENDED (MMPluginBase, mm_plugin_base, G_TYPE_OBJECT,
*/
static GHashTable *cached_caps = NULL;
/* Virtual port corresponding to the embeded modem */
static gchar *virtual_port[] = {"smd0", NULL};
typedef struct {
char *name;
@@ -1034,6 +1036,7 @@ supports_port (MMPlugin *plugin,
char *driver = NULL, *key = NULL;
MMPluginBaseSupportsTask *task;
MMPluginSupportsResult result = MM_PLUGIN_SUPPORTS_PORT_UNSUPPORTED;
int idx;
key = get_key (subsys, name);
task = g_hash_table_lookup (priv->tasks, key);
@@ -1046,6 +1049,16 @@ supports_port (MMPlugin *plugin,
if (!port)
goto out;
// Detect any modems accessible through the list of virtual ports
for (idx = 0; virtual_port[idx]; idx++) {
if (strcmp(name, virtual_port[idx]))
continue;
task = supports_task_new (self, port, physdev_path, "virtual", callback, callback_data);
g_assert (task);
g_hash_table_insert (priv->tasks, g_strdup (key), g_object_ref (task));
goto find_plugin;
}
driver = get_driver_name (port);
if (!driver)
goto out;
@@ -1054,6 +1067,7 @@ supports_port (MMPlugin *plugin,
g_assert (task);
g_hash_table_insert (priv->tasks, g_strdup (key), g_object_ref (task));
find_plugin:
result = MM_PLUGIN_BASE_GET_CLASS (self)->supports_port (self, existing, task);
if (result != MM_PLUGIN_SUPPORTS_PORT_IN_PROGRESS) {
/* If the plugin doesn't support the port at all, the supports task is