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

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>

authored by

Bjorn Andersson and committed by
Andy Gross
381a0b4c 0a0c08ca

+16 -16
+16 -16
drivers/soc/qcom/smd.c
··· 1348 1348 1349 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 1351 key = "qcom,smd-edge"; 1368 1352 ret = of_property_read_u32(node, key, &edge->edge_id); 1369 1353 if (ret) { ··· 1381 1397 dev_err(dev, "no bit in %s\n", key); 1382 1398 return -EINVAL; 1383 1399 } 1400 + 1401 + irq = irq_of_parse_and_map(node, 0); 1402 + if (irq < 0) { 1403 + dev_err(dev, "required smd interrupt missing\n"); 1404 + return -EINVAL; 1405 + } 1406 + 1407 + ret = devm_request_irq(dev, irq, 1408 + qcom_smd_edge_intr, IRQF_TRIGGER_RISING, 1409 + node->name, edge); 1410 + if (ret) { 1411 + dev_err(dev, "failed to request smd irq\n"); 1412 + return ret; 1413 + } 1414 + 1415 + edge->irq = irq; 1384 1416 1385 1417 return 0; 1386 1418 }