helpers: consolidate some uses of mm_kernel_device_get_subsystem()
Signed-off-by: Dan Williams <dan@ioncontrol.co>
This commit is contained in:
@@ -5339,3 +5339,20 @@ mm_decode_eid (const gchar *eid, gsize eid_len)
|
||||
|
||||
return mm_bcd_to_string ((const guint8 *) eid, eid_len, FALSE /* low_nybble_first */);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
guint
|
||||
mm_string_uint_map_lookup (const MMStringUintMap *map,
|
||||
const gsize map_size,
|
||||
const gchar *str,
|
||||
const guint default_value)
|
||||
{
|
||||
guint i;
|
||||
|
||||
for (i = 0; i < map_size; i++) {
|
||||
if (g_str_equal (str, map[i].str))
|
||||
return map[i].val;
|
||||
}
|
||||
return default_value;
|
||||
}
|
||||
|
||||
@@ -593,4 +593,15 @@ gboolean mm_sim_parse_cpol_test_response (const gchar *response,
|
||||
/* Helper function to decode eid read from esim */
|
||||
gchar *mm_decode_eid (const gchar *eid, gsize eid_len);
|
||||
|
||||
typedef struct {
|
||||
const gchar *str;
|
||||
const guint val;
|
||||
} MMStringUintMap;
|
||||
|
||||
/* Helper to look up string value in a map and return corresponding guint */
|
||||
guint mm_string_uint_map_lookup (const MMStringUintMap *map,
|
||||
const gsize map_size,
|
||||
const gchar *str,
|
||||
const guint default_value);
|
||||
|
||||
#endif /* MM_MODEM_HELPERS_H */
|
||||
|
||||
+14
-13
@@ -749,6 +749,16 @@ mm_plugin_supports_port_finish (MMPlugin *self,
|
||||
return (MMPluginSupportsResult)value;
|
||||
}
|
||||
|
||||
static const MMStringUintMap subsys_flags_map[] = {
|
||||
{ "tty", MM_PORT_PROBE_AT | MM_PORT_PROBE_QCDM },
|
||||
{ "usbmisc", MM_PORT_PROBE_QMI | MM_PORT_PROBE_MBIM | MM_PORT_PROBE_AT },
|
||||
{ "rpmsg", MM_PORT_PROBE_AT | MM_PORT_PROBE_QMI },
|
||||
{ "wwan", MM_PORT_PROBE_QMI | MM_PORT_PROBE_MBIM | MM_PORT_PROBE_AT | MM_PORT_PROBE_QCDM },
|
||||
#if defined WITH_QRTR
|
||||
{ "qrtr", MM_PORT_PROBE_QMI },
|
||||
#endif
|
||||
};
|
||||
|
||||
void
|
||||
mm_plugin_supports_port (MMPlugin *self,
|
||||
MMDevice *device,
|
||||
@@ -803,19 +813,10 @@ mm_plugin_supports_port (MMPlugin *self,
|
||||
}
|
||||
|
||||
/* Build mask of flags based on subsystem */
|
||||
subsystem_expected_flags = MM_PORT_PROBE_NONE;
|
||||
if (g_str_equal (mm_kernel_device_get_subsystem (port), "tty"))
|
||||
subsystem_expected_flags |= (MM_PORT_PROBE_AT | MM_PORT_PROBE_QCDM);
|
||||
else if (g_str_equal (mm_kernel_device_get_subsystem (port), "usbmisc"))
|
||||
subsystem_expected_flags |= (MM_PORT_PROBE_QMI | MM_PORT_PROBE_MBIM | MM_PORT_PROBE_AT);
|
||||
else if (g_str_equal (mm_kernel_device_get_subsystem (port), "rpmsg"))
|
||||
subsystem_expected_flags |= (MM_PORT_PROBE_AT | MM_PORT_PROBE_QMI);
|
||||
else if (g_str_equal (mm_kernel_device_get_subsystem (port), "wwan"))
|
||||
subsystem_expected_flags |= (MM_PORT_PROBE_QMI | MM_PORT_PROBE_MBIM | MM_PORT_PROBE_AT | MM_PORT_PROBE_QCDM);
|
||||
#if defined WITH_QRTR
|
||||
else if (g_str_equal (mm_kernel_device_get_subsystem (port), "qrtr"))
|
||||
subsystem_expected_flags |= MM_PORT_PROBE_QMI;
|
||||
#endif
|
||||
subsystem_expected_flags = mm_string_uint_map_lookup (subsys_flags_map,
|
||||
G_N_ELEMENTS (subsys_flags_map),
|
||||
mm_kernel_device_get_subsystem (port),
|
||||
MM_PORT_PROBE_NONE);
|
||||
|
||||
/* Build mask of flags based on plugin */
|
||||
plugin_expected_flags = MM_PORT_PROBE_NONE;
|
||||
|
||||
+17
-12
@@ -112,6 +112,12 @@ struct _MMPortProbePrivate {
|
||||
GTask *task;
|
||||
};
|
||||
|
||||
static const MMStringUintMap port_subsys_map[] = {
|
||||
{ "usbmisc", MM_PORT_SUBSYS_USBMISC },
|
||||
{ "rpmsg", MM_PORT_SUBSYS_RPMSG },
|
||||
{ "wwan", MM_PORT_SUBSYS_WWAN },
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
@@ -542,11 +548,12 @@ wdm_probe_qmi (MMPortProbe *self)
|
||||
} else
|
||||
#endif /* WITH_QRTR */
|
||||
{
|
||||
MMPortSubsys subsys = MM_PORT_SUBSYS_USBMISC;
|
||||
|
||||
if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "rpmsg"))
|
||||
subsys = MM_PORT_SUBSYS_RPMSG;
|
||||
MMPortSubsys subsys;
|
||||
|
||||
subsys = mm_string_uint_map_lookup (port_subsys_map,
|
||||
G_N_ELEMENTS (port_subsys_map),
|
||||
mm_kernel_device_get_subsystem (self->priv->port),
|
||||
MM_PORT_SUBSYS_USBMISC);
|
||||
ctx->port_qmi = mm_port_qmi_new (mm_kernel_device_get_name (self->priv->port), subsys);
|
||||
}
|
||||
|
||||
@@ -1215,15 +1222,13 @@ serial_open_at (MMPortProbe *self)
|
||||
|
||||
/* Create AT serial port if not done before */
|
||||
if (!ctx->serial) {
|
||||
gpointer parser;
|
||||
MMPortSubsys subsys = MM_PORT_SUBSYS_TTY;
|
||||
gpointer parser;
|
||||
MMPortSubsys subsys;
|
||||
|
||||
if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "usbmisc"))
|
||||
subsys = MM_PORT_SUBSYS_USBMISC;
|
||||
else if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "rpmsg"))
|
||||
subsys = MM_PORT_SUBSYS_RPMSG;
|
||||
else if (g_str_equal (mm_kernel_device_get_subsystem (self->priv->port), "wwan"))
|
||||
subsys = MM_PORT_SUBSYS_WWAN;
|
||||
subsys = mm_string_uint_map_lookup (port_subsys_map,
|
||||
G_N_ELEMENTS (port_subsys_map),
|
||||
mm_kernel_device_get_subsystem (self->priv->port),
|
||||
MM_PORT_SUBSYS_TTY);
|
||||
|
||||
ctx->serial = MM_PORT_SERIAL (mm_port_serial_at_new (mm_kernel_device_get_name (self->priv->port), subsys));
|
||||
if (!ctx->serial) {
|
||||
|
||||
Reference in New Issue
Block a user