diff options
Diffstat (limited to 'net/qrtr/smd.c')
-rw-r--r-- | net/qrtr/smd.c | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/net/qrtr/smd.c b/net/qrtr/smd.c index 0d11132b3370..50615d5efac1 100644 --- a/net/qrtr/smd.c +++ b/net/qrtr/smd.c | |||
@@ -14,21 +14,21 @@ | |||
14 | 14 | ||
15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
16 | #include <linux/skbuff.h> | 16 | #include <linux/skbuff.h> |
17 | #include <linux/soc/qcom/smd.h> | 17 | #include <linux/rpmsg.h> |
18 | 18 | ||
19 | #include "qrtr.h" | 19 | #include "qrtr.h" |
20 | 20 | ||
21 | struct qrtr_smd_dev { | 21 | struct qrtr_smd_dev { |
22 | struct qrtr_endpoint ep; | 22 | struct qrtr_endpoint ep; |
23 | struct qcom_smd_channel *channel; | 23 | struct rpmsg_endpoint *channel; |
24 | struct device *dev; | 24 | struct device *dev; |
25 | }; | 25 | }; |
26 | 26 | ||
27 | /* from smd to qrtr */ | 27 | /* from smd to qrtr */ |
28 | static int qcom_smd_qrtr_callback(struct qcom_smd_channel *channel, | 28 | static int qcom_smd_qrtr_callback(struct rpmsg_device *rpdev, |
29 | const void *data, size_t len) | 29 | void *data, int len, void *priv, u32 addr) |
30 | { | 30 | { |
31 | struct qrtr_smd_dev *qdev = qcom_smd_get_drvdata(channel); | 31 | struct qrtr_smd_dev *qdev = dev_get_drvdata(&rpdev->dev); |
32 | int rc; | 32 | int rc; |
33 | 33 | ||
34 | if (!qdev) | 34 | if (!qdev) |
@@ -54,7 +54,7 @@ static int qcom_smd_qrtr_send(struct qrtr_endpoint *ep, struct sk_buff *skb) | |||
54 | if (rc) | 54 | if (rc) |
55 | goto out; | 55 | goto out; |
56 | 56 | ||
57 | rc = qcom_smd_send(qdev->channel, skb->data, skb->len); | 57 | rc = rpmsg_send(qdev->channel, skb->data, skb->len); |
58 | 58 | ||
59 | out: | 59 | out: |
60 | if (rc) | 60 | if (rc) |
@@ -64,57 +64,55 @@ out: | |||
64 | return rc; | 64 | return rc; |
65 | } | 65 | } |
66 | 66 | ||
67 | static int qcom_smd_qrtr_probe(struct qcom_smd_device *sdev) | 67 | static int qcom_smd_qrtr_probe(struct rpmsg_device *rpdev) |
68 | { | 68 | { |
69 | struct qrtr_smd_dev *qdev; | 69 | struct qrtr_smd_dev *qdev; |
70 | int rc; | 70 | int rc; |
71 | 71 | ||
72 | qdev = devm_kzalloc(&sdev->dev, sizeof(*qdev), GFP_KERNEL); | 72 | qdev = devm_kzalloc(&rpdev->dev, sizeof(*qdev), GFP_KERNEL); |
73 | if (!qdev) | 73 | if (!qdev) |
74 | return -ENOMEM; | 74 | return -ENOMEM; |
75 | 75 | ||
76 | qdev->channel = sdev->channel; | 76 | qdev->channel = rpdev->ept; |
77 | qdev->dev = &sdev->dev; | 77 | qdev->dev = &rpdev->dev; |
78 | qdev->ep.xmit = qcom_smd_qrtr_send; | 78 | qdev->ep.xmit = qcom_smd_qrtr_send; |
79 | 79 | ||
80 | rc = qrtr_endpoint_register(&qdev->ep, QRTR_EP_NID_AUTO); | 80 | rc = qrtr_endpoint_register(&qdev->ep, QRTR_EP_NID_AUTO); |
81 | if (rc) | 81 | if (rc) |
82 | return rc; | 82 | return rc; |
83 | 83 | ||
84 | qcom_smd_set_drvdata(sdev->channel, qdev); | 84 | dev_set_drvdata(&rpdev->dev, qdev); |
85 | dev_set_drvdata(&sdev->dev, qdev); | ||
86 | 85 | ||
87 | dev_dbg(&sdev->dev, "Qualcomm SMD QRTR driver probed\n"); | 86 | dev_dbg(&rpdev->dev, "Qualcomm SMD QRTR driver probed\n"); |
88 | 87 | ||
89 | return 0; | 88 | return 0; |
90 | } | 89 | } |
91 | 90 | ||
92 | static void qcom_smd_qrtr_remove(struct qcom_smd_device *sdev) | 91 | static void qcom_smd_qrtr_remove(struct rpmsg_device *rpdev) |
93 | { | 92 | { |
94 | struct qrtr_smd_dev *qdev = dev_get_drvdata(&sdev->dev); | 93 | struct qrtr_smd_dev *qdev = dev_get_drvdata(&rpdev->dev); |
95 | 94 | ||
96 | qrtr_endpoint_unregister(&qdev->ep); | 95 | qrtr_endpoint_unregister(&qdev->ep); |
97 | 96 | ||
98 | dev_set_drvdata(&sdev->dev, NULL); | 97 | dev_set_drvdata(&rpdev->dev, NULL); |
99 | } | 98 | } |
100 | 99 | ||
101 | static const struct qcom_smd_id qcom_smd_qrtr_smd_match[] = { | 100 | static const struct rpmsg_device_id qcom_smd_qrtr_smd_match[] = { |
102 | { "IPCRTR" }, | 101 | { "IPCRTR" }, |
103 | {} | 102 | {} |
104 | }; | 103 | }; |
105 | 104 | ||
106 | static struct qcom_smd_driver qcom_smd_qrtr_driver = { | 105 | static struct rpmsg_driver qcom_smd_qrtr_driver = { |
107 | .probe = qcom_smd_qrtr_probe, | 106 | .probe = qcom_smd_qrtr_probe, |
108 | .remove = qcom_smd_qrtr_remove, | 107 | .remove = qcom_smd_qrtr_remove, |
109 | .callback = qcom_smd_qrtr_callback, | 108 | .callback = qcom_smd_qrtr_callback, |
110 | .smd_match_table = qcom_smd_qrtr_smd_match, | 109 | .id_table = qcom_smd_qrtr_smd_match, |
111 | .driver = { | 110 | .drv = { |
112 | .name = "qcom_smd_qrtr", | 111 | .name = "qcom_smd_qrtr", |
113 | .owner = THIS_MODULE, | ||
114 | }, | 112 | }, |
115 | }; | 113 | }; |
116 | 114 | ||
117 | module_qcom_smd_driver(qcom_smd_qrtr_driver); | 115 | module_rpmsg_driver(qcom_smd_qrtr_driver); |
118 | 116 | ||
119 | MODULE_DESCRIPTION("Qualcomm IPC-Router SMD interface driver"); | 117 | MODULE_DESCRIPTION("Qualcomm IPC-Router SMD interface driver"); |
120 | MODULE_LICENSE("GPL v2"); | 118 | MODULE_LICENSE("GPL v2"); |