projects
/
project
/
uqmi.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make size related int variables unsigned
[project/uqmi.git]
/
dev.c
diff --git
a/dev.c
b/dev.c
index
2e20274
..
4e48179
100644
(file)
--- a/
dev.c
+++ b/
dev.c
@@
-230,6
+230,8
@@
int qmi_service_connect(struct qmi_dev *qmi, QmiService svc, int client_id)
return req.req.ret;
client_id = req.cid;
return req.req.ret;
client_id = req.cid;
+ } else {
+ qmi->service_keep_cid |= (1 << idx);
}
qmi->service_data[idx].connected = true;
}
qmi->service_data[idx].connected = true;
@@
-261,11
+263,19
@@
static void __qmi_service_disconnect(struct qmi_dev *qmi, int idx)
qmi_request_wait(qmi, &req);
}
qmi_request_wait(qmi, &req);
}
+int qmi_service_release_client_id(struct qmi_dev *qmi, QmiService svc)
+{
+ int idx = qmi_get_service_idx(svc);
+ qmi->service_release_cid |= 1 << idx;
+ return 0;
+}
+
static void qmi_close_all_services(struct qmi_dev *qmi)
{
uint32_t connected = qmi->service_connected;
int idx;
static void qmi_close_all_services(struct qmi_dev *qmi)
{
uint32_t connected = qmi->service_connected;
int idx;
+ qmi->service_keep_cid &= ~qmi->service_release_cid;
for (idx = 0; connected; idx++, connected >>= 1) {
if (!(connected & 1))
continue;
for (idx = 0; connected; idx++, connected >>= 1) {
if (!(connected & 1))
continue;