162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2002 ARM Limited, All Rights Reserved.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef _IRQ_GIC_COMMON_H
762306a36Sopenharmony_ci#define _IRQ_GIC_COMMON_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/of.h>
1062306a36Sopenharmony_ci#include <linux/irqdomain.h>
1162306a36Sopenharmony_ci#include <linux/irqchip/arm-gic-common.h>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cistruct gic_quirk {
1462306a36Sopenharmony_ci	const char *desc;
1562306a36Sopenharmony_ci	const char *compatible;
1662306a36Sopenharmony_ci	const char *property;
1762306a36Sopenharmony_ci	bool (*init)(void *data);
1862306a36Sopenharmony_ci	u32 iidr;
1962306a36Sopenharmony_ci	u32 mask;
2062306a36Sopenharmony_ci};
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciint gic_configure_irq(unsigned int irq, unsigned int type,
2362306a36Sopenharmony_ci                       void __iomem *base, void (*sync_access)(void));
2462306a36Sopenharmony_civoid gic_dist_config(void __iomem *base, int gic_irqs,
2562306a36Sopenharmony_ci		     void (*sync_access)(void));
2662306a36Sopenharmony_civoid gic_cpu_config(void __iomem *base, int nr, void (*sync_access)(void));
2762306a36Sopenharmony_civoid gic_enable_quirks(u32 iidr, const struct gic_quirk *quirks,
2862306a36Sopenharmony_ci		void *data);
2962306a36Sopenharmony_civoid gic_enable_of_quirks(const struct device_node *np,
3062306a36Sopenharmony_ci			  const struct gic_quirk *quirks, void *data);
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci#define RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING    (1 << 0)
3362306a36Sopenharmony_ci#define RDIST_FLAGS_RD_TABLES_PREALLOCATED     (1 << 1)
3462306a36Sopenharmony_ci#define RDIST_FLAGS_FORCE_NON_SHAREABLE        (1 << 2)
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci#endif /* _IRQ_GIC_COMMON_H */
37