1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __QCOM_IRQ_H
4 #define __QCOM_IRQ_H
5 
6 #include <linux/irqdomain.h>
7 
8 #define GPIO_NO_WAKE_IRQ	~0U
9 
10 /*
11  * QCOM specific IRQ domain flags that distinguishes the handling of wakeup
12  * capable interrupts by different interrupt controllers.
13  *
14  * IRQ_DOMAIN_FLAG_QCOM_PDC_WAKEUP: Line must be masked at TLMM and the
15  *                                  interrupt configuration is done at PDC
16  * IRQ_DOMAIN_FLAG_QCOM_MPM_WAKEUP: Interrupt configuration is handled at TLMM
17  */
18 #define IRQ_DOMAIN_FLAG_QCOM_PDC_WAKEUP		(IRQ_DOMAIN_FLAG_NONCORE << 0)
19 #define IRQ_DOMAIN_FLAG_QCOM_MPM_WAKEUP		(IRQ_DOMAIN_FLAG_NONCORE << 1)
20 
21 /**
22  * irq_domain_qcom_handle_wakeup: Return if the domain handles interrupt
23  *                                configuration
24  * @d: irq domain
25  *
26  * This QCOM specific irq domain call returns if the interrupt controller
27  * requires the interrupt be masked at the child interrupt controller.
28  */
irq_domain_qcom_handle_wakeup(const struct irq_domain * d)29 static inline bool irq_domain_qcom_handle_wakeup(const struct irq_domain *d)
30 {
31 	return (d->flags & IRQ_DOMAIN_FLAG_QCOM_PDC_WAKEUP);
32 }
33 
34 #endif
35