502d6df11a
For now, the firmware tables are parsed 2 times: once in the GIC drivers, the other timer when initializing the vGIC. It means code duplication and make more tedious to add the support for another firmware table (like ACPI). Introduce a new structure and set of helpers to get/set the virtual GIC information. Also fill up the structure for GICv2. Signed-off-by: Julien Grall <julien.grall@arm.com> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
42 lines
1.3 KiB
C
42 lines
1.3 KiB
C
/*
|
|
* Copyright (C) 2002 ARM Limited, All Rights Reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef _IRQ_GIC_COMMON_H
|
|
#define _IRQ_GIC_COMMON_H
|
|
|
|
#include <linux/of.h>
|
|
#include <linux/irqdomain.h>
|
|
#include <linux/irqchip/arm-gic-common.h>
|
|
|
|
struct gic_quirk {
|
|
const char *desc;
|
|
void (*init)(void *data);
|
|
u32 iidr;
|
|
u32 mask;
|
|
};
|
|
|
|
int gic_configure_irq(unsigned int irq, unsigned int type,
|
|
void __iomem *base, void (*sync_access)(void));
|
|
void gic_dist_config(void __iomem *base, int gic_irqs,
|
|
void (*sync_access)(void));
|
|
void gic_cpu_config(void __iomem *base, void (*sync_access)(void));
|
|
void gic_enable_quirks(u32 iidr, const struct gic_quirk *quirks,
|
|
void *data);
|
|
|
|
void gic_set_kvm_info(const struct gic_kvm_info *info);
|
|
|
|
#endif /* _IRQ_GIC_COMMON_H */
|