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