mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	ACPICA: MADT: Add loong_arch-specific APICs support
ACPICA commit 1dc530059a3e6202e941e6a9478cf30f092bfb47 loong_arch-specific interrupt controllers (similar to APIC) are added in the next revision of ACPI Specification (current revision is 6.4), which including CORE_PIC (CPUINTC), LIO_PIC (LIOINTC), EIO_PIC (EIOINTC), HT_PIC (HTVECINTC), BIO_PIC (PCHINTC), LPC_PIC (PCHLPC) and MSI_PIC (PCHMSI). This patch add their definition. ACPI changes of loong_arch-specific interrupt controllers have already been approved in the ECRs, and will be public in the next revision of ACPI Specification. Link: https://github.com/acpica/acpica/commit/1dc53005 Link: https://mantis.uefi.org/mantis/view.php?id=2203 Link: https://mantis.uefi.org/mantis/view.php?id=2313 Co-developed-by: Jianmin Lv <lvjianmin@loongson.cn> Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn> Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
		
							parent
							
								
									5620fe6416
								
							
						
					
					
						commit
						60f2096b59
					
				
					 1 changed files with 137 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -865,7 +865,14 @@ enum acpi_madt_type {
 | 
			
		|||
	ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14,
 | 
			
		||||
	ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15,
 | 
			
		||||
	ACPI_MADT_TYPE_MULTIPROC_WAKEUP = 16,
 | 
			
		||||
	ACPI_MADT_TYPE_RESERVED = 17,	/* 17 to 0x7F are reserved */
 | 
			
		||||
	ACPI_MADT_TYPE_CORE_PIC = 17,
 | 
			
		||||
	ACPI_MADT_TYPE_LIO_PIC = 18,
 | 
			
		||||
	ACPI_MADT_TYPE_HT_PIC = 19,
 | 
			
		||||
	ACPI_MADT_TYPE_EIO_PIC = 20,
 | 
			
		||||
	ACPI_MADT_TYPE_MSI_PIC = 21,
 | 
			
		||||
	ACPI_MADT_TYPE_BIO_PIC = 22,
 | 
			
		||||
	ACPI_MADT_TYPE_LPC_PIC = 23,
 | 
			
		||||
	ACPI_MADT_TYPE_RESERVED = 24,	/* 24 to 0x7F are reserved */
 | 
			
		||||
	ACPI_MADT_TYPE_OEM_RESERVED = 0x80	/* 0x80 to 0xFF are reserved for OEM use */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1096,7 +1103,135 @@ struct acpi_madt_multiproc_wakeup_mailbox {
 | 
			
		|||
 | 
			
		||||
#define ACPI_MP_WAKE_COMMAND_WAKEUP    1
 | 
			
		||||
 | 
			
		||||
/* 17: OEM data */
 | 
			
		||||
/* 17: CPU Core Interrupt Controller (ACPI 6.5) */
 | 
			
		||||
 | 
			
		||||
struct acpi_madt_core_pic {
 | 
			
		||||
	struct acpi_subtable_header header;
 | 
			
		||||
	u8 version;
 | 
			
		||||
	u32 processor_id;
 | 
			
		||||
	u32 core_id;
 | 
			
		||||
	u32 flags;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Values for Version field above */
 | 
			
		||||
 | 
			
		||||
enum acpi_madt_core_pic_version {
 | 
			
		||||
	ACPI_MADT_CORE_PIC_VERSION_NONE = 0,
 | 
			
		||||
	ACPI_MADT_CORE_PIC_VERSION_V1 = 1,
 | 
			
		||||
	ACPI_MADT_CORE_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* 18: Legacy I/O Interrupt Controller (ACPI 6.5) */
 | 
			
		||||
 | 
			
		||||
struct acpi_madt_lio_pic {
 | 
			
		||||
	struct acpi_subtable_header header;
 | 
			
		||||
	u8 version;
 | 
			
		||||
	u64 address;
 | 
			
		||||
	u16 size;
 | 
			
		||||
	u8 cascade[2];
 | 
			
		||||
	u32 cascade_map[2];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Values for Version field above */
 | 
			
		||||
 | 
			
		||||
enum acpi_madt_lio_pic_version {
 | 
			
		||||
	ACPI_MADT_LIO_PIC_VERSION_NONE = 0,
 | 
			
		||||
	ACPI_MADT_LIO_PIC_VERSION_V1 = 1,
 | 
			
		||||
	ACPI_MADT_LIO_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* 19: HT Interrupt Controller (ACPI 6.5) */
 | 
			
		||||
 | 
			
		||||
struct acpi_madt_ht_pic {
 | 
			
		||||
	struct acpi_subtable_header header;
 | 
			
		||||
	u8 version;
 | 
			
		||||
	u64 address;
 | 
			
		||||
	u16 size;
 | 
			
		||||
	u8 cascade[8];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Values for Version field above */
 | 
			
		||||
 | 
			
		||||
enum acpi_madt_ht_pic_version {
 | 
			
		||||
	ACPI_MADT_HT_PIC_VERSION_NONE = 0,
 | 
			
		||||
	ACPI_MADT_HT_PIC_VERSION_V1 = 1,
 | 
			
		||||
	ACPI_MADT_HT_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* 20: Extend I/O Interrupt Controller (ACPI 6.5) */
 | 
			
		||||
 | 
			
		||||
struct acpi_madt_eio_pic {
 | 
			
		||||
	struct acpi_subtable_header header;
 | 
			
		||||
	u8 version;
 | 
			
		||||
	u8 cascade;
 | 
			
		||||
	u8 node;
 | 
			
		||||
	u64 node_map;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Values for Version field above */
 | 
			
		||||
 | 
			
		||||
enum acpi_madt_eio_pic_version {
 | 
			
		||||
	ACPI_MADT_EIO_PIC_VERSION_NONE = 0,
 | 
			
		||||
	ACPI_MADT_EIO_PIC_VERSION_V1 = 1,
 | 
			
		||||
	ACPI_MADT_EIO_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* 21: MSI Interrupt Controller (ACPI 6.5) */
 | 
			
		||||
 | 
			
		||||
struct acpi_madt_msi_pic {
 | 
			
		||||
	struct acpi_subtable_header header;
 | 
			
		||||
	u8 version;
 | 
			
		||||
	u64 msg_address;
 | 
			
		||||
	u32 start;
 | 
			
		||||
	u32 count;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Values for Version field above */
 | 
			
		||||
 | 
			
		||||
enum acpi_madt_msi_pic_version {
 | 
			
		||||
	ACPI_MADT_MSI_PIC_VERSION_NONE = 0,
 | 
			
		||||
	ACPI_MADT_MSI_PIC_VERSION_V1 = 1,
 | 
			
		||||
	ACPI_MADT_MSI_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* 22: Bridge I/O Interrupt Controller (ACPI 6.5) */
 | 
			
		||||
 | 
			
		||||
struct acpi_madt_bio_pic {
 | 
			
		||||
	struct acpi_subtable_header header;
 | 
			
		||||
	u8 version;
 | 
			
		||||
	u64 address;
 | 
			
		||||
	u16 size;
 | 
			
		||||
	u16 id;
 | 
			
		||||
	u16 gsi_base;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Values for Version field above */
 | 
			
		||||
 | 
			
		||||
enum acpi_madt_bio_pic_version {
 | 
			
		||||
	ACPI_MADT_BIO_PIC_VERSION_NONE = 0,
 | 
			
		||||
	ACPI_MADT_BIO_PIC_VERSION_V1 = 1,
 | 
			
		||||
	ACPI_MADT_BIO_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* 23: LPC Interrupt Controller (ACPI 6.5) */
 | 
			
		||||
 | 
			
		||||
struct acpi_madt_lpc_pic {
 | 
			
		||||
	struct acpi_subtable_header header;
 | 
			
		||||
	u8 version;
 | 
			
		||||
	u64 address;
 | 
			
		||||
	u16 size;
 | 
			
		||||
	u8 cascade;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Values for Version field above */
 | 
			
		||||
 | 
			
		||||
enum acpi_madt_lpc_pic_version {
 | 
			
		||||
	ACPI_MADT_LPC_PIC_VERSION_NONE = 0,
 | 
			
		||||
	ACPI_MADT_LPC_PIC_VERSION_V1 = 1,
 | 
			
		||||
	ACPI_MADT_LPC_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* 80: OEM data */
 | 
			
		||||
 | 
			
		||||
struct acpi_madt_oem_data {
 | 
			
		||||
	u8 oem_data[0];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue