aboutsummaryrefslogtreecommitdiff
path: root/src/mm-port-qmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-port-qmi.c')
-rw-r--r--src/mm-port-qmi.c80
1 files changed, 38 insertions, 42 deletions
diff --git a/src/mm-port-qmi.c b/src/mm-port-qmi.c
index 9263ae86..e9b45e45 100644
--- a/src/mm-port-qmi.c
+++ b/src/mm-port-qmi.c
@@ -1127,12 +1127,12 @@ static const DataFormatCombination data_format_combinations[] = {
typedef enum {
INTERNAL_SETUP_DATA_FORMAT_STEP_FIRST,
+ INTERNAL_SETUP_DATA_FORMAT_STEP_ALLOCATE_WDA_CLIENT,
INTERNAL_SETUP_DATA_FORMAT_STEP_SUPPORTED_KERNEL_DATA_MODES,
INTERNAL_SETUP_DATA_FORMAT_STEP_RETRY,
INTERNAL_SETUP_DATA_FORMAT_STEP_CURRENT_KERNEL_DATA_MODES,
INTERNAL_SETUP_DATA_FORMAT_STEP_ALLOCATE_DPM_CLIENT,
INTERNAL_SETUP_DATA_FORMAT_STEP_DPM_OPEN,
- INTERNAL_SETUP_DATA_FORMAT_STEP_ALLOCATE_WDA_CLIENT,
INTERNAL_SETUP_DATA_FORMAT_STEP_GET_WDA_DATA_FORMAT,
INTERNAL_SETUP_DATA_FORMAT_STEP_QUERY_DONE,
INTERNAL_SETUP_DATA_FORMAT_STEP_CHECK_DATA_FORMAT_COMBINATION,
@@ -1588,28 +1588,6 @@ get_data_format_ready (QmiClientWda *client,
}
static void
-allocate_client_wda_ready (QmiDevice *device,
- GAsyncResult *res,
- GTask *task)
-{
- InternalSetupDataFormatContext *ctx;
- GError *error = NULL;
-
- ctx = g_task_get_task_data (task);
-
- ctx->wda = qmi_device_allocate_client_finish (device, res, &error);
- if (!ctx->wda) {
- g_task_return_error (task, error);
- g_object_unref (task);
- return;
- }
-
- /* Go on to next step */
- ctx->step++;
- internal_setup_data_format_context_step (task);
-}
-
-static void
dpm_open_port_ready (QmiClientDpm *client,
GAsyncResult *res,
GTask *task)
@@ -1653,7 +1631,7 @@ dpm_open_port (GTask *task)
tx_sysfs_path = g_build_filename (self->priv->net_sysfs_path, "device", "modem", "tx_endpoint_id", NULL);
rx_sysfs_path = g_build_filename (self->priv->net_sysfs_path, "device", "modem", "rx_endpoint_id", NULL);
-
+
if (g_file_get_contents (rx_sysfs_path, &rx_sysfs_str, NULL, NULL) &&
g_file_get_contents (tx_sysfs_path, &tx_sysfs_str, NULL, NULL)) {
if (rx_sysfs_str && tx_sysfs_str) {
@@ -1680,7 +1658,7 @@ dpm_open_port (GTask *task)
hw_port.interface_number = self->priv->endpoint_interface_number;
hw_data_ports = g_array_new (FALSE, FALSE, sizeof (QmiMessageDpmOpenPortInputHardwareDataPortsElement));
g_array_append_val (hw_data_ports, hw_port);
-
+
input = qmi_message_dpm_open_port_input_new ();
qmi_message_dpm_open_port_input_set_hardware_data_ports (input,
hw_data_ports,
@@ -1716,6 +1694,28 @@ allocate_client_dpm_ready (QmiDevice *device,
}
static void
+allocate_client_wda_ready (QmiDevice *device,
+ GAsyncResult *res,
+ GTask *task)
+{
+ InternalSetupDataFormatContext *ctx;
+ GError *error = NULL;
+
+ ctx = g_task_get_task_data (task);
+
+ ctx->wda = qmi_device_allocate_client_finish (device, res, &error);
+ if (!ctx->wda) {
+ g_task_return_error (task, error);
+ g_object_unref (task);
+ return;
+ }
+
+ /* Go on to next step */
+ ctx->step++;
+ internal_setup_data_format_context_step (task);
+}
+
+static void
internal_setup_data_format_context_step (GTask *task)
{
MMPortQmi *self;
@@ -1729,6 +1729,18 @@ internal_setup_data_format_context_step (GTask *task)
ctx->step++;
/* Fall through */
+ case INTERNAL_SETUP_DATA_FORMAT_STEP_ALLOCATE_WDA_CLIENT:
+ /* Allocate new WDA client, only on first loop iteration */
+ g_assert (!ctx->wda);
+ qmi_device_allocate_client (ctx->device,
+ QMI_SERVICE_WDA,
+ QMI_CID_NONE,
+ 10,
+ g_task_get_cancellable (task),
+ (GAsyncReadyCallback) allocate_client_wda_ready,
+ task);
+ return;
+
case INTERNAL_SETUP_DATA_FORMAT_STEP_SUPPORTED_KERNEL_DATA_MODES:
/* Load kernel data format capabilities, only on first loop iteration */
ctx->kernel_data_modes_supported = load_supported_kernel_data_modes (self, ctx->device);
@@ -1761,7 +1773,7 @@ internal_setup_data_format_context_step (GTask *task)
}
ctx->step++;
/* Fall through */
-
+
case INTERNAL_SETUP_DATA_FORMAT_STEP_DPM_OPEN:
/* Only for IPA based setups, open dpm port */
if (g_strcmp0 (self->priv->net_driver, "ipa") == 0) {
@@ -1771,22 +1783,6 @@ internal_setup_data_format_context_step (GTask *task)
ctx->step++;
/* Fall through */
- case INTERNAL_SETUP_DATA_FORMAT_STEP_ALLOCATE_WDA_CLIENT:
- /* Only allocate new WDA client on first loop */
- if (ctx->data_format_combination_i < 0) {
- g_assert (!ctx->wda);
- qmi_device_allocate_client (ctx->device,
- QMI_SERVICE_WDA,
- QMI_CID_NONE,
- 10,
- g_task_get_cancellable (task),
- (GAsyncReadyCallback) allocate_client_wda_ready,
- task);
- return;
- }
- ctx->step++;
- /* Fall through */
-
case INTERNAL_SETUP_DATA_FORMAT_STEP_GET_WDA_DATA_FORMAT:
/* Only reload WDA data format if it was updated or on first loop */
if (ctx->wda_llp_current == QMI_WDA_LINK_LAYER_PROTOCOL_UNKNOWN) {