Skip to content

Commit 5e53c42

Browse files
committed
rpmsg: qcom_smd: Add support for "label" property
Add support for the "label" property, used to give the edge a name other than the one of the DT node. This allows the implementor to provide consistently named edges when using the rpmsg character device. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
1 parent 49def18 commit 5e53c42

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

drivers/rpmsg/qcom_smd.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ static const struct {
117117
struct qcom_smd_edge {
118118
struct device dev;
119119

120+
const char *name;
121+
120122
struct device_node *of_node;
121123
unsigned edge_id;
122124
unsigned remote_pid;
@@ -1248,6 +1250,10 @@ static int qcom_smd_parse_edge(struct device *dev,
12481250
return -EINVAL;
12491251
}
12501252

1253+
ret = of_property_read_string(node, "label", &edge->name);
1254+
if (ret < 0)
1255+
edge->name = node->name;
1256+
12511257
irq = irq_of_parse_and_map(node, 0);
12521258
if (irq < 0) {
12531259
dev_err(dev, "required smd interrupt missing\n");
@@ -1285,6 +1291,21 @@ static void qcom_smd_edge_release(struct device *dev)
12851291
kfree(edge);
12861292
}
12871293

1294+
static ssize_t rpmsg_name_show(struct device *dev,
1295+
struct device_attribute *attr, char *buf)
1296+
{
1297+
struct qcom_smd_edge *edge = to_smd_edge(dev);
1298+
1299+
return sprintf(buf, "%s\n", edge->name);
1300+
}
1301+
static DEVICE_ATTR_RO(rpmsg_name);
1302+
1303+
static struct attribute *qcom_smd_edge_attrs[] = {
1304+
&dev_attr_rpmsg_name.attr,
1305+
NULL
1306+
};
1307+
ATTRIBUTE_GROUPS(qcom_smd_edge);
1308+
12881309
/**
12891310
* qcom_smd_register_edge() - register an edge based on an device_node
12901311
* @parent: parent device for the edge
@@ -1306,6 +1327,7 @@ struct qcom_smd_edge *qcom_smd_register_edge(struct device *parent,
13061327

13071328
edge->dev.parent = parent;
13081329
edge->dev.release = qcom_smd_edge_release;
1330+
edge->dev.groups = qcom_smd_edge_groups;
13091331
dev_set_name(&edge->dev, "%s:%s", dev_name(parent), node->name);
13101332
ret = device_register(&edge->dev);
13111333
if (ret) {

0 commit comments

Comments
 (0)