Commit 4a5f74fa authored by Jing Li's avatar Jing Li Committed by guzitao
Browse files

sw64: acpi: disable INTC initialization via ACPI MADT table

Sunway inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IBDJNZ



--------------------------------

Currently, ACPI MADT table for SW64 is not supported. Remove related
codes to avoid erroneous interrupt controller initialization.

Signed-off-by: default avatarJing Li <jingli@wxiat.com>
Reviewed-by: default avatarHe Sheng <hesheng@wxiat.com>
Signed-off-by: default avatarGu Zitao <guzitao@wxiat.com>
parent 2b995cf3
Loading
Loading
Loading
Loading
+0 −60
Original line number Diff line number Diff line
@@ -34,66 +34,6 @@ static const struct irq_domain_ops sw64_intc_domain_ops = {
	.map = sw64_intc_domain_map,
};

#ifdef CONFIG_ACPI
static int __init
intc_parse_madt(union acpi_subtable_headers *header,
		       const unsigned long end)
{
	struct acpi_madt_io_sapic *its_entry;
	static struct irq_domain *root_domain;
	int intc_irqs = 8, irq_base = NR_IRQS_LEGACY;
	irq_hw_number_t hwirq_base = 0;
	int irq_start = -1;

	its_entry = (struct acpi_madt_io_sapic *)header;

	intc_irqs -= hwirq_base; /* calculate # of irqs to allocate */

	irq_base = irq_alloc_descs(irq_start, 16, intc_irqs,
			numa_node_id());
	if (irq_base < 0) {
		WARN(1, "Cannot allocate irq_descs @ IRQ%d, assuming pre-allocated\n",
				irq_start);
		irq_base = irq_start;
	}

	root_domain = irq_domain_add_legacy(NULL, intc_irqs, irq_base,
			hwirq_base, &sw64_intc_domain_ops, NULL);

	if (!root_domain)
		pr_err("Failed to create irqdomain");

	irq_set_default_host(root_domain);

	sw64_io_write(0, MCU_DVC_INT_EN, 0xff);

	return 0;
}

static int __init acpi_intc_init(void)
{
	int count = 0;

	count = acpi_table_parse_madt(ACPI_MADT_TYPE_IO_SAPIC,
			      intc_parse_madt, 0);

	if (count <= 0) {
		pr_err("No valid intc entries exist\n");
		return -EINVAL;
	}
	return 0;
}

static int __init intc_init(void)
{
	acpi_intc_init();

	return 0;
}

subsys_initcall(intc_init);
#endif

#ifdef CONFIG_OF
static struct irq_domain *root_domain;