diff --git a/drivers/qmimodem/qmi.c b/drivers/qmimodem/qmi.c index b6a116dd..c2131130 100644 --- a/drivers/qmimodem/qmi.c +++ b/drivers/qmimodem/qmi.c @@ -1989,43 +1989,22 @@ done: __qmi_device_discovery_complete(data->device, &data->super); } -static void service_create_discover(uint8_t count, - const struct qmi_version *list, void *user_data) -{ - struct service_create_data *data = user_data; - struct qmi_device *device = data->device; - struct qmi_request *req; - unsigned char client_req[] = { 0x01, 0x01, 0x00, data->type }; - unsigned int i; - - __debug_device(device, "service create [type=%d]", data->type); - - for (i = 0; i < count; i++) { - if (list[i].type == data->type) { - data->major = list[i].major; - data->minor = list[i].minor; - break; - } - } - - req = __request_alloc(QMI_SERVICE_CONTROL, 0x00, - QMI_CTL_GET_CLIENT_ID, - client_req, sizeof(client_req), - service_create_callback, data); - - __request_submit(device, req); -} - static bool service_create(struct qmi_device *device, bool shared, uint8_t type, qmi_create_func_t func, void *user_data, qmi_destroy_func_t destroy) { struct service_create_data *data; + unsigned char client_req[] = { 0x01, 0x01, 0x00, type }; + struct qmi_request *req; + int i; data = g_try_new0(struct service_create_data, 1); if (!data) return false; + if (!device->version_list) + return false; + data->super.destroy = service_create_data_free; data->device = device; data->shared = shared; @@ -2034,20 +2013,23 @@ static bool service_create(struct qmi_device *device, bool shared, data->user_data = user_data; data->destroy = destroy; - if (device->version_list) { - service_create_discover(device->version_count, - device->version_list, data); - goto done; + __debug_device(device, "service create [type=%d]", type); + + for (i = 0; i < device->version_count; i++) { + if (device->version_list[i].type == data->type) { + data->major = device->version_list[i].major; + data->minor = device->version_list[i].minor; + break; + } } - if (qmi_device_discover(device, service_create_discover, data, NULL)) - goto done; + req = __request_alloc(QMI_SERVICE_CONTROL, 0x00, + QMI_CTL_GET_CLIENT_ID, + client_req, sizeof(client_req), + service_create_callback, data); - g_free(data); + __request_submit(device, req); - return false; - -done: data->timeout = g_timeout_add_seconds(8, service_create_reply, data); __qmi_device_discovery_started(device, &data->super);