diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c index 069b06584969..2b051b54ae4b 100644 --- a/drivers/rpmsg/qcom_glink_native.c +++ b/drivers/rpmsg/qcom_glink_native.c @@ -1974,6 +1974,8 @@ struct qcom_glink *qcom_glink_native_probe(struct device *dev, bool intentless) { struct qcom_glink *glink; + unsigned long irqflags; + bool vm_support; u32 *arr; int size; int irq; @@ -2032,9 +2034,17 @@ struct qcom_glink *qcom_glink_native_probe(struct device *dev, dev_err(dev, "failed to register early notif %d\n", ret); irq = of_irq_get(dev->of_node, 0); + + /* Use different irq flag option in case of gvm */ + vm_support = of_property_read_bool(dev->of_node, "vm-support"); + if (vm_support) + irqflags = IRQF_TRIGGER_RISING; + else + irqflags = IRQF_NO_SUSPEND | IRQF_SHARED; + ret = devm_request_irq(dev, irq, qcom_glink_native_intr, - IRQF_NO_SUSPEND | IRQF_SHARED, + irqflags, "glink-native", glink); if (ret) { dev_err(dev, "failed to request IRQ\n");