Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
[cascardo/linux.git] / include / acpi / actbl3.h
index ddf5e66..ebc1f4f 100644 (file)
@@ -184,7 +184,7 @@ struct acpi_table_fpdt {
        struct acpi_table_header header;        /* Common ACPI table header */
 };
 
-/* FPDT subtable header */
+/* FPDT subtable header (Performance Record Structure) */
 
 struct acpi_fpdt_header {
        u16 type;
@@ -205,19 +205,15 @@ enum acpi_fpdt_type {
 
 /* 0: Firmware Basic Boot Performance Record */
 
-struct acpi_fpdt_boot {
+struct acpi_fpdt_boot_pointer {
        struct acpi_fpdt_header header;
        u8 reserved[4];
-       u64 reset_end;
-       u64 load_start;
-       u64 startup_start;
-       u64 exit_services_entry;
-       u64 exit_services_exit;
+       u64 address;
 };
 
 /* 1: S3 Performance Table Pointer Record */
 
-struct acpi_fpdt_s3pt_ptr {
+struct acpi_fpdt_s3pt_pointer {
        struct acpi_fpdt_header header;
        u8 reserved[4];
        u64 address;
@@ -225,7 +221,7 @@ struct acpi_fpdt_s3pt_ptr {
 
 /*
  * S3PT - S3 Performance Table. This table is pointed to by the
- * FPDT S3 Pointer Record above.
+ * S3 Pointer Record above.
  */
 struct acpi_table_s3pt {
        u8 signature[4];        /* "S3PT" */
@@ -233,34 +229,43 @@ struct acpi_table_s3pt {
 };
 
 /*
- * S3PT Subtables
+ * S3PT Subtables (Not part of the actual FPDT)
  */
-struct acpi_s3pt_header {
-       u16 type;
-       u8 length;
-       u8 revision;
-};
 
-/* Values for Type field above */
+/* Values for Type field in S3PT header */
 
 enum acpi_s3pt_type {
        ACPI_S3PT_TYPE_RESUME = 0,
-       ACPI_S3PT_TYPE_SUSPEND = 1
+       ACPI_S3PT_TYPE_SUSPEND = 1,
+       ACPI_FPDT_BOOT_PERFORMANCE = 2
 };
 
 struct acpi_s3pt_resume {
-       struct acpi_s3pt_header header;
+       struct acpi_fpdt_header header;
        u32 resume_count;
        u64 full_resume;
        u64 average_resume;
 };
 
 struct acpi_s3pt_suspend {
-       struct acpi_s3pt_header header;
+       struct acpi_fpdt_header header;
        u64 suspend_start;
        u64 suspend_end;
 };
 
+/*
+ * FPDT Boot Performance Record (Not part of the actual FPDT)
+ */
+struct acpi_fpdt_boot {
+       struct acpi_fpdt_header header;
+       u8 reserved[4];
+       u64 reset_end;
+       u64 load_start;
+       u64 startup_start;
+       u64 exit_services_entry;
+       u64 exit_services_exit;
+};
+
 /*******************************************************************************
  *
  * GTDT - Generic Timer Description Table (ACPI 5.1)
@@ -476,7 +481,8 @@ struct acpi_table_pcct {
 enum acpi_pcct_type {
        ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0,
        ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1,
-       ACPI_PCCT_TYPE_RESERVED = 2     /* 2 and greater are reserved */
+       ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 = 2,   /* ACPI 6.1 */
+       ACPI_PCCT_TYPE_RESERVED = 3     /* 3 and greater are reserved */
 };
 
 /*
@@ -515,6 +521,26 @@ struct acpi_pcct_hw_reduced {
        u16 min_turnaround_time;
 };
 
+/* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */
+
+struct acpi_pcct_hw_reduced_type2 {
+       struct acpi_subtable_header header;
+       u32 doorbell_interrupt;
+       u8 flags;
+       u8 reserved;
+       u64 base_address;
+       u64 length;
+       struct acpi_generic_address doorbell_register;
+       u64 preserve_mask;
+       u64 write_mask;
+       u32 latency;
+       u32 max_access_rate;
+       u16 min_turnaround_time;
+       struct acpi_generic_address doorbell_ack_register;
+       u64 ack_preserve_mask;
+       u64 ack_write_mask;
+};
+
 /* Values for doorbell flags above */
 
 #define ACPI_PCCT_INTERRUPT_POLARITY    (1)