summaryrefslogtreecommitdiffstats
path: root/net/qrtr/smd.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/qrtr/smd.c')
-rw-r--r--net/qrtr/smd.c42
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
21struct qrtr_smd_dev { 21struct 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 */
28static int qcom_smd_qrtr_callback(struct qcom_smd_channel *channel, 28static 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
59out: 59out:
60 if (rc) 60 if (rc)
@@ -64,57 +64,55 @@ out:
64 return rc; 64 return rc;
65} 65}
66 66
67static int qcom_smd_qrtr_probe(struct qcom_smd_device *sdev) 67static 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
92static void qcom_smd_qrtr_remove(struct qcom_smd_device *sdev) 91static 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
101static const struct qcom_smd_id qcom_smd_qrtr_smd_match[] = { 100static const struct rpmsg_device_id qcom_smd_qrtr_smd_match[] = {
102 { "IPCRTR" }, 101 { "IPCRTR" },
103 {} 102 {}
104}; 103};
105 104
106static struct qcom_smd_driver qcom_smd_qrtr_driver = { 105static 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
117module_qcom_smd_driver(qcom_smd_qrtr_driver); 115module_rpmsg_driver(qcom_smd_qrtr_driver);
118 116
119MODULE_DESCRIPTION("Qualcomm IPC-Router SMD interface driver"); 117MODULE_DESCRIPTION("Qualcomm IPC-Router SMD interface driver");
120MODULE_LICENSE("GPL v2"); 118MODULE_LICENSE("GPL v2");