aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Andersson <bjorn.andersson@linaro.org>2016-08-09 20:42:55 -0400
committerAndy Gross <andy.gross@linaro.org>2016-08-23 16:46:33 -0400
commit381a0b4ce45b2ad809b79049e6316a83d5eaa2ea (patch)
tree2954cd69db37122fe7d45149a95fad97b59ce2b1
parent0a0c08cae01b33b29abd24608d3800986546f0af (diff)
soc: qcom: smd: Request irqs after parsing properties
The code exectued by the interrupt handler depends on the values parsed after requesting the irq, just to be save we should therefor move the request_irq() call to be done after parsing the properties. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Andy Gross <andy.gross@linaro.org>
-rw-r--r--drivers/soc/qcom/smd.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/drivers/soc/qcom/smd.c b/drivers/soc/qcom/smd.c
index 63e72eb9baa7..679f7778a4e3 100644
--- a/drivers/soc/qcom/smd.c
+++ b/drivers/soc/qcom/smd.c
@@ -1348,22 +1348,6 @@ static int qcom_smd_parse_edge(struct device *dev,
1348 1348
1349 edge->of_node = of_node_get(node); 1349 edge->of_node = of_node_get(node);
1350 1350
1351 irq = irq_of_parse_and_map(node, 0);
1352 if (irq < 0) {
1353 dev_err(dev, "required smd interrupt missing\n");
1354 return -EINVAL;
1355 }
1356
1357 ret = devm_request_irq(dev, irq,
1358 qcom_smd_edge_intr, IRQF_TRIGGER_RISING,
1359 node->name, edge);
1360 if (ret) {
1361 dev_err(dev, "failed to request smd irq\n");
1362 return ret;
1363 }
1364
1365 edge->irq = irq;
1366
1367 key = "qcom,smd-edge"; 1351 key = "qcom,smd-edge";
1368 ret = of_property_read_u32(node, key, &edge->edge_id); 1352 ret = of_property_read_u32(node, key, &edge->edge_id);
1369 if (ret) { 1353 if (ret) {
@@ -1398,6 +1382,22 @@ static int qcom_smd_parse_edge(struct device *dev,
1398 return -EINVAL; 1382 return -EINVAL;
1399 } 1383 }
1400 1384
1385 irq = irq_of_parse_and_map(node, 0);
1386 if (irq < 0) {
1387 dev_err(dev, "required smd interrupt missing\n");
1388 return -EINVAL;
1389 }
1390
1391 ret = devm_request_irq(dev, irq,
1392 qcom_smd_edge_intr, IRQF_TRIGGER_RISING,
1393 node->name, edge);
1394 if (ret) {
1395 dev_err(dev, "failed to request smd irq\n");
1396 return ret;
1397 }
1398
1399 edge->irq = irq;
1400
1401 return 0; 1401 return 0;
1402} 1402}
1403 1403