lkml.org 
[lkml]   [2022]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V15 01/15] ACPICA: MADT: Add LoongArch APICs support
    Date
    From: Huacai Chen <chenhuacai@loongson.cn>

    LoongArch-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 LoongArch-specific interrupt controllers have already
    been approved in the ECRs, and will be public in the next revision of
    ACPI Specification.

    Reference: https://mantis.uefi.org/mantis/view.php?id=2203
    Reference: https://mantis.uefi.org/mantis/view.php?id=2313

    Above links needs login(available for ASWG), so the following link(
    the ECR file for adding LoongArch APICs into ACPI spec) is provided
    for public:

    https://github.com/lvjianmin-loongson/acpica/blob/master/Add%20APIC%20Structures%20for%20Loongarch%20in%20MADT-rev3.pdf

    Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    ---
    include/acpi/actbl2.h | 127 +++++++++++++++++++++++++++++++++++++++++++++++++-
    1 file changed, 125 insertions(+), 2 deletions(-)

    diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
    index 655102b..323bdd6 100644
    --- a/include/acpi/actbl2.h
    +++ b/include/acpi/actbl2.h
    @@ -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,123 @@ struct acpi_madt_multiproc_wakeup_mailbox {

    #define ACPI_MP_WAKE_COMMAND_WAKEUP 1

    -/* 17: OEM data */
    +/* 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 */
    +};
    +
    +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 */
    +};
    +
    +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 */
    +};
    +
    +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 */
    +};
    +
    +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 */
    +};
    +
    +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 */
    +};
    +
    +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 */
    +};
    +
    +/* Core Interrupt Controller */
    +
    +struct acpi_madt_core_pic {
    + struct acpi_subtable_header header;
    + u8 version;
    + u32 processor_id;
    + u32 core_id;
    + u32 flags;
    +};
    +
    +/* Legacy I/O Interrupt Controller */
    +
    +struct acpi_madt_lio_pic {
    + struct acpi_subtable_header header;
    + u8 version;
    + u64 address;
    + u16 size;
    + u8 cascade[2];
    + u32 cascade_map[2];
    +};
    +
    +/* Extend I/O Interrupt Controller */
    +
    +struct acpi_madt_eio_pic {
    + struct acpi_subtable_header header;
    + u8 version;
    + u8 cascade;
    + u8 node;
    + u64 node_map;
    +};
    +
    +/* HT Interrupt Controller */
    +
    +struct acpi_madt_ht_pic {
    + struct acpi_subtable_header header;
    + u8 version;
    + u64 address;
    + u16 size;
    + u8 cascade[8];
    +};
    +
    +/* Bridge I/O Interrupt Controller */
    +
    +struct acpi_madt_bio_pic {
    + struct acpi_subtable_header header;
    + u8 version;
    + u64 address;
    + u16 size;
    + u16 id;
    + u16 gsi_base;
    +};
    +
    +/* MSI Interrupt Controller */
    +
    +struct acpi_madt_msi_pic {
    + struct acpi_subtable_header header;
    + u8 version;
    + u64 msg_address;
    + u32 start;
    + u32 count;
    +};
    +
    +/* LPC Interrupt Controller */
    +
    +struct acpi_madt_lpc_pic {
    + struct acpi_subtable_header header;
    + u8 version;
    + u64 address;
    + u16 size;
    + u8 cascade;
    +};
    +
    +/* 80: OEM data */

    struct acpi_madt_oem_data {
    u8 oem_data[0];
    --
    1.8.3.1
    \
     
     \ /
      Last update: 2022-07-15 09:07    [W:3.141 / U:0.424 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site