mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 09:50:04 +00:00
![Tomasz Nowicki](/assets/img/avatar_default.png)
ACPI kernel uses MADT table for proper GIC initialization. It needs to parse GIC related subtables, collect CPU interface and distributor addresses and call driver initialization function (which is hardware abstraction agnostic). In a similar way, FDT initialize GICv1/2. NOTE: This commit allow to initialize GICv1/2 basic functionality. While now simple GICv2 init call is used, any further GIC features require generic infrastructure for proper ACPI irqchip initialization. That mechanism and stacked irqdomains to support GICv2 MSI/virtualization extension, GICv3/4 and its ITS are considered as next steps. CC: Jason Cooper <jason@lakedaemon.net> CC: Marc Zyngier <marc.zyngier@arm.com> CC: Thomas Gleixner <tglx@linutronix.de> Tested-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com> Tested-by: Yijing Wang <wangyijing@huawei.com> Tested-by: Mark Langsdorf <mlangsdo@redhat.com> Tested-by: Jon Masters <jcm@redhat.com> Tested-by: Timur Tabi <timur@codeaurora.org> Tested-by: Robert Richter <rrichter@cavium.com> Acked-by: Robert Richter <rrichter@cavium.com> Acked-by: Marc Zyngier <marc.zyngier@arm.com> Acked-by: Jason Cooper <jason@lakedaemon.net> Reviewed-by: Grant Likely <grant.likely@linaro.org> Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com>
31 lines
796 B
C
31 lines
796 B
C
/*
|
|
* Copyright (C) 2014, Linaro Ltd.
|
|
* Author: Tomasz Nowicki <tomasz.nowicki@linaro.org>
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef ARM_GIC_ACPI_H_
|
|
#define ARM_GIC_ACPI_H_
|
|
|
|
#ifdef CONFIG_ACPI
|
|
|
|
/*
|
|
* Hard code here, we can not get memory size from MADT (but FDT does),
|
|
* Actually no need to do that, because this size can be inferred
|
|
* from GIC spec.
|
|
*/
|
|
#define ACPI_GICV2_DIST_MEM_SIZE (SZ_4K)
|
|
#define ACPI_GIC_CPU_IF_MEM_SIZE (SZ_8K)
|
|
|
|
struct acpi_table_header;
|
|
|
|
int gic_v2_acpi_init(struct acpi_table_header *table);
|
|
void acpi_gic_init(void);
|
|
#else
|
|
static inline void acpi_gic_init(void) { }
|
|
#endif
|
|
|
|
#endif /* ARM_GIC_ACPI_H_ */
|