18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ 28c2ecf20Sopenharmony_ci/****************************************************************************** 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * Name: acrestyp.h - Defines, types, and structures for resource descriptors 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * Copyright (C) 2000 - 2020, Intel Corp. 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci *****************************************************************************/ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef __ACRESTYP_H__ 118c2ecf20Sopenharmony_ci#define __ACRESTYP_H__ 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci/* 148c2ecf20Sopenharmony_ci * Definitions for Resource Attributes 158c2ecf20Sopenharmony_ci */ 168c2ecf20Sopenharmony_citypedef u16 acpi_rs_length; /* Resource Length field is fixed at 16 bits */ 178c2ecf20Sopenharmony_citypedef u32 acpi_rsdesc_size; /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */ 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci/* 208c2ecf20Sopenharmony_ci * Memory Attributes 218c2ecf20Sopenharmony_ci */ 228c2ecf20Sopenharmony_ci#define ACPI_READ_ONLY_MEMORY (u8) 0x00 238c2ecf20Sopenharmony_ci#define ACPI_READ_WRITE_MEMORY (u8) 0x01 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci#define ACPI_NON_CACHEABLE_MEMORY (u8) 0x00 268c2ecf20Sopenharmony_ci#define ACPI_CACHABLE_MEMORY (u8) 0x01 278c2ecf20Sopenharmony_ci#define ACPI_WRITE_COMBINING_MEMORY (u8) 0x02 288c2ecf20Sopenharmony_ci#define ACPI_PREFETCHABLE_MEMORY (u8) 0x03 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci/*! [Begin] no source code translation */ 318c2ecf20Sopenharmony_ci/* 328c2ecf20Sopenharmony_ci * IO Attributes 338c2ecf20Sopenharmony_ci * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh. 348c2ecf20Sopenharmony_ci * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh. 358c2ecf20Sopenharmony_ci */ 368c2ecf20Sopenharmony_ci/*! [End] no source code translation !*/ 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci#define ACPI_NON_ISA_ONLY_RANGES (u8) 0x01 398c2ecf20Sopenharmony_ci#define ACPI_ISA_ONLY_RANGES (u8) 0x02 408c2ecf20Sopenharmony_ci#define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES) 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci/* Type of translation - 1=Sparse, 0=Dense */ 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci#define ACPI_SPARSE_TRANSLATION (u8) 0x01 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci/* 478c2ecf20Sopenharmony_ci * IO Port Descriptor Decode 488c2ecf20Sopenharmony_ci */ 498c2ecf20Sopenharmony_ci#define ACPI_DECODE_10 (u8) 0x00 /* 10-bit IO address decode */ 508c2ecf20Sopenharmony_ci#define ACPI_DECODE_16 (u8) 0x01 /* 16-bit IO address decode */ 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci/* 538c2ecf20Sopenharmony_ci * Interrupt attributes - used in multiple descriptors 548c2ecf20Sopenharmony_ci */ 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci/* Triggering */ 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci#define ACPI_LEVEL_SENSITIVE (u8) 0x00 598c2ecf20Sopenharmony_ci#define ACPI_EDGE_SENSITIVE (u8) 0x01 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci/* Polarity */ 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci#define ACPI_ACTIVE_HIGH (u8) 0x00 648c2ecf20Sopenharmony_ci#define ACPI_ACTIVE_LOW (u8) 0x01 658c2ecf20Sopenharmony_ci#define ACPI_ACTIVE_BOTH (u8) 0x02 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci/* Sharing */ 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci#define ACPI_EXCLUSIVE (u8) 0x00 708c2ecf20Sopenharmony_ci#define ACPI_SHARED (u8) 0x01 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci/* Wake */ 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci#define ACPI_NOT_WAKE_CAPABLE (u8) 0x00 758c2ecf20Sopenharmony_ci#define ACPI_WAKE_CAPABLE (u8) 0x01 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci/* 788c2ecf20Sopenharmony_ci * DMA Attributes 798c2ecf20Sopenharmony_ci */ 808c2ecf20Sopenharmony_ci#define ACPI_COMPATIBILITY (u8) 0x00 818c2ecf20Sopenharmony_ci#define ACPI_TYPE_A (u8) 0x01 828c2ecf20Sopenharmony_ci#define ACPI_TYPE_B (u8) 0x02 838c2ecf20Sopenharmony_ci#define ACPI_TYPE_F (u8) 0x03 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci#define ACPI_NOT_BUS_MASTER (u8) 0x00 868c2ecf20Sopenharmony_ci#define ACPI_BUS_MASTER (u8) 0x01 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ci#define ACPI_TRANSFER_8 (u8) 0x00 898c2ecf20Sopenharmony_ci#define ACPI_TRANSFER_8_16 (u8) 0x01 908c2ecf20Sopenharmony_ci#define ACPI_TRANSFER_16 (u8) 0x02 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci/* 938c2ecf20Sopenharmony_ci * Start Dependent Functions Priority definitions 948c2ecf20Sopenharmony_ci */ 958c2ecf20Sopenharmony_ci#define ACPI_GOOD_CONFIGURATION (u8) 0x00 968c2ecf20Sopenharmony_ci#define ACPI_ACCEPTABLE_CONFIGURATION (u8) 0x01 978c2ecf20Sopenharmony_ci#define ACPI_SUB_OPTIMAL_CONFIGURATION (u8) 0x02 988c2ecf20Sopenharmony_ci 998c2ecf20Sopenharmony_ci/* 1008c2ecf20Sopenharmony_ci * 16, 32 and 64-bit Address Descriptor resource types 1018c2ecf20Sopenharmony_ci */ 1028c2ecf20Sopenharmony_ci#define ACPI_MEMORY_RANGE (u8) 0x00 1038c2ecf20Sopenharmony_ci#define ACPI_IO_RANGE (u8) 0x01 1048c2ecf20Sopenharmony_ci#define ACPI_BUS_NUMBER_RANGE (u8) 0x02 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ci#define ACPI_ADDRESS_NOT_FIXED (u8) 0x00 1078c2ecf20Sopenharmony_ci#define ACPI_ADDRESS_FIXED (u8) 0x01 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci#define ACPI_POS_DECODE (u8) 0x00 1108c2ecf20Sopenharmony_ci#define ACPI_SUB_DECODE (u8) 0x01 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci/* Producer/Consumer */ 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ci#define ACPI_PRODUCER (u8) 0x00 1158c2ecf20Sopenharmony_ci#define ACPI_CONSUMER (u8) 0x01 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci/* 1188c2ecf20Sopenharmony_ci * If possible, pack the following structures to byte alignment 1198c2ecf20Sopenharmony_ci */ 1208c2ecf20Sopenharmony_ci#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED 1218c2ecf20Sopenharmony_ci#pragma pack(1) 1228c2ecf20Sopenharmony_ci#endif 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ci/* UUID data structures for use in vendor-defined resource descriptors */ 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_cistruct acpi_uuid { 1278c2ecf20Sopenharmony_ci u8 data[ACPI_UUID_LENGTH]; 1288c2ecf20Sopenharmony_ci}; 1298c2ecf20Sopenharmony_ci 1308c2ecf20Sopenharmony_cistruct acpi_vendor_uuid { 1318c2ecf20Sopenharmony_ci u8 subtype; 1328c2ecf20Sopenharmony_ci u8 data[ACPI_UUID_LENGTH]; 1338c2ecf20Sopenharmony_ci}; 1348c2ecf20Sopenharmony_ci 1358c2ecf20Sopenharmony_ci/* 1368c2ecf20Sopenharmony_ci * Structures used to describe device resources 1378c2ecf20Sopenharmony_ci */ 1388c2ecf20Sopenharmony_cistruct acpi_resource_irq { 1398c2ecf20Sopenharmony_ci u8 descriptor_length; 1408c2ecf20Sopenharmony_ci u8 triggering; 1418c2ecf20Sopenharmony_ci u8 polarity; 1428c2ecf20Sopenharmony_ci u8 shareable; 1438c2ecf20Sopenharmony_ci u8 wake_capable; 1448c2ecf20Sopenharmony_ci u8 interrupt_count; 1458c2ecf20Sopenharmony_ci u8 interrupts[1]; 1468c2ecf20Sopenharmony_ci}; 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_cistruct acpi_resource_dma { 1498c2ecf20Sopenharmony_ci u8 type; 1508c2ecf20Sopenharmony_ci u8 bus_master; 1518c2ecf20Sopenharmony_ci u8 transfer; 1528c2ecf20Sopenharmony_ci u8 channel_count; 1538c2ecf20Sopenharmony_ci u8 channels[1]; 1548c2ecf20Sopenharmony_ci}; 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_cistruct acpi_resource_start_dependent { 1578c2ecf20Sopenharmony_ci u8 descriptor_length; 1588c2ecf20Sopenharmony_ci u8 compatibility_priority; 1598c2ecf20Sopenharmony_ci u8 performance_robustness; 1608c2ecf20Sopenharmony_ci}; 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ci/* 1638c2ecf20Sopenharmony_ci * The END_DEPENDENT_FUNCTIONS_RESOURCE struct is not 1648c2ecf20Sopenharmony_ci * needed because it has no fields 1658c2ecf20Sopenharmony_ci */ 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_cistruct acpi_resource_io { 1688c2ecf20Sopenharmony_ci u8 io_decode; 1698c2ecf20Sopenharmony_ci u8 alignment; 1708c2ecf20Sopenharmony_ci u8 address_length; 1718c2ecf20Sopenharmony_ci u16 minimum; 1728c2ecf20Sopenharmony_ci u16 maximum; 1738c2ecf20Sopenharmony_ci}; 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_cistruct acpi_resource_fixed_io { 1768c2ecf20Sopenharmony_ci u16 address; 1778c2ecf20Sopenharmony_ci u8 address_length; 1788c2ecf20Sopenharmony_ci}; 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_cistruct acpi_resource_fixed_dma { 1818c2ecf20Sopenharmony_ci u16 request_lines; 1828c2ecf20Sopenharmony_ci u16 channels; 1838c2ecf20Sopenharmony_ci u8 width; 1848c2ecf20Sopenharmony_ci}; 1858c2ecf20Sopenharmony_ci 1868c2ecf20Sopenharmony_ci/* Values for Width field above */ 1878c2ecf20Sopenharmony_ci 1888c2ecf20Sopenharmony_ci#define ACPI_DMA_WIDTH8 0 1898c2ecf20Sopenharmony_ci#define ACPI_DMA_WIDTH16 1 1908c2ecf20Sopenharmony_ci#define ACPI_DMA_WIDTH32 2 1918c2ecf20Sopenharmony_ci#define ACPI_DMA_WIDTH64 3 1928c2ecf20Sopenharmony_ci#define ACPI_DMA_WIDTH128 4 1938c2ecf20Sopenharmony_ci#define ACPI_DMA_WIDTH256 5 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_cistruct acpi_resource_vendor { 1968c2ecf20Sopenharmony_ci u16 byte_length; 1978c2ecf20Sopenharmony_ci u8 byte_data[1]; 1988c2ecf20Sopenharmony_ci}; 1998c2ecf20Sopenharmony_ci 2008c2ecf20Sopenharmony_ci/* Vendor resource with UUID info (introduced in ACPI 3.0) */ 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_cistruct acpi_resource_vendor_typed { 2038c2ecf20Sopenharmony_ci u16 byte_length; 2048c2ecf20Sopenharmony_ci u8 uuid_subtype; 2058c2ecf20Sopenharmony_ci u8 uuid[ACPI_UUID_LENGTH]; 2068c2ecf20Sopenharmony_ci u8 byte_data[1]; 2078c2ecf20Sopenharmony_ci}; 2088c2ecf20Sopenharmony_ci 2098c2ecf20Sopenharmony_cistruct acpi_resource_end_tag { 2108c2ecf20Sopenharmony_ci u8 checksum; 2118c2ecf20Sopenharmony_ci}; 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_cistruct acpi_resource_memory24 { 2148c2ecf20Sopenharmony_ci u8 write_protect; 2158c2ecf20Sopenharmony_ci u16 minimum; 2168c2ecf20Sopenharmony_ci u16 maximum; 2178c2ecf20Sopenharmony_ci u16 alignment; 2188c2ecf20Sopenharmony_ci u16 address_length; 2198c2ecf20Sopenharmony_ci}; 2208c2ecf20Sopenharmony_ci 2218c2ecf20Sopenharmony_cistruct acpi_resource_memory32 { 2228c2ecf20Sopenharmony_ci u8 write_protect; 2238c2ecf20Sopenharmony_ci u32 minimum; 2248c2ecf20Sopenharmony_ci u32 maximum; 2258c2ecf20Sopenharmony_ci u32 alignment; 2268c2ecf20Sopenharmony_ci u32 address_length; 2278c2ecf20Sopenharmony_ci}; 2288c2ecf20Sopenharmony_ci 2298c2ecf20Sopenharmony_cistruct acpi_resource_fixed_memory32 { 2308c2ecf20Sopenharmony_ci u8 write_protect; 2318c2ecf20Sopenharmony_ci u32 address; 2328c2ecf20Sopenharmony_ci u32 address_length; 2338c2ecf20Sopenharmony_ci}; 2348c2ecf20Sopenharmony_ci 2358c2ecf20Sopenharmony_cistruct acpi_memory_attribute { 2368c2ecf20Sopenharmony_ci u8 write_protect; 2378c2ecf20Sopenharmony_ci u8 caching; 2388c2ecf20Sopenharmony_ci u8 range_type; 2398c2ecf20Sopenharmony_ci u8 translation; 2408c2ecf20Sopenharmony_ci}; 2418c2ecf20Sopenharmony_ci 2428c2ecf20Sopenharmony_cistruct acpi_io_attribute { 2438c2ecf20Sopenharmony_ci u8 range_type; 2448c2ecf20Sopenharmony_ci u8 translation; 2458c2ecf20Sopenharmony_ci u8 translation_type; 2468c2ecf20Sopenharmony_ci u8 reserved1; 2478c2ecf20Sopenharmony_ci}; 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_ciunion acpi_resource_attribute { 2508c2ecf20Sopenharmony_ci struct acpi_memory_attribute mem; 2518c2ecf20Sopenharmony_ci struct acpi_io_attribute io; 2528c2ecf20Sopenharmony_ci 2538c2ecf20Sopenharmony_ci /* Used for the *word_space macros */ 2548c2ecf20Sopenharmony_ci 2558c2ecf20Sopenharmony_ci u8 type_specific; 2568c2ecf20Sopenharmony_ci}; 2578c2ecf20Sopenharmony_ci 2588c2ecf20Sopenharmony_cistruct acpi_resource_label { 2598c2ecf20Sopenharmony_ci u16 string_length; 2608c2ecf20Sopenharmony_ci char *string_ptr; 2618c2ecf20Sopenharmony_ci}; 2628c2ecf20Sopenharmony_ci 2638c2ecf20Sopenharmony_cistruct acpi_resource_source { 2648c2ecf20Sopenharmony_ci u8 index; 2658c2ecf20Sopenharmony_ci u16 string_length; 2668c2ecf20Sopenharmony_ci char *string_ptr; 2678c2ecf20Sopenharmony_ci}; 2688c2ecf20Sopenharmony_ci 2698c2ecf20Sopenharmony_ci/* Fields common to all address descriptors, 16/32/64 bit */ 2708c2ecf20Sopenharmony_ci 2718c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_ADDRESS_COMMON \ 2728c2ecf20Sopenharmony_ci u8 resource_type; \ 2738c2ecf20Sopenharmony_ci u8 producer_consumer; \ 2748c2ecf20Sopenharmony_ci u8 decode; \ 2758c2ecf20Sopenharmony_ci u8 min_address_fixed; \ 2768c2ecf20Sopenharmony_ci u8 max_address_fixed; \ 2778c2ecf20Sopenharmony_ci union acpi_resource_attribute info; 2788c2ecf20Sopenharmony_ci 2798c2ecf20Sopenharmony_cistruct acpi_address16_attribute { 2808c2ecf20Sopenharmony_ci u16 granularity; 2818c2ecf20Sopenharmony_ci u16 minimum; 2828c2ecf20Sopenharmony_ci u16 maximum; 2838c2ecf20Sopenharmony_ci u16 translation_offset; 2848c2ecf20Sopenharmony_ci u16 address_length; 2858c2ecf20Sopenharmony_ci}; 2868c2ecf20Sopenharmony_ci 2878c2ecf20Sopenharmony_cistruct acpi_address32_attribute { 2888c2ecf20Sopenharmony_ci u32 granularity; 2898c2ecf20Sopenharmony_ci u32 minimum; 2908c2ecf20Sopenharmony_ci u32 maximum; 2918c2ecf20Sopenharmony_ci u32 translation_offset; 2928c2ecf20Sopenharmony_ci u32 address_length; 2938c2ecf20Sopenharmony_ci}; 2948c2ecf20Sopenharmony_ci 2958c2ecf20Sopenharmony_cistruct acpi_address64_attribute { 2968c2ecf20Sopenharmony_ci u64 granularity; 2978c2ecf20Sopenharmony_ci u64 minimum; 2988c2ecf20Sopenharmony_ci u64 maximum; 2998c2ecf20Sopenharmony_ci u64 translation_offset; 3008c2ecf20Sopenharmony_ci u64 address_length; 3018c2ecf20Sopenharmony_ci}; 3028c2ecf20Sopenharmony_ci 3038c2ecf20Sopenharmony_cistruct acpi_resource_address { 3048c2ecf20Sopenharmony_ciACPI_RESOURCE_ADDRESS_COMMON}; 3058c2ecf20Sopenharmony_ci 3068c2ecf20Sopenharmony_cistruct acpi_resource_address16 { 3078c2ecf20Sopenharmony_ci ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address16_attribute address; 3088c2ecf20Sopenharmony_ci struct acpi_resource_source resource_source; 3098c2ecf20Sopenharmony_ci}; 3108c2ecf20Sopenharmony_ci 3118c2ecf20Sopenharmony_cistruct acpi_resource_address32 { 3128c2ecf20Sopenharmony_ci ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address32_attribute address; 3138c2ecf20Sopenharmony_ci struct acpi_resource_source resource_source; 3148c2ecf20Sopenharmony_ci}; 3158c2ecf20Sopenharmony_ci 3168c2ecf20Sopenharmony_cistruct acpi_resource_address64 { 3178c2ecf20Sopenharmony_ci ACPI_RESOURCE_ADDRESS_COMMON struct acpi_address64_attribute address; 3188c2ecf20Sopenharmony_ci struct acpi_resource_source resource_source; 3198c2ecf20Sopenharmony_ci}; 3208c2ecf20Sopenharmony_ci 3218c2ecf20Sopenharmony_cistruct acpi_resource_extended_address64 { 3228c2ecf20Sopenharmony_ci ACPI_RESOURCE_ADDRESS_COMMON u8 revision_ID; 3238c2ecf20Sopenharmony_ci struct acpi_address64_attribute address; 3248c2ecf20Sopenharmony_ci u64 type_specific; 3258c2ecf20Sopenharmony_ci}; 3268c2ecf20Sopenharmony_ci 3278c2ecf20Sopenharmony_cistruct acpi_resource_extended_irq { 3288c2ecf20Sopenharmony_ci u8 producer_consumer; 3298c2ecf20Sopenharmony_ci u8 triggering; 3308c2ecf20Sopenharmony_ci u8 polarity; 3318c2ecf20Sopenharmony_ci u8 shareable; 3328c2ecf20Sopenharmony_ci u8 wake_capable; 3338c2ecf20Sopenharmony_ci u8 interrupt_count; 3348c2ecf20Sopenharmony_ci struct acpi_resource_source resource_source; 3358c2ecf20Sopenharmony_ci u32 interrupts[1]; 3368c2ecf20Sopenharmony_ci}; 3378c2ecf20Sopenharmony_ci 3388c2ecf20Sopenharmony_cistruct acpi_resource_generic_register { 3398c2ecf20Sopenharmony_ci u8 space_id; 3408c2ecf20Sopenharmony_ci u8 bit_width; 3418c2ecf20Sopenharmony_ci u8 bit_offset; 3428c2ecf20Sopenharmony_ci u8 access_size; 3438c2ecf20Sopenharmony_ci u64 address; 3448c2ecf20Sopenharmony_ci}; 3458c2ecf20Sopenharmony_ci 3468c2ecf20Sopenharmony_cistruct acpi_resource_gpio { 3478c2ecf20Sopenharmony_ci u8 revision_id; 3488c2ecf20Sopenharmony_ci u8 connection_type; 3498c2ecf20Sopenharmony_ci u8 producer_consumer; /* For values, see Producer/Consumer above */ 3508c2ecf20Sopenharmony_ci u8 pin_config; 3518c2ecf20Sopenharmony_ci u8 shareable; /* For values, see Interrupt Attributes above */ 3528c2ecf20Sopenharmony_ci u8 wake_capable; /* For values, see Interrupt Attributes above */ 3538c2ecf20Sopenharmony_ci u8 io_restriction; 3548c2ecf20Sopenharmony_ci u8 triggering; /* For values, see Interrupt Attributes above */ 3558c2ecf20Sopenharmony_ci u8 polarity; /* For values, see Interrupt Attributes above */ 3568c2ecf20Sopenharmony_ci u16 drive_strength; 3578c2ecf20Sopenharmony_ci u16 debounce_timeout; 3588c2ecf20Sopenharmony_ci u16 pin_table_length; 3598c2ecf20Sopenharmony_ci u16 vendor_length; 3608c2ecf20Sopenharmony_ci struct acpi_resource_source resource_source; 3618c2ecf20Sopenharmony_ci u16 *pin_table; 3628c2ecf20Sopenharmony_ci u8 *vendor_data; 3638c2ecf20Sopenharmony_ci}; 3648c2ecf20Sopenharmony_ci 3658c2ecf20Sopenharmony_ci/* Values for GPIO connection_type field above */ 3668c2ecf20Sopenharmony_ci 3678c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_GPIO_TYPE_INT 0 3688c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_GPIO_TYPE_IO 1 3698c2ecf20Sopenharmony_ci 3708c2ecf20Sopenharmony_ci/* Values for pin_config field above */ 3718c2ecf20Sopenharmony_ci 3728c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_DEFAULT 0 3738c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_PULLUP 1 3748c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_PULLDOWN 2 3758c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_NOPULL 3 3768c2ecf20Sopenharmony_ci 3778c2ecf20Sopenharmony_ci/* Values for io_restriction field above */ 3788c2ecf20Sopenharmony_ci 3798c2ecf20Sopenharmony_ci#define ACPI_IO_RESTRICT_NONE 0 3808c2ecf20Sopenharmony_ci#define ACPI_IO_RESTRICT_INPUT 1 3818c2ecf20Sopenharmony_ci#define ACPI_IO_RESTRICT_OUTPUT 2 3828c2ecf20Sopenharmony_ci#define ACPI_IO_RESTRICT_NONE_PRESERVE 3 3838c2ecf20Sopenharmony_ci 3848c2ecf20Sopenharmony_ci/* Common structure for I2C, SPI, and UART serial descriptors */ 3858c2ecf20Sopenharmony_ci 3868c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_SERIAL_COMMON \ 3878c2ecf20Sopenharmony_ci u8 revision_id; \ 3888c2ecf20Sopenharmony_ci u8 type; \ 3898c2ecf20Sopenharmony_ci u8 producer_consumer; /* For values, see Producer/Consumer above */\ 3908c2ecf20Sopenharmony_ci u8 slave_mode; \ 3918c2ecf20Sopenharmony_ci u8 connection_sharing; \ 3928c2ecf20Sopenharmony_ci u8 type_revision_id; \ 3938c2ecf20Sopenharmony_ci u16 type_data_length; \ 3948c2ecf20Sopenharmony_ci u16 vendor_length; \ 3958c2ecf20Sopenharmony_ci struct acpi_resource_source resource_source; \ 3968c2ecf20Sopenharmony_ci u8 *vendor_data; 3978c2ecf20Sopenharmony_ci 3988c2ecf20Sopenharmony_cistruct acpi_resource_common_serialbus { 3998c2ecf20Sopenharmony_ciACPI_RESOURCE_SERIAL_COMMON}; 4008c2ecf20Sopenharmony_ci 4018c2ecf20Sopenharmony_ci/* Values for the Type field above */ 4028c2ecf20Sopenharmony_ci 4038c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_SERIAL_TYPE_I2C 1 4048c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_SERIAL_TYPE_SPI 2 4058c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_SERIAL_TYPE_UART 3 4068c2ecf20Sopenharmony_ci 4078c2ecf20Sopenharmony_ci/* Values for slave_mode field above */ 4088c2ecf20Sopenharmony_ci 4098c2ecf20Sopenharmony_ci#define ACPI_CONTROLLER_INITIATED 0 4108c2ecf20Sopenharmony_ci#define ACPI_DEVICE_INITIATED 1 4118c2ecf20Sopenharmony_ci 4128c2ecf20Sopenharmony_cistruct acpi_resource_i2c_serialbus { 4138c2ecf20Sopenharmony_ci ACPI_RESOURCE_SERIAL_COMMON u8 access_mode; 4148c2ecf20Sopenharmony_ci u16 slave_address; 4158c2ecf20Sopenharmony_ci u32 connection_speed; 4168c2ecf20Sopenharmony_ci}; 4178c2ecf20Sopenharmony_ci 4188c2ecf20Sopenharmony_ci/* Values for access_mode field above */ 4198c2ecf20Sopenharmony_ci 4208c2ecf20Sopenharmony_ci#define ACPI_I2C_7BIT_MODE 0 4218c2ecf20Sopenharmony_ci#define ACPI_I2C_10BIT_MODE 1 4228c2ecf20Sopenharmony_ci 4238c2ecf20Sopenharmony_cistruct acpi_resource_spi_serialbus { 4248c2ecf20Sopenharmony_ci ACPI_RESOURCE_SERIAL_COMMON u8 wire_mode; 4258c2ecf20Sopenharmony_ci u8 device_polarity; 4268c2ecf20Sopenharmony_ci u8 data_bit_length; 4278c2ecf20Sopenharmony_ci u8 clock_phase; 4288c2ecf20Sopenharmony_ci u8 clock_polarity; 4298c2ecf20Sopenharmony_ci u16 device_selection; 4308c2ecf20Sopenharmony_ci u32 connection_speed; 4318c2ecf20Sopenharmony_ci}; 4328c2ecf20Sopenharmony_ci 4338c2ecf20Sopenharmony_ci/* Values for wire_mode field above */ 4348c2ecf20Sopenharmony_ci 4358c2ecf20Sopenharmony_ci#define ACPI_SPI_4WIRE_MODE 0 4368c2ecf20Sopenharmony_ci#define ACPI_SPI_3WIRE_MODE 1 4378c2ecf20Sopenharmony_ci 4388c2ecf20Sopenharmony_ci/* Values for device_polarity field above */ 4398c2ecf20Sopenharmony_ci 4408c2ecf20Sopenharmony_ci#define ACPI_SPI_ACTIVE_LOW 0 4418c2ecf20Sopenharmony_ci#define ACPI_SPI_ACTIVE_HIGH 1 4428c2ecf20Sopenharmony_ci 4438c2ecf20Sopenharmony_ci/* Values for clock_phase field above */ 4448c2ecf20Sopenharmony_ci 4458c2ecf20Sopenharmony_ci#define ACPI_SPI_FIRST_PHASE 0 4468c2ecf20Sopenharmony_ci#define ACPI_SPI_SECOND_PHASE 1 4478c2ecf20Sopenharmony_ci 4488c2ecf20Sopenharmony_ci/* Values for clock_polarity field above */ 4498c2ecf20Sopenharmony_ci 4508c2ecf20Sopenharmony_ci#define ACPI_SPI_START_LOW 0 4518c2ecf20Sopenharmony_ci#define ACPI_SPI_START_HIGH 1 4528c2ecf20Sopenharmony_ci 4538c2ecf20Sopenharmony_cistruct acpi_resource_uart_serialbus { 4548c2ecf20Sopenharmony_ci ACPI_RESOURCE_SERIAL_COMMON u8 endian; 4558c2ecf20Sopenharmony_ci u8 data_bits; 4568c2ecf20Sopenharmony_ci u8 stop_bits; 4578c2ecf20Sopenharmony_ci u8 flow_control; 4588c2ecf20Sopenharmony_ci u8 parity; 4598c2ecf20Sopenharmony_ci u8 lines_enabled; 4608c2ecf20Sopenharmony_ci u16 rx_fifo_size; 4618c2ecf20Sopenharmony_ci u16 tx_fifo_size; 4628c2ecf20Sopenharmony_ci u32 default_baud_rate; 4638c2ecf20Sopenharmony_ci}; 4648c2ecf20Sopenharmony_ci 4658c2ecf20Sopenharmony_ci/* Values for Endian field above */ 4668c2ecf20Sopenharmony_ci 4678c2ecf20Sopenharmony_ci#define ACPI_UART_LITTLE_ENDIAN 0 4688c2ecf20Sopenharmony_ci#define ACPI_UART_BIG_ENDIAN 1 4698c2ecf20Sopenharmony_ci 4708c2ecf20Sopenharmony_ci/* Values for data_bits field above */ 4718c2ecf20Sopenharmony_ci 4728c2ecf20Sopenharmony_ci#define ACPI_UART_5_DATA_BITS 0 4738c2ecf20Sopenharmony_ci#define ACPI_UART_6_DATA_BITS 1 4748c2ecf20Sopenharmony_ci#define ACPI_UART_7_DATA_BITS 2 4758c2ecf20Sopenharmony_ci#define ACPI_UART_8_DATA_BITS 3 4768c2ecf20Sopenharmony_ci#define ACPI_UART_9_DATA_BITS 4 4778c2ecf20Sopenharmony_ci 4788c2ecf20Sopenharmony_ci/* Values for stop_bits field above */ 4798c2ecf20Sopenharmony_ci 4808c2ecf20Sopenharmony_ci#define ACPI_UART_NO_STOP_BITS 0 4818c2ecf20Sopenharmony_ci#define ACPI_UART_1_STOP_BIT 1 4828c2ecf20Sopenharmony_ci#define ACPI_UART_1P5_STOP_BITS 2 4838c2ecf20Sopenharmony_ci#define ACPI_UART_2_STOP_BITS 3 4848c2ecf20Sopenharmony_ci 4858c2ecf20Sopenharmony_ci/* Values for flow_control field above */ 4868c2ecf20Sopenharmony_ci 4878c2ecf20Sopenharmony_ci#define ACPI_UART_FLOW_CONTROL_NONE 0 4888c2ecf20Sopenharmony_ci#define ACPI_UART_FLOW_CONTROL_HW 1 4898c2ecf20Sopenharmony_ci#define ACPI_UART_FLOW_CONTROL_XON_XOFF 2 4908c2ecf20Sopenharmony_ci 4918c2ecf20Sopenharmony_ci/* Values for Parity field above */ 4928c2ecf20Sopenharmony_ci 4938c2ecf20Sopenharmony_ci#define ACPI_UART_PARITY_NONE 0 4948c2ecf20Sopenharmony_ci#define ACPI_UART_PARITY_EVEN 1 4958c2ecf20Sopenharmony_ci#define ACPI_UART_PARITY_ODD 2 4968c2ecf20Sopenharmony_ci#define ACPI_UART_PARITY_MARK 3 4978c2ecf20Sopenharmony_ci#define ACPI_UART_PARITY_SPACE 4 4988c2ecf20Sopenharmony_ci 4998c2ecf20Sopenharmony_ci/* Values for lines_enabled bitfield above */ 5008c2ecf20Sopenharmony_ci 5018c2ecf20Sopenharmony_ci#define ACPI_UART_CARRIER_DETECT (1<<2) 5028c2ecf20Sopenharmony_ci#define ACPI_UART_RING_INDICATOR (1<<3) 5038c2ecf20Sopenharmony_ci#define ACPI_UART_DATA_SET_READY (1<<4) 5048c2ecf20Sopenharmony_ci#define ACPI_UART_DATA_TERMINAL_READY (1<<5) 5058c2ecf20Sopenharmony_ci#define ACPI_UART_CLEAR_TO_SEND (1<<6) 5068c2ecf20Sopenharmony_ci#define ACPI_UART_REQUEST_TO_SEND (1<<7) 5078c2ecf20Sopenharmony_ci 5088c2ecf20Sopenharmony_cistruct acpi_resource_pin_function { 5098c2ecf20Sopenharmony_ci u8 revision_id; 5108c2ecf20Sopenharmony_ci u8 pin_config; 5118c2ecf20Sopenharmony_ci u8 shareable; /* For values, see Interrupt Attributes above */ 5128c2ecf20Sopenharmony_ci u16 function_number; 5138c2ecf20Sopenharmony_ci u16 pin_table_length; 5148c2ecf20Sopenharmony_ci u16 vendor_length; 5158c2ecf20Sopenharmony_ci struct acpi_resource_source resource_source; 5168c2ecf20Sopenharmony_ci u16 *pin_table; 5178c2ecf20Sopenharmony_ci u8 *vendor_data; 5188c2ecf20Sopenharmony_ci}; 5198c2ecf20Sopenharmony_ci 5208c2ecf20Sopenharmony_cistruct acpi_resource_pin_config { 5218c2ecf20Sopenharmony_ci u8 revision_id; 5228c2ecf20Sopenharmony_ci u8 producer_consumer; /* For values, see Producer/Consumer above */ 5238c2ecf20Sopenharmony_ci u8 shareable; /* For values, see Interrupt Attributes above */ 5248c2ecf20Sopenharmony_ci u8 pin_config_type; 5258c2ecf20Sopenharmony_ci u32 pin_config_value; 5268c2ecf20Sopenharmony_ci u16 pin_table_length; 5278c2ecf20Sopenharmony_ci u16 vendor_length; 5288c2ecf20Sopenharmony_ci struct acpi_resource_source resource_source; 5298c2ecf20Sopenharmony_ci u16 *pin_table; 5308c2ecf20Sopenharmony_ci u8 *vendor_data; 5318c2ecf20Sopenharmony_ci}; 5328c2ecf20Sopenharmony_ci 5338c2ecf20Sopenharmony_ci/* Values for pin_config_type field above */ 5348c2ecf20Sopenharmony_ci 5358c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_DEFAULT 0 5368c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_BIAS_PULL_UP 1 5378c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_BIAS_PULL_DOWN 2 5388c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_BIAS_DEFAULT 3 5398c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_BIAS_DISABLE 4 5408c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_BIAS_HIGH_IMPEDANCE 5 5418c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_BIAS_BUS_HOLD 6 5428c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_DRIVE_OPEN_DRAIN 7 5438c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_DRIVE_OPEN_SOURCE 8 5448c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_DRIVE_PUSH_PULL 9 5458c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_DRIVE_STRENGTH 10 5468c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_SLEW_RATE 11 5478c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_INPUT_DEBOUNCE 12 5488c2ecf20Sopenharmony_ci#define ACPI_PIN_CONFIG_INPUT_SCHMITT_TRIGGER 13 5498c2ecf20Sopenharmony_ci 5508c2ecf20Sopenharmony_cistruct acpi_resource_pin_group { 5518c2ecf20Sopenharmony_ci u8 revision_id; 5528c2ecf20Sopenharmony_ci u8 producer_consumer; /* For values, see Producer/Consumer above */ 5538c2ecf20Sopenharmony_ci u16 pin_table_length; 5548c2ecf20Sopenharmony_ci u16 vendor_length; 5558c2ecf20Sopenharmony_ci u16 *pin_table; 5568c2ecf20Sopenharmony_ci struct acpi_resource_label resource_label; 5578c2ecf20Sopenharmony_ci u8 *vendor_data; 5588c2ecf20Sopenharmony_ci}; 5598c2ecf20Sopenharmony_ci 5608c2ecf20Sopenharmony_cistruct acpi_resource_pin_group_function { 5618c2ecf20Sopenharmony_ci u8 revision_id; 5628c2ecf20Sopenharmony_ci u8 producer_consumer; /* For values, see Producer/Consumer above */ 5638c2ecf20Sopenharmony_ci u8 shareable; /* For values, see Interrupt Attributes above */ 5648c2ecf20Sopenharmony_ci u16 function_number; 5658c2ecf20Sopenharmony_ci u16 vendor_length; 5668c2ecf20Sopenharmony_ci struct acpi_resource_source resource_source; 5678c2ecf20Sopenharmony_ci struct acpi_resource_label resource_source_label; 5688c2ecf20Sopenharmony_ci u8 *vendor_data; 5698c2ecf20Sopenharmony_ci}; 5708c2ecf20Sopenharmony_ci 5718c2ecf20Sopenharmony_cistruct acpi_resource_pin_group_config { 5728c2ecf20Sopenharmony_ci u8 revision_id; 5738c2ecf20Sopenharmony_ci u8 producer_consumer; /* For values, see Producer/Consumer above */ 5748c2ecf20Sopenharmony_ci u8 shareable; /* For values, see Interrupt Attributes above */ 5758c2ecf20Sopenharmony_ci u8 pin_config_type; /* For values, see pin_config_type above */ 5768c2ecf20Sopenharmony_ci u32 pin_config_value; 5778c2ecf20Sopenharmony_ci u16 vendor_length; 5788c2ecf20Sopenharmony_ci struct acpi_resource_source resource_source; 5798c2ecf20Sopenharmony_ci struct acpi_resource_label resource_source_label; 5808c2ecf20Sopenharmony_ci u8 *vendor_data; 5818c2ecf20Sopenharmony_ci}; 5828c2ecf20Sopenharmony_ci 5838c2ecf20Sopenharmony_ci/* ACPI_RESOURCE_TYPEs */ 5848c2ecf20Sopenharmony_ci 5858c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_IRQ 0 5868c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_DMA 1 5878c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_START_DEPENDENT 2 5888c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_END_DEPENDENT 3 5898c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_IO 4 5908c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_FIXED_IO 5 5918c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_VENDOR 6 5928c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_END_TAG 7 5938c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_MEMORY24 8 5948c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_MEMORY32 9 5958c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10 5968c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_ADDRESS16 11 5978c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_ADDRESS32 12 5988c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_ADDRESS64 13 5998c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */ 6008c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15 6018c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16 6028c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_GPIO 17 /* ACPI 5.0 */ 6038c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_FIXED_DMA 18 /* ACPI 5.0 */ 6048c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_SERIAL_BUS 19 /* ACPI 5.0 */ 6058c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_PIN_FUNCTION 20 /* ACPI 6.2 */ 6068c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_PIN_CONFIG 21 /* ACPI 6.2 */ 6078c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_PIN_GROUP 22 /* ACPI 6.2 */ 6088c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION 23 /* ACPI 6.2 */ 6098c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG 24 /* ACPI 6.2 */ 6108c2ecf20Sopenharmony_ci#define ACPI_RESOURCE_TYPE_MAX 24 6118c2ecf20Sopenharmony_ci 6128c2ecf20Sopenharmony_ci/* Master union for resource descriptors */ 6138c2ecf20Sopenharmony_ci 6148c2ecf20Sopenharmony_ciunion acpi_resource_data { 6158c2ecf20Sopenharmony_ci struct acpi_resource_irq irq; 6168c2ecf20Sopenharmony_ci struct acpi_resource_dma dma; 6178c2ecf20Sopenharmony_ci struct acpi_resource_start_dependent start_dpf; 6188c2ecf20Sopenharmony_ci struct acpi_resource_io io; 6198c2ecf20Sopenharmony_ci struct acpi_resource_fixed_io fixed_io; 6208c2ecf20Sopenharmony_ci struct acpi_resource_fixed_dma fixed_dma; 6218c2ecf20Sopenharmony_ci struct acpi_resource_vendor vendor; 6228c2ecf20Sopenharmony_ci struct acpi_resource_vendor_typed vendor_typed; 6238c2ecf20Sopenharmony_ci struct acpi_resource_end_tag end_tag; 6248c2ecf20Sopenharmony_ci struct acpi_resource_memory24 memory24; 6258c2ecf20Sopenharmony_ci struct acpi_resource_memory32 memory32; 6268c2ecf20Sopenharmony_ci struct acpi_resource_fixed_memory32 fixed_memory32; 6278c2ecf20Sopenharmony_ci struct acpi_resource_address16 address16; 6288c2ecf20Sopenharmony_ci struct acpi_resource_address32 address32; 6298c2ecf20Sopenharmony_ci struct acpi_resource_address64 address64; 6308c2ecf20Sopenharmony_ci struct acpi_resource_extended_address64 ext_address64; 6318c2ecf20Sopenharmony_ci struct acpi_resource_extended_irq extended_irq; 6328c2ecf20Sopenharmony_ci struct acpi_resource_generic_register generic_reg; 6338c2ecf20Sopenharmony_ci struct acpi_resource_gpio gpio; 6348c2ecf20Sopenharmony_ci struct acpi_resource_i2c_serialbus i2c_serial_bus; 6358c2ecf20Sopenharmony_ci struct acpi_resource_spi_serialbus spi_serial_bus; 6368c2ecf20Sopenharmony_ci struct acpi_resource_uart_serialbus uart_serial_bus; 6378c2ecf20Sopenharmony_ci struct acpi_resource_common_serialbus common_serial_bus; 6388c2ecf20Sopenharmony_ci struct acpi_resource_pin_function pin_function; 6398c2ecf20Sopenharmony_ci struct acpi_resource_pin_config pin_config; 6408c2ecf20Sopenharmony_ci struct acpi_resource_pin_group pin_group; 6418c2ecf20Sopenharmony_ci struct acpi_resource_pin_group_function pin_group_function; 6428c2ecf20Sopenharmony_ci struct acpi_resource_pin_group_config pin_group_config; 6438c2ecf20Sopenharmony_ci 6448c2ecf20Sopenharmony_ci /* Common fields */ 6458c2ecf20Sopenharmony_ci 6468c2ecf20Sopenharmony_ci struct acpi_resource_address address; /* Common 16/32/64 address fields */ 6478c2ecf20Sopenharmony_ci}; 6488c2ecf20Sopenharmony_ci 6498c2ecf20Sopenharmony_ci/* Common resource header */ 6508c2ecf20Sopenharmony_ci 6518c2ecf20Sopenharmony_cistruct acpi_resource { 6528c2ecf20Sopenharmony_ci u32 type; 6538c2ecf20Sopenharmony_ci u32 length; 6548c2ecf20Sopenharmony_ci union acpi_resource_data data; 6558c2ecf20Sopenharmony_ci}; 6568c2ecf20Sopenharmony_ci 6578c2ecf20Sopenharmony_ci/* restore default alignment */ 6588c2ecf20Sopenharmony_ci 6598c2ecf20Sopenharmony_ci#pragma pack() 6608c2ecf20Sopenharmony_ci 6618c2ecf20Sopenharmony_ci#define ACPI_RS_SIZE_NO_DATA 8 /* Id + Length fields */ 6628c2ecf20Sopenharmony_ci#define ACPI_RS_SIZE_MIN (u32) ACPI_ROUND_UP_TO_NATIVE_WORD (12) 6638c2ecf20Sopenharmony_ci#define ACPI_RS_SIZE(type) (u32) (ACPI_RS_SIZE_NO_DATA + sizeof (type)) 6648c2ecf20Sopenharmony_ci 6658c2ecf20Sopenharmony_ci/* Macro for walking resource templates with multiple descriptors */ 6668c2ecf20Sopenharmony_ci 6678c2ecf20Sopenharmony_ci#define ACPI_NEXT_RESOURCE(res) \ 6688c2ecf20Sopenharmony_ci ACPI_ADD_PTR (struct acpi_resource, (res), (res)->length) 6698c2ecf20Sopenharmony_ci 6708c2ecf20Sopenharmony_cistruct acpi_pci_routing_table { 6718c2ecf20Sopenharmony_ci u32 length; 6728c2ecf20Sopenharmony_ci u32 pin; 6738c2ecf20Sopenharmony_ci u64 address; /* here for 64-bit alignment */ 6748c2ecf20Sopenharmony_ci u32 source_index; 6758c2ecf20Sopenharmony_ci char source[4]; /* pad to 64 bits so sizeof() works in all cases */ 6768c2ecf20Sopenharmony_ci}; 6778c2ecf20Sopenharmony_ci 6788c2ecf20Sopenharmony_ci#endif /* __ACRESTYP_H__ */ 679