]> git.karo-electronics.de Git - linux-beck.git/commitdiff
soc: qcom: smd: Request irqs after parsing properties
authorBjorn Andersson <bjorn.andersson@linaro.org>
Wed, 10 Aug 2016 00:42:55 +0000 (17:42 -0700)
committerAndy Gross <andy.gross@linaro.org>
Tue, 23 Aug 2016 20:46:33 +0000 (15:46 -0500)
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>
drivers/soc/qcom/smd.c

index 63e72eb9baa71739eb1e968fc13bba3ae7fb7b77..679f7778a4e3ae9a767e5a4237714d4b322bb65e 100644 (file)
@@ -1348,22 +1348,6 @@ static int qcom_smd_parse_edge(struct device *dev,
 
        edge->of_node = of_node_get(node);
 
-       irq = irq_of_parse_and_map(node, 0);
-       if (irq < 0) {
-               dev_err(dev, "required smd interrupt missing\n");
-               return -EINVAL;
-       }
-
-       ret = devm_request_irq(dev, irq,
-                              qcom_smd_edge_intr, IRQF_TRIGGER_RISING,
-                              node->name, edge);
-       if (ret) {
-               dev_err(dev, "failed to request smd irq\n");
-               return ret;
-       }
-
-       edge->irq = irq;
-
        key = "qcom,smd-edge";
        ret = of_property_read_u32(node, key, &edge->edge_id);
        if (ret) {
@@ -1398,6 +1382,22 @@ static int qcom_smd_parse_edge(struct device *dev,
                return -EINVAL;
        }
 
+       irq = irq_of_parse_and_map(node, 0);
+       if (irq < 0) {
+               dev_err(dev, "required smd interrupt missing\n");
+               return -EINVAL;
+       }
+
+       ret = devm_request_irq(dev, irq,
+                              qcom_smd_edge_intr, IRQF_TRIGGER_RISING,
+                              node->name, edge);
+       if (ret) {
+               dev_err(dev, "failed to request smd irq\n");
+               return ret;
+       }
+
+       edge->irq = irq;
+
        return 0;
 }