Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+22
+22
drivers/rpmsg/qcom_smd.c
··· 117 117 struct qcom_smd_edge { 118 118 struct device dev; 119 119 120 + const char *name; 121 + 120 122 struct device_node *of_node; 121 123 unsigned edge_id; 122 124 unsigned remote_pid; ··· 1250 1248 return -EINVAL; 1251 1249 } 1252 1250 1251 + ret = of_property_read_string(node, "label", &edge->name); 1252 + if (ret < 0) 1253 + edge->name = node->name; 1254 + 1253 1255 irq = irq_of_parse_and_map(node, 0); 1254 1256 if (irq < 0) { 1255 1257 dev_err(dev, "required smd interrupt missing\n"); ··· 1291 1285 kfree(edge); 1292 1286 } 1293 1287 1288 + static ssize_t rpmsg_name_show(struct device *dev, 1289 + struct device_attribute *attr, char *buf) 1290 + { 1291 + struct qcom_smd_edge *edge = to_smd_edge(dev); 1292 + 1293 + return sprintf(buf, "%s\n", edge->name); 1294 + } 1295 + static DEVICE_ATTR_RO(rpmsg_name); 1296 + 1297 + static struct attribute *qcom_smd_edge_attrs[] = { 1298 + &dev_attr_rpmsg_name.attr, 1299 + NULL 1300 + }; 1301 + ATTRIBUTE_GROUPS(qcom_smd_edge); 1302 + 1294 1303 /** 1295 1304 * qcom_smd_register_edge() - register an edge based on an device_node 1296 1305 * @parent: parent device for the edge ··· 1327 1306 1328 1307 edge->dev.parent = parent; 1329 1308 edge->dev.release = qcom_smd_edge_release; 1309 + edge->dev.groups = qcom_smd_edge_groups; 1330 1310 dev_set_name(&edge->dev, "%s:%s", dev_name(parent), node->name); 1331 1311 ret = device_register(&edge->dev); 1332 1312 if (ret) {