diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/irq.h | 6 | ||||
| -rw-r--r-- | include/linux/irqchip/arm-gic-v3.h | 4 | ||||
| -rw-r--r-- | include/linux/irqchip/ingenic.h | 14 | ||||
| -rw-r--r-- | include/linux/irqdomain.h | 1 | ||||
| -rw-r--r-- | include/linux/soc/qcom/irq.h | 34 | 
5 files changed, 43 insertions, 16 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index fb301cf29148..7853eb9301f2 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -610,6 +610,12 @@ extern int irq_chip_pm_put(struct irq_data *data);  #ifdef	CONFIG_IRQ_DOMAIN_HIERARCHY  extern void handle_fasteoi_ack_irq(struct irq_desc *desc);  extern void handle_fasteoi_mask_irq(struct irq_desc *desc); +extern int irq_chip_set_parent_state(struct irq_data *data, +				     enum irqchip_irq_state which, +				     bool val); +extern int irq_chip_get_parent_state(struct irq_data *data, +				     enum irqchip_irq_state which, +				     bool *state);  extern void irq_chip_enable_parent(struct irq_data *data);  extern void irq_chip_disable_parent(struct irq_data *data);  extern void irq_chip_ack_parent(struct irq_data *data); diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h index 5cc10cf7cb3e..b6514e8893bf 100644 --- a/include/linux/irqchip/arm-gic-v3.h +++ b/include/linux/irqchip/arm-gic-v3.h @@ -334,10 +334,10 @@  #define GITS_TYPER_PLPIS		(1UL << 0)  #define GITS_TYPER_VLPIS		(1UL << 1)  #define GITS_TYPER_ITT_ENTRY_SIZE_SHIFT	4 -#define GITS_TYPER_ITT_ENTRY_SIZE(r)	((((r) >> GITS_TYPER_ITT_ENTRY_SIZE_SHIFT) & 0xf) + 1) +#define GITS_TYPER_ITT_ENTRY_SIZE	GENMASK_ULL(7, 4)  #define GITS_TYPER_IDBITS_SHIFT		8  #define GITS_TYPER_DEVBITS_SHIFT	13 -#define GITS_TYPER_DEVBITS(r)		((((r) >> GITS_TYPER_DEVBITS_SHIFT) & 0x1f) + 1) +#define GITS_TYPER_DEVBITS		GENMASK_ULL(17, 13)  #define GITS_TYPER_PTA			(1UL << 19)  #define GITS_TYPER_HCC_SHIFT		24  #define GITS_TYPER_HCC(r)		(((r) >> GITS_TYPER_HCC_SHIFT) & 0xff) diff --git a/include/linux/irqchip/ingenic.h b/include/linux/irqchip/ingenic.h deleted file mode 100644 index 146558853ad4..000000000000 --- a/include/linux/irqchip/ingenic.h +++ /dev/null @@ -1,14 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ -/* - *  Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de> - */ - -#ifndef __LINUX_IRQCHIP_INGENIC_H__ -#define __LINUX_IRQCHIP_INGENIC_H__ - -#include <linux/irq.h> - -extern void ingenic_intc_irq_suspend(struct irq_data *data); -extern void ingenic_intc_irq_resume(struct irq_data *data); - -#endif diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index 583e7abd07f9..3c340dbc5a1f 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h @@ -83,6 +83,7 @@ enum irq_domain_bus_token {  	DOMAIN_BUS_IPI,  	DOMAIN_BUS_FSL_MC_MSI,  	DOMAIN_BUS_TI_SCI_INTA_MSI, +	DOMAIN_BUS_WAKEUP,  };  /** diff --git a/include/linux/soc/qcom/irq.h b/include/linux/soc/qcom/irq.h new file mode 100644 index 000000000000..9e1ece58e55b --- /dev/null +++ b/include/linux/soc/qcom/irq.h @@ -0,0 +1,34 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef __QCOM_IRQ_H +#define __QCOM_IRQ_H + +#include <linux/irqdomain.h> + +#define GPIO_NO_WAKE_IRQ	~0U + +/** + * QCOM specific IRQ domain flags that distinguishes the handling of wakeup + * capable interrupts by different interrupt controllers. + * + * IRQ_DOMAIN_FLAG_QCOM_PDC_WAKEUP: Line must be masked at TLMM and the + *                                  interrupt configuration is done at PDC + * IRQ_DOMAIN_FLAG_QCOM_MPM_WAKEUP: Interrupt configuration is handled at TLMM + */ +#define IRQ_DOMAIN_FLAG_QCOM_PDC_WAKEUP		(IRQ_DOMAIN_FLAG_NONCORE << 0) +#define IRQ_DOMAIN_FLAG_QCOM_MPM_WAKEUP		(IRQ_DOMAIN_FLAG_NONCORE << 1) + +/** + * irq_domain_qcom_handle_wakeup: Return if the domain handles interrupt + *                                configuration + * @d: irq domain + * + * This QCOM specific irq domain call returns if the interrupt controller + * requires the interrupt be masked at the child interrupt controller. + */ +static inline bool irq_domain_qcom_handle_wakeup(const struct irq_domain *d) +{ +	return (d->flags & IRQ_DOMAIN_FLAG_QCOM_PDC_WAKEUP); +} + +#endif  | 

