^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Name: acrestyp.h - Defines, types, and structures for resource descriptors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (C) 2000 - 2020, Intel Corp.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) *****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #ifndef __ACRESTYP_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define __ACRESTYP_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) * Definitions for Resource Attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) typedef u16 acpi_rs_length; /* Resource Length field is fixed at 16 bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) typedef u32 acpi_rsdesc_size; /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) * Memory Attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define ACPI_READ_ONLY_MEMORY (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define ACPI_READ_WRITE_MEMORY (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define ACPI_NON_CACHEABLE_MEMORY (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define ACPI_CACHABLE_MEMORY (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define ACPI_WRITE_COMBINING_MEMORY (u8) 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define ACPI_PREFETCHABLE_MEMORY (u8) 0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) /*! [Begin] no source code translation */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) * IO Attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) /*! [End] no source code translation !*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define ACPI_NON_ISA_ONLY_RANGES (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define ACPI_ISA_ONLY_RANGES (u8) 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) /* Type of translation - 1=Sparse, 0=Dense */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #define ACPI_SPARSE_TRANSLATION (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) * IO Port Descriptor Decode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define ACPI_DECODE_10 (u8) 0x00 /* 10-bit IO address decode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #define ACPI_DECODE_16 (u8) 0x01 /* 16-bit IO address decode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) * Interrupt attributes - used in multiple descriptors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) /* Triggering */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define ACPI_LEVEL_SENSITIVE (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #define ACPI_EDGE_SENSITIVE (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) /* Polarity */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #define ACPI_ACTIVE_HIGH (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) #define ACPI_ACTIVE_LOW (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) #define ACPI_ACTIVE_BOTH (u8) 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) /* Sharing */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) #define ACPI_EXCLUSIVE (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #define ACPI_SHARED (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) /* Wake */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define ACPI_NOT_WAKE_CAPABLE (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #define ACPI_WAKE_CAPABLE (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) * DMA Attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) #define ACPI_COMPATIBILITY (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) #define ACPI_TYPE_A (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) #define ACPI_TYPE_B (u8) 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) #define ACPI_TYPE_F (u8) 0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) #define ACPI_NOT_BUS_MASTER (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) #define ACPI_BUS_MASTER (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) #define ACPI_TRANSFER_8 (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) #define ACPI_TRANSFER_8_16 (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #define ACPI_TRANSFER_16 (u8) 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) * Start Dependent Functions Priority definitions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #define ACPI_GOOD_CONFIGURATION (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) #define ACPI_ACCEPTABLE_CONFIGURATION (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) #define ACPI_SUB_OPTIMAL_CONFIGURATION (u8) 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) * 16, 32 and 64-bit Address Descriptor resource types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define ACPI_MEMORY_RANGE (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define ACPI_IO_RANGE (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define ACPI_BUS_NUMBER_RANGE (u8) 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define ACPI_ADDRESS_NOT_FIXED (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define ACPI_ADDRESS_FIXED (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define ACPI_POS_DECODE (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define ACPI_SUB_DECODE (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) /* Producer/Consumer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define ACPI_PRODUCER (u8) 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define ACPI_CONSUMER (u8) 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) * If possible, pack the following structures to byte alignment
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #pragma pack(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) /* UUID data structures for use in vendor-defined resource descriptors */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) struct acpi_uuid {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) u8 data[ACPI_UUID_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) struct acpi_vendor_uuid {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) u8 subtype;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) u8 data[ACPI_UUID_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) * Structures used to describe device resources
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) struct acpi_resource_irq {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) u8 descriptor_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) u8 triggering;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) u8 polarity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) u8 shareable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) u8 wake_capable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) u8 interrupt_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) u8 interrupts[1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) struct acpi_resource_dma {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) u8 type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) u8 bus_master;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) u8 transfer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) u8 channel_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) u8 channels[1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) struct acpi_resource_start_dependent {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) u8 descriptor_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) u8 compatibility_priority;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) u8 performance_robustness;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) * The END_DEPENDENT_FUNCTIONS_RESOURCE struct is not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) * needed because it has no fields
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) struct acpi_resource_io {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) u8 io_decode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) u8 alignment;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) u8 address_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) u16 minimum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) u16 maximum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) struct acpi_resource_fixed_io {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) u16 address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) u8 address_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) struct acpi_resource_fixed_dma {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) u16 request_lines;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) u16 channels;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) u8 width;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) /* Values for Width field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) #define ACPI_DMA_WIDTH8 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) #define ACPI_DMA_WIDTH16 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) #define ACPI_DMA_WIDTH32 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) #define ACPI_DMA_WIDTH64 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) #define ACPI_DMA_WIDTH128 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) #define ACPI_DMA_WIDTH256 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) struct acpi_resource_vendor {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) u16 byte_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) u8 byte_data[1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) /* Vendor resource with UUID info (introduced in ACPI 3.0) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) struct acpi_resource_vendor_typed {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) u16 byte_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) u8 uuid_subtype;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) u8 uuid[ACPI_UUID_LENGTH];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) u8 byte_data[1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) struct acpi_resource_end_tag {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) u8 checksum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) struct acpi_resource_memory24 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) u8 write_protect;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) u16 minimum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) u16 maximum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) u16 alignment;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) u16 address_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) struct acpi_resource_memory32 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) u8 write_protect;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) u32 minimum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) u32 maximum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) u32 alignment;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) u32 address_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) struct acpi_resource_fixed_memory32 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) u8 write_protect;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) u32 address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) u32 address_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) struct acpi_memory_attribute {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) u8 write_protect;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) u8 caching;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) u8 range_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) u8 translation;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) struct acpi_io_attribute {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) u8 range_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) u8 translation;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) u8 translation_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) u8 reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) union acpi_resource_attribute {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) struct acpi_memory_attribute mem;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) struct acpi_io_attribute io;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) /* Used for the *word_space macros */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) u8 type_specific;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) struct acpi_resource_label {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) u16 string_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) char *string_ptr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) struct acpi_resource_source {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) u8 index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) u16 string_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) char *string_ptr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) /* Fields common to all address descriptors, 16/32/64 bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) #define ACPI_RESOURCE_ADDRESS_COMMON \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) u8 resource_type; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) u8 producer_consumer; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) u8 decode; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) u8 min_address_fixed; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) u8 max_address_fixed; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) union acpi_resource_attribute info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) struct acpi_address16_attribute {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) u16 granularity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) u16 minimum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) u16 maximum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) u16 translation_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) u16 address_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) struct acpi_address32_attribute {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) u32 granularity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) u32 minimum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) u32 maximum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) u32 translation_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) u32 address_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) struct acpi_address64_attribute {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) u64 granularity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) u64 minimum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) u64 maximum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) u64 translation_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) u64 address_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) struct acpi_resource_address {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) ACPI_RESOURCE_ADDRESS_COMMON};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) struct acpi_resource_address16 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address16_attribute address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) struct acpi_resource_source resource_source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) struct acpi_resource_address32 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address32_attribute address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) struct acpi_resource_source resource_source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) struct acpi_resource_address64 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address64_attribute address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) struct acpi_resource_source resource_source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) struct acpi_resource_extended_address64 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) ACPI_RESOURCE_ADDRESS_COMMON u8 revision_ID;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) struct acpi_address64_attribute address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) u64 type_specific;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) struct acpi_resource_extended_irq {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) u8 producer_consumer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) u8 triggering;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) u8 polarity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) u8 shareable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) u8 wake_capable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) u8 interrupt_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) struct acpi_resource_source resource_source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) u32 interrupts[1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) struct acpi_resource_generic_register {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) u8 space_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) u8 bit_width;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) u8 bit_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) u8 access_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) u64 address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) struct acpi_resource_gpio {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) u8 revision_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) u8 connection_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) u8 producer_consumer; /* For values, see Producer/Consumer above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) u8 pin_config;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) u8 shareable; /* For values, see Interrupt Attributes above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) u8 wake_capable; /* For values, see Interrupt Attributes above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) u8 io_restriction;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) u8 triggering; /* For values, see Interrupt Attributes above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) u8 polarity; /* For values, see Interrupt Attributes above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) u16 drive_strength;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) u16 debounce_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) u16 pin_table_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) u16 vendor_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) struct acpi_resource_source resource_source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) u16 *pin_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) u8 *vendor_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) /* Values for GPIO connection_type field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) #define ACPI_RESOURCE_GPIO_TYPE_INT 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) #define ACPI_RESOURCE_GPIO_TYPE_IO 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) /* Values for pin_config field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) #define ACPI_PIN_CONFIG_DEFAULT 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) #define ACPI_PIN_CONFIG_PULLUP 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) #define ACPI_PIN_CONFIG_PULLDOWN 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) #define ACPI_PIN_CONFIG_NOPULL 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) /* Values for io_restriction field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) #define ACPI_IO_RESTRICT_NONE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) #define ACPI_IO_RESTRICT_INPUT 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) #define ACPI_IO_RESTRICT_OUTPUT 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) #define ACPI_IO_RESTRICT_NONE_PRESERVE 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) /* Common structure for I2C, SPI, and UART serial descriptors */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) #define ACPI_RESOURCE_SERIAL_COMMON \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) u8 revision_id; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) u8 type; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) u8 producer_consumer; /* For values, see Producer/Consumer above */\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) u8 slave_mode; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) u8 connection_sharing; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) u8 type_revision_id; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) u16 type_data_length; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) u16 vendor_length; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) struct acpi_resource_source resource_source; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) u8 *vendor_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) struct acpi_resource_common_serialbus {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) ACPI_RESOURCE_SERIAL_COMMON};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) /* Values for the Type field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) #define ACPI_RESOURCE_SERIAL_TYPE_I2C 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) #define ACPI_RESOURCE_SERIAL_TYPE_SPI 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) #define ACPI_RESOURCE_SERIAL_TYPE_UART 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) /* Values for slave_mode field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) #define ACPI_CONTROLLER_INITIATED 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) #define ACPI_DEVICE_INITIATED 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) struct acpi_resource_i2c_serialbus {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) ACPI_RESOURCE_SERIAL_COMMON u8 access_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) u16 slave_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) u32 connection_speed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) /* Values for access_mode field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) #define ACPI_I2C_7BIT_MODE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) #define ACPI_I2C_10BIT_MODE 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) struct acpi_resource_spi_serialbus {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) ACPI_RESOURCE_SERIAL_COMMON u8 wire_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) u8 device_polarity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) u8 data_bit_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) u8 clock_phase;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) u8 clock_polarity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) u16 device_selection;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) u32 connection_speed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) /* Values for wire_mode field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) #define ACPI_SPI_4WIRE_MODE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) #define ACPI_SPI_3WIRE_MODE 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) /* Values for device_polarity field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) #define ACPI_SPI_ACTIVE_LOW 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) #define ACPI_SPI_ACTIVE_HIGH 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) /* Values for clock_phase field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) #define ACPI_SPI_FIRST_PHASE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) #define ACPI_SPI_SECOND_PHASE 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) /* Values for clock_polarity field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) #define ACPI_SPI_START_LOW 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) #define ACPI_SPI_START_HIGH 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) struct acpi_resource_uart_serialbus {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) ACPI_RESOURCE_SERIAL_COMMON u8 endian;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) u8 data_bits;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) u8 stop_bits;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) u8 flow_control;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) u8 parity;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) u8 lines_enabled;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) u16 rx_fifo_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) u16 tx_fifo_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) u32 default_baud_rate;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) /* Values for Endian field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) #define ACPI_UART_LITTLE_ENDIAN 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) #define ACPI_UART_BIG_ENDIAN 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) /* Values for data_bits field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) #define ACPI_UART_5_DATA_BITS 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) #define ACPI_UART_6_DATA_BITS 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) #define ACPI_UART_7_DATA_BITS 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) #define ACPI_UART_8_DATA_BITS 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) #define ACPI_UART_9_DATA_BITS 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) /* Values for stop_bits field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) #define ACPI_UART_NO_STOP_BITS 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) #define ACPI_UART_1_STOP_BIT 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) #define ACPI_UART_1P5_STOP_BITS 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) #define ACPI_UART_2_STOP_BITS 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) /* Values for flow_control field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) #define ACPI_UART_FLOW_CONTROL_NONE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) #define ACPI_UART_FLOW_CONTROL_HW 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) #define ACPI_UART_FLOW_CONTROL_XON_XOFF 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) /* Values for Parity field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) #define ACPI_UART_PARITY_NONE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) #define ACPI_UART_PARITY_EVEN 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) #define ACPI_UART_PARITY_ODD 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) #define ACPI_UART_PARITY_MARK 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) #define ACPI_UART_PARITY_SPACE 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) /* Values for lines_enabled bitfield above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) #define ACPI_UART_CARRIER_DETECT (1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) #define ACPI_UART_RING_INDICATOR (1<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) #define ACPI_UART_DATA_SET_READY (1<<4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) #define ACPI_UART_DATA_TERMINAL_READY (1<<5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) #define ACPI_UART_CLEAR_TO_SEND (1<<6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) #define ACPI_UART_REQUEST_TO_SEND (1<<7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) struct acpi_resource_pin_function {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) u8 revision_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) u8 pin_config;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) u8 shareable; /* For values, see Interrupt Attributes above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) u16 function_number;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) u16 pin_table_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) u16 vendor_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) struct acpi_resource_source resource_source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) u16 *pin_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) u8 *vendor_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) struct acpi_resource_pin_config {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) u8 revision_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) u8 producer_consumer; /* For values, see Producer/Consumer above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) u8 shareable; /* For values, see Interrupt Attributes above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) u8 pin_config_type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) u32 pin_config_value;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) u16 pin_table_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) u16 vendor_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) struct acpi_resource_source resource_source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) u16 *pin_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) u8 *vendor_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) /* Values for pin_config_type field above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) #define ACPI_PIN_CONFIG_DEFAULT 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) #define ACPI_PIN_CONFIG_BIAS_PULL_UP 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) #define ACPI_PIN_CONFIG_BIAS_PULL_DOWN 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) #define ACPI_PIN_CONFIG_BIAS_DEFAULT 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) #define ACPI_PIN_CONFIG_BIAS_DISABLE 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) #define ACPI_PIN_CONFIG_BIAS_HIGH_IMPEDANCE 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) #define ACPI_PIN_CONFIG_BIAS_BUS_HOLD 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) #define ACPI_PIN_CONFIG_DRIVE_OPEN_DRAIN 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) #define ACPI_PIN_CONFIG_DRIVE_OPEN_SOURCE 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) #define ACPI_PIN_CONFIG_DRIVE_PUSH_PULL 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) #define ACPI_PIN_CONFIG_DRIVE_STRENGTH 10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) #define ACPI_PIN_CONFIG_SLEW_RATE 11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) #define ACPI_PIN_CONFIG_INPUT_DEBOUNCE 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) #define ACPI_PIN_CONFIG_INPUT_SCHMITT_TRIGGER 13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) struct acpi_resource_pin_group {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) u8 revision_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) u8 producer_consumer; /* For values, see Producer/Consumer above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) u16 pin_table_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) u16 vendor_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) u16 *pin_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) struct acpi_resource_label resource_label;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) u8 *vendor_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) struct acpi_resource_pin_group_function {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) u8 revision_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) u8 producer_consumer; /* For values, see Producer/Consumer above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) u8 shareable; /* For values, see Interrupt Attributes above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) u16 function_number;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) u16 vendor_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) struct acpi_resource_source resource_source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) struct acpi_resource_label resource_source_label;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) u8 *vendor_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) struct acpi_resource_pin_group_config {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) u8 revision_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) u8 producer_consumer; /* For values, see Producer/Consumer above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) u8 shareable; /* For values, see Interrupt Attributes above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) u8 pin_config_type; /* For values, see pin_config_type above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) u32 pin_config_value;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) u16 vendor_length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) struct acpi_resource_source resource_source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) struct acpi_resource_label resource_source_label;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) u8 *vendor_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) /* ACPI_RESOURCE_TYPEs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) #define ACPI_RESOURCE_TYPE_IRQ 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) #define ACPI_RESOURCE_TYPE_DMA 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) #define ACPI_RESOURCE_TYPE_START_DEPENDENT 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) #define ACPI_RESOURCE_TYPE_END_DEPENDENT 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) #define ACPI_RESOURCE_TYPE_IO 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) #define ACPI_RESOURCE_TYPE_FIXED_IO 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) #define ACPI_RESOURCE_TYPE_VENDOR 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) #define ACPI_RESOURCE_TYPE_END_TAG 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) #define ACPI_RESOURCE_TYPE_MEMORY24 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) #define ACPI_RESOURCE_TYPE_MEMORY32 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) #define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) #define ACPI_RESOURCE_TYPE_ADDRESS16 11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) #define ACPI_RESOURCE_TYPE_ADDRESS32 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) #define ACPI_RESOURCE_TYPE_ADDRESS64 13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) #define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) #define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) #define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) #define ACPI_RESOURCE_TYPE_GPIO 17 /* ACPI 5.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) #define ACPI_RESOURCE_TYPE_FIXED_DMA 18 /* ACPI 5.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) #define ACPI_RESOURCE_TYPE_SERIAL_BUS 19 /* ACPI 5.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) #define ACPI_RESOURCE_TYPE_PIN_FUNCTION 20 /* ACPI 6.2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) #define ACPI_RESOURCE_TYPE_PIN_CONFIG 21 /* ACPI 6.2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) #define ACPI_RESOURCE_TYPE_PIN_GROUP 22 /* ACPI 6.2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) #define ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION 23 /* ACPI 6.2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) #define ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG 24 /* ACPI 6.2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) #define ACPI_RESOURCE_TYPE_MAX 24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) /* Master union for resource descriptors */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) union acpi_resource_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) struct acpi_resource_irq irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) struct acpi_resource_dma dma;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) struct acpi_resource_start_dependent start_dpf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) struct acpi_resource_io io;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) struct acpi_resource_fixed_io fixed_io;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) struct acpi_resource_fixed_dma fixed_dma;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) struct acpi_resource_vendor vendor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) struct acpi_resource_vendor_typed vendor_typed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) struct acpi_resource_end_tag end_tag;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) struct acpi_resource_memory24 memory24;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) struct acpi_resource_memory32 memory32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) struct acpi_resource_fixed_memory32 fixed_memory32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) struct acpi_resource_address16 address16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) struct acpi_resource_address32 address32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) struct acpi_resource_address64 address64;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) struct acpi_resource_extended_address64 ext_address64;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) struct acpi_resource_extended_irq extended_irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) struct acpi_resource_generic_register generic_reg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) struct acpi_resource_gpio gpio;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) struct acpi_resource_i2c_serialbus i2c_serial_bus;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) struct acpi_resource_spi_serialbus spi_serial_bus;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) struct acpi_resource_uart_serialbus uart_serial_bus;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) struct acpi_resource_common_serialbus common_serial_bus;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) struct acpi_resource_pin_function pin_function;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) struct acpi_resource_pin_config pin_config;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) struct acpi_resource_pin_group pin_group;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) struct acpi_resource_pin_group_function pin_group_function;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) struct acpi_resource_pin_group_config pin_group_config;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) /* Common fields */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) struct acpi_resource_address address; /* Common 16/32/64 address fields */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) /* Common resource header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) struct acpi_resource {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) u32 type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) u32 length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) union acpi_resource_data data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) /* restore default alignment */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) #pragma pack()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) #define ACPI_RS_SIZE_NO_DATA 8 /* Id + Length fields */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) #define ACPI_RS_SIZE_MIN (u32) ACPI_ROUND_UP_TO_NATIVE_WORD (12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) #define ACPI_RS_SIZE(type) (u32) (ACPI_RS_SIZE_NO_DATA + sizeof (type))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) /* Macro for walking resource templates with multiple descriptors */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) #define ACPI_NEXT_RESOURCE(res) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) ACPI_ADD_PTR (struct acpi_resource, (res), (res)->length)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) struct acpi_pci_routing_table {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) u32 length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) u32 pin;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) u64 address; /* here for 64-bit alignment */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) u32 source_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) char source[4]; /* pad to 64 bits so sizeof() works in all cases */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) #endif /* __ACRESTYP_H__ */