projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
NFC: st-nci: Keep st_nci_gates unchanged in load_session
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
nfc
/
st-nci
/
se.c
diff --git
a/drivers/nfc/st-nci/se.c
b/drivers/nfc/st-nci/se.c
index 4acb945ac252b482a87c0aebb91b9279473c9933..df2dc544b73a01bb0354b059c06ac2aa43fbf5fb 100644
(file)
--- a/
drivers/nfc/st-nci/se.c
+++ b/
drivers/nfc/st-nci/se.c
@@
-232,20
+232,25
@@
int st_nci_hci_load_session(struct nci_dev *ndev)
if (j < ARRAY_SIZE(st_nci_gates) &&
st_nci_gates[j].gate == dm_pipe_info->dst_gate_id &&
ST_NCI_DM_IS_PIPE_OPEN(dm_pipe_info->pipe_state)) {
if (j < ARRAY_SIZE(st_nci_gates) &&
st_nci_gates[j].gate == dm_pipe_info->dst_gate_id &&
ST_NCI_DM_IS_PIPE_OPEN(dm_pipe_info->pipe_state)) {
-
st_nci_
gates[j].pipe = pipe_info[2];
+
ndev->hci_dev->init_data.
gates[j].pipe = pipe_info[2];
ndev->hci_dev->gate2pipe[st_nci_gates[j].gate] =
ndev->hci_dev->gate2pipe[st_nci_gates[j].gate] =
-
st_nci_gates[j].pipe
;
- ndev->hci_dev->pipes[
st_nci_gates[j].pipe
].gate =
+
pipe_info[2]
;
+ ndev->hci_dev->pipes[
pipe_info[2]
].gate =
st_nci_gates[j].gate;
st_nci_gates[j].gate;
- ndev->hci_dev->pipes[
st_nci_gates[j].pipe
].host =
+ ndev->hci_dev->pipes[
pipe_info[2]
].host =
dm_pipe_info->src_host_id;
}
kfree_skb(skb_pipe_info);
}
dm_pipe_info->src_host_id;
}
kfree_skb(skb_pipe_info);
}
- memcpy(ndev->hci_dev->init_data.gates, st_nci_gates,
- sizeof(st_nci_gates));
+ /*
+ * 3 gates have a well known pipe ID. Only NCI_HCI_LINK_MGMT_GATE
+ * is not yet open at this stage.
+ */
+ r = nci_hci_connect_gate(ndev, ST_NCI_HOST_CONTROLLER_ID,
+ NCI_HCI_LINK_MGMT_GATE,
+ NCI_HCI_LINK_MGMT_PIPE);
kfree_skb(skb_pipe_list);
return r;
kfree_skb(skb_pipe_list);
return r;