mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:02:20 +00:00
ae16f05c92
Introduce the advanced extended interrupt controllers (AVECINTC). This feature will allow each core to have 256 independent interrupt vectors and MSI interrupts can be independently routed to any vector on any CPU. The whole topology of irqchips in LoongArch machines looks like this if AVECINTC is supported: +-----+ +-----------------------+ +-------+ | IPI | --> | CPUINTC | <-- | Timer | +-----+ +-----------------------+ +-------+ ^ ^ ^ | | | +---------+ +----------+ +---------+ +-------+ | EIOINTC | | AVECINTC | | LIOINTC | <-- | UARTs | +---------+ +----------+ +---------+ +-------+ ^ ^ | | +---------+ +---------+ | PCH-PIC | | PCH-MSI | +---------+ +---------+ ^ ^ ^ | | | +---------+ +---------+ +---------+ | Devices | | PCH-LPC | | Devices | +---------+ +---------+ +---------+ ^ | +---------+ | Devices | +---------+ Co-developed-by: Jianmin Lv <lvjianmin@loongson.cn> Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn> Co-developed-by: Liupu Wang <wangliupu@loongson.cn> Signed-off-by: Liupu Wang <wangliupu@loongson.cn> Co-developed-by: Huacai Chen <chenhuacai@loongson.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn> Signed-off-by: Tianyang Zhang <zhangtianyang@loongson.cn> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/all/20240823104337.25577-2-zhangtianyang@loongson.cn
28 lines
933 B
C
28 lines
933 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2024 Loongson Technology Corporation Limited
|
|
*/
|
|
|
|
#ifndef _DRIVERS_IRQCHIP_IRQ_LOONGSON_H
|
|
#define _DRIVERS_IRQCHIP_IRQ_LOONGSON_H
|
|
|
|
int find_pch_pic(u32 gsi);
|
|
|
|
int liointc_acpi_init(struct irq_domain *parent,
|
|
struct acpi_madt_lio_pic *acpi_liointc);
|
|
int eiointc_acpi_init(struct irq_domain *parent,
|
|
struct acpi_madt_eio_pic *acpi_eiointc);
|
|
int avecintc_acpi_init(struct irq_domain *parent);
|
|
|
|
int htvec_acpi_init(struct irq_domain *parent,
|
|
struct acpi_madt_ht_pic *acpi_htvec);
|
|
int pch_lpc_acpi_init(struct irq_domain *parent,
|
|
struct acpi_madt_lpc_pic *acpi_pchlpc);
|
|
int pch_pic_acpi_init(struct irq_domain *parent,
|
|
struct acpi_madt_bio_pic *acpi_pchpic);
|
|
int pch_msi_acpi_init(struct irq_domain *parent,
|
|
struct acpi_madt_msi_pic *acpi_pchmsi);
|
|
int pch_msi_acpi_init_avec(struct irq_domain *parent);
|
|
|
|
#endif /* _DRIVERS_IRQCHIP_IRQ_LOONGSON_H */
|