diff options
| author | Karthikeyan Ramasubramanian <kramasub@codeaurora.org> | 2016-08-03 12:01:47 -0600 |
|---|---|---|
| committer | Karthikeyan Ramasubramanian <kramasub@codeaurora.org> | 2016-08-11 11:29:21 -0600 |
| commit | 16fe24796a1de80242be94499dc0bf8bc05dc0b0 (patch) | |
| tree | c5ee10c8b9a2c0c253244a81cf36c882f1e2271f /drivers/soc | |
| parent | 60aacdb787e6040d86bea2cd54897085a638a728 (diff) | |
soc: qcom: qsee_ipc_irq_bridge: Remove the redundant subsystem name check
Currently the driver checks for interrupt type and subsytem name before
parsing the RX IRQ Reset Regiser. Checking for the subsystem name is
redundant and prone to typo errors which will lead to incorrect parsing
of Device Tree entries and eventually an interrupt storm.
Check only for the interrupt type and parse the Device Tree entries
completely.
CRs-Fixed: 1053076
Change-Id: I22719898b86534f1821104a6a629e7fd37b0d823
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
Diffstat (limited to 'drivers/soc')
| -rw-r--r-- | drivers/soc/qcom/qsee_ipc_irq_bridge.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/soc/qcom/qsee_ipc_irq_bridge.c b/drivers/soc/qcom/qsee_ipc_irq_bridge.c index d3a2212f07c4..ab43bbb7e86a 100644 --- a/drivers/soc/qcom/qsee_ipc_irq_bridge.c +++ b/drivers/soc/qcom/qsee_ipc_irq_bridge.c @@ -374,6 +374,9 @@ static int qiib_parse_node(struct device_node *node, struct qiib_dev *devp) } QIIB_DBG("%s: %s = %d\n", __func__, key, devp->irq_line); + irqtype = irqd_get_trigger_type(irq_get_irq_data(devp->irq_line)); + QIIB_DBG("%s: irqtype = %d\n", __func__, irqtype); + key = "label"; subsys_name = of_get_property(node, key, NULL); if (!subsys_name) { @@ -382,8 +385,8 @@ static int qiib_parse_node(struct device_node *node, struct qiib_dev *devp) } QIIB_DBG("%s: %s = %s\n", __func__, key, subsys_name); - if ((irqtype & IRQF_TRIGGER_HIGH) && !strcmp(devp->ssr_name, "mpss")) { - key = "qcom,irq-mask"; + if (irqtype & IRQF_TRIGGER_HIGH) { + key = "qcom,rx-irq-clr-mask"; ret = of_property_read_u32(node, key, &devp->irq_mask); if (ret) { QIIB_ERR("%s: missing key: %s\n", __func__, key); @@ -422,9 +425,6 @@ static int qiib_parse_node(struct device_node *node, struct qiib_dev *devp) goto ssr_reg_fail; } - irqtype = irqd_get_trigger_type(irq_get_irq_data(devp->irq_line)); - QIIB_DBG("%s: irqtype = %d\n", __func__, irqtype); - ret = request_irq(devp->irq_line, qiib_irq_handler, irqtype | IRQF_NO_SUSPEND, devp->dev_name, devp); |
