1 /******************************************************************************
   2  *
   3  * Name: acrestyp.h - Defines, types, and structures for resource descriptors
   4  *
   5  *****************************************************************************/
   6 
   7 /*
   8  * Copyright (C) 2000 - 2014, Intel Corp.
   9  * All rights reserved.
  10  *
  11  * Redistribution and use in source and binary forms, with or without
  12  * modification, are permitted provided that the following conditions
  13  * are met:
  14  * 1. Redistributions of source code must retain the above copyright
  15  *    notice, this list of conditions, and the following disclaimer,
  16  *    without modification.
  17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  18  *    substantially similar to the "NO WARRANTY" disclaimer below
  19  *    ("Disclaimer") and any redistribution must be conditioned upon
  20  *    including a substantially similar Disclaimer requirement for further
  21  *    binary redistribution.
  22  * 3. Neither the names of the above-listed copyright holders nor the names
  23  *    of any contributors may be used to endorse or promote products derived
  24  *    from this software without specific prior written permission.
  25  *
  26  * Alternatively, this software may be distributed under the terms of the
  27  * GNU General Public License ("GPL") version 2 as published by the Free
  28  * Software Foundation.
  29  *
  30  * NO WARRANTY
  31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
  34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  41  * POSSIBILITY OF SUCH DAMAGES.
  42  */
  43 
  44 #ifndef __ACRESTYP_H__
  45 #define __ACRESTYP_H__
  46 
  47 
  48 /*
  49  * Definitions for Resource Attributes
  50  */
  51 typedef UINT16                          ACPI_RS_LENGTH;    /* Resource Length field is fixed at 16 bits */
  52 typedef UINT32                          ACPI_RSDESC_SIZE;  /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */
  53 
  54 /*
  55  * Memory Attributes
  56  */
  57 #define ACPI_READ_ONLY_MEMORY           (UINT8) 0x00
  58 #define ACPI_READ_WRITE_MEMORY          (UINT8) 0x01
  59 
  60 #define ACPI_NON_CACHEABLE_MEMORY       (UINT8) 0x00
  61 #define ACPI_CACHABLE_MEMORY            (UINT8) 0x01
  62 #define ACPI_WRITE_COMBINING_MEMORY     (UINT8) 0x02
  63 #define ACPI_PREFETCHABLE_MEMORY        (UINT8) 0x03
  64 
  65 /*! [Begin] no source code translation */
  66 /*
  67  * IO Attributes
  68  * The ISA IO ranges are:     n000-n0FFh,  n400-n4FFh, n800-n8FFh, nC00-nCFFh.
  69  * The non-ISA IO ranges are: n100-n3FFh,  n500-n7FFh, n900-nBFFh, nCD0-nFFFh.
  70  */
  71 /*! [End] no source code translation !*/
  72 
  73 #define ACPI_NON_ISA_ONLY_RANGES        (UINT8) 0x01
  74 #define ACPI_ISA_ONLY_RANGES            (UINT8) 0x02
  75 #define ACPI_ENTIRE_RANGE               (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES)
  76 
  77 /* Type of translation - 1=Sparse, 0=Dense */
  78 
  79 #define ACPI_SPARSE_TRANSLATION         (UINT8) 0x01
  80 
  81 /*
  82  * IO Port Descriptor Decode
  83  */
  84 #define ACPI_DECODE_10                  (UINT8) 0x00    /* 10-bit IO address decode */
  85 #define ACPI_DECODE_16                  (UINT8) 0x01    /* 16-bit IO address decode */
  86 
  87 /*
  88  * Interrupt attributes - used in multiple descriptors
  89  */
  90 
  91 /* Triggering */
  92 
  93 #define ACPI_LEVEL_SENSITIVE            (UINT8) 0x00
  94 #define ACPI_EDGE_SENSITIVE             (UINT8) 0x01
  95 
  96 /* Polarity */
  97 
  98 #define ACPI_ACTIVE_HIGH                (UINT8) 0x00
  99 #define ACPI_ACTIVE_LOW                 (UINT8) 0x01
 100 #define ACPI_ACTIVE_BOTH                (UINT8) 0x02
 101 
 102 /* Sharing */
 103 
 104 #define ACPI_EXCLUSIVE                  (UINT8) 0x00
 105 #define ACPI_SHARED                     (UINT8) 0x01
 106 
 107 /* Wake */
 108 
 109 #define ACPI_NOT_WAKE_CAPABLE           (UINT8) 0x00
 110 #define ACPI_WAKE_CAPABLE               (UINT8) 0x01
 111 
 112 /*
 113  * DMA Attributes
 114  */
 115 #define ACPI_COMPATIBILITY              (UINT8) 0x00
 116 #define ACPI_TYPE_A                     (UINT8) 0x01
 117 #define ACPI_TYPE_B                     (UINT8) 0x02
 118 #define ACPI_TYPE_F                     (UINT8) 0x03
 119 
 120 #define ACPI_NOT_BUS_MASTER             (UINT8) 0x00
 121 #define ACPI_BUS_MASTER                 (UINT8) 0x01
 122 
 123 #define ACPI_TRANSFER_8                 (UINT8) 0x00
 124 #define ACPI_TRANSFER_8_16              (UINT8) 0x01
 125 #define ACPI_TRANSFER_16                (UINT8) 0x02
 126 
 127 /*
 128  * Start Dependent Functions Priority definitions
 129  */
 130 #define ACPI_GOOD_CONFIGURATION         (UINT8) 0x00
 131 #define ACPI_ACCEPTABLE_CONFIGURATION   (UINT8) 0x01
 132 #define ACPI_SUB_OPTIMAL_CONFIGURATION  (UINT8) 0x02
 133 
 134 /*
 135  * 16, 32 and 64-bit Address Descriptor resource types
 136  */
 137 #define ACPI_MEMORY_RANGE               (UINT8) 0x00
 138 #define ACPI_IO_RANGE                   (UINT8) 0x01
 139 #define ACPI_BUS_NUMBER_RANGE           (UINT8) 0x02
 140 
 141 #define ACPI_ADDRESS_NOT_FIXED          (UINT8) 0x00
 142 #define ACPI_ADDRESS_FIXED              (UINT8) 0x01
 143 
 144 #define ACPI_POS_DECODE                 (UINT8) 0x00
 145 #define ACPI_SUB_DECODE                 (UINT8) 0x01
 146 
 147 /* Producer/Consumer */
 148 
 149 #define ACPI_PRODUCER                   (UINT8) 0x00
 150 #define ACPI_CONSUMER                   (UINT8) 0x01
 151 
 152 
 153 /*
 154  * If possible, pack the following structures to byte alignment
 155  */
 156 #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED
 157 #pragma pack(1)
 158 #endif
 159 
 160 /* UUID data structures for use in vendor-defined resource descriptors */
 161 
 162 typedef struct acpi_uuid
 163 {
 164     UINT8                           Data[ACPI_UUID_LENGTH];
 165 } ACPI_UUID;
 166 
 167 typedef struct acpi_vendor_uuid
 168 {
 169     UINT8                           Subtype;
 170     UINT8                           Data[ACPI_UUID_LENGTH];
 171 
 172 } ACPI_VENDOR_UUID;
 173 
 174 /*
 175  * Structures used to describe device resources
 176  */
 177 typedef struct acpi_resource_irq
 178 {
 179     UINT8                           DescriptorLength;
 180     UINT8                           Triggering;
 181     UINT8                           Polarity;
 182     UINT8                           Sharable;
 183     UINT8                           WakeCapable;
 184     UINT8                           InterruptCount;
 185     UINT8                           Interrupts[1];
 186 
 187 } ACPI_RESOURCE_IRQ;
 188 
 189 typedef struct acpi_resource_dma
 190 {
 191     UINT8                           Type;
 192     UINT8                           BusMaster;
 193     UINT8                           Transfer;
 194     UINT8                           ChannelCount;
 195     UINT8                           Channels[1];
 196 
 197 } ACPI_RESOURCE_DMA;
 198 
 199 typedef struct acpi_resource_start_dependent
 200 {
 201     UINT8                           DescriptorLength;
 202     UINT8                           CompatibilityPriority;
 203     UINT8                           PerformanceRobustness;
 204 
 205 } ACPI_RESOURCE_START_DEPENDENT;
 206 
 207 
 208 /*
 209  * The END_DEPENDENT_FUNCTIONS_RESOURCE struct is not
 210  * needed because it has no fields
 211  */
 212 
 213 
 214 typedef struct acpi_resource_io
 215 {
 216     UINT8                           IoDecode;
 217     UINT8                           Alignment;
 218     UINT8                           AddressLength;
 219     UINT16                          Minimum;
 220     UINT16                          Maximum;
 221 
 222 } ACPI_RESOURCE_IO;
 223 
 224 typedef struct acpi_resource_fixed_io
 225 {
 226     UINT16                          Address;
 227     UINT8                           AddressLength;
 228 
 229 } ACPI_RESOURCE_FIXED_IO;
 230 
 231 typedef struct acpi_resource_fixed_dma
 232 {
 233     UINT16                          RequestLines;
 234     UINT16                          Channels;
 235     UINT8                           Width;
 236 
 237 } ACPI_RESOURCE_FIXED_DMA;
 238 
 239 /* Values for Width field above */
 240 
 241 #define ACPI_DMA_WIDTH8                         0
 242 #define ACPI_DMA_WIDTH16                        1
 243 #define ACPI_DMA_WIDTH32                        2
 244 #define ACPI_DMA_WIDTH64                        3
 245 #define ACPI_DMA_WIDTH128                       4
 246 #define ACPI_DMA_WIDTH256                       5
 247 
 248 
 249 typedef struct acpi_resource_vendor
 250 {
 251     UINT16                          ByteLength;
 252     UINT8                           ByteData[1];
 253 
 254 } ACPI_RESOURCE_VENDOR;
 255 
 256 /* Vendor resource with UUID info (introduced in ACPI 3.0) */
 257 
 258 typedef struct acpi_resource_vendor_typed
 259 {
 260     UINT16                          ByteLength;
 261     UINT8                           UuidSubtype;
 262     UINT8                           Uuid[ACPI_UUID_LENGTH];
 263     UINT8                           ByteData[1];
 264 
 265 } ACPI_RESOURCE_VENDOR_TYPED;
 266 
 267 typedef struct acpi_resource_end_tag
 268 {
 269     UINT8                           Checksum;
 270 
 271 } ACPI_RESOURCE_END_TAG;
 272 
 273 typedef struct acpi_resource_memory24
 274 {
 275     UINT8                           WriteProtect;
 276     UINT16                          Minimum;
 277     UINT16                          Maximum;
 278     UINT16                          Alignment;
 279     UINT16                          AddressLength;
 280 
 281 } ACPI_RESOURCE_MEMORY24;
 282 
 283 typedef struct acpi_resource_memory32
 284 {
 285     UINT8                           WriteProtect;
 286     UINT32                          Minimum;
 287     UINT32                          Maximum;
 288     UINT32                          Alignment;
 289     UINT32                          AddressLength;
 290 
 291 } ACPI_RESOURCE_MEMORY32;
 292 
 293 typedef struct acpi_resource_fixed_memory32
 294 {
 295     UINT8                           WriteProtect;
 296     UINT32                          Address;
 297     UINT32                          AddressLength;
 298 
 299 } ACPI_RESOURCE_FIXED_MEMORY32;
 300 
 301 typedef struct acpi_memory_attribute
 302 {
 303     UINT8                           WriteProtect;
 304     UINT8                           Caching;
 305     UINT8                           RangeType;
 306     UINT8                           Translation;
 307 
 308 } ACPI_MEMORY_ATTRIBUTE;
 309 
 310 typedef struct acpi_io_attribute
 311 {
 312     UINT8                           RangeType;
 313     UINT8                           Translation;
 314     UINT8                           TranslationType;
 315     UINT8                           Reserved1;
 316 
 317 } ACPI_IO_ATTRIBUTE;
 318 
 319 typedef union acpi_resource_attribute
 320 {
 321     ACPI_MEMORY_ATTRIBUTE           Mem;
 322     ACPI_IO_ATTRIBUTE               Io;
 323 
 324     /* Used for the *WordSpace macros */
 325 
 326     UINT8                           TypeSpecific;
 327 
 328 } ACPI_RESOURCE_ATTRIBUTE;
 329 
 330 typedef struct acpi_resource_source
 331 {
 332     UINT8                           Index;
 333     UINT16                          StringLength;
 334     char                            *StringPtr;
 335 
 336 } ACPI_RESOURCE_SOURCE;
 337 
 338 /* Fields common to all address descriptors, 16/32/64 bit */
 339 
 340 #define ACPI_RESOURCE_ADDRESS_COMMON \
 341     UINT8                           ResourceType; \
 342     UINT8                           ProducerConsumer; \
 343     UINT8                           Decode; \
 344     UINT8                           MinAddressFixed; \
 345     UINT8                           MaxAddressFixed; \
 346     ACPI_RESOURCE_ATTRIBUTE         Info;
 347 
 348 typedef struct acpi_resource_address
 349 {
 350     ACPI_RESOURCE_ADDRESS_COMMON
 351 
 352 } ACPI_RESOURCE_ADDRESS;
 353 
 354 typedef struct acpi_resource_address16
 355 {
 356     ACPI_RESOURCE_ADDRESS_COMMON
 357     UINT16                          Granularity;
 358     UINT16                          Minimum;
 359     UINT16                          Maximum;
 360     UINT16                          TranslationOffset;
 361     UINT16                          AddressLength;
 362     ACPI_RESOURCE_SOURCE            ResourceSource;
 363 
 364 } ACPI_RESOURCE_ADDRESS16;
 365 
 366 typedef struct acpi_resource_address32
 367 {
 368     ACPI_RESOURCE_ADDRESS_COMMON
 369     UINT32                          Granularity;
 370     UINT32                          Minimum;
 371     UINT32                          Maximum;
 372     UINT32                          TranslationOffset;
 373     UINT32                          AddressLength;
 374     ACPI_RESOURCE_SOURCE            ResourceSource;
 375 
 376 } ACPI_RESOURCE_ADDRESS32;
 377 
 378 typedef struct acpi_resource_address64
 379 {
 380     ACPI_RESOURCE_ADDRESS_COMMON
 381     UINT64                          Granularity;
 382     UINT64                          Minimum;
 383     UINT64                          Maximum;
 384     UINT64                          TranslationOffset;
 385     UINT64                          AddressLength;
 386     ACPI_RESOURCE_SOURCE            ResourceSource;
 387 
 388 } ACPI_RESOURCE_ADDRESS64;
 389 
 390 typedef struct acpi_resource_extended_address64
 391 {
 392     ACPI_RESOURCE_ADDRESS_COMMON
 393     UINT8                           RevisionID;
 394     UINT64                          Granularity;
 395     UINT64                          Minimum;
 396     UINT64                          Maximum;
 397     UINT64                          TranslationOffset;
 398     UINT64                          AddressLength;
 399     UINT64                          TypeSpecific;
 400 
 401 } ACPI_RESOURCE_EXTENDED_ADDRESS64;
 402 
 403 typedef struct acpi_resource_extended_irq
 404 {
 405     UINT8                           ProducerConsumer;
 406     UINT8                           Triggering;
 407     UINT8                           Polarity;
 408     UINT8                           Sharable;
 409     UINT8                           WakeCapable;
 410     UINT8                           InterruptCount;
 411     ACPI_RESOURCE_SOURCE            ResourceSource;
 412     UINT32                          Interrupts[1];
 413 
 414 } ACPI_RESOURCE_EXTENDED_IRQ;
 415 
 416 typedef struct acpi_resource_generic_register
 417 {
 418     UINT8                           SpaceId;
 419     UINT8                           BitWidth;
 420     UINT8                           BitOffset;
 421     UINT8                           AccessSize;
 422     UINT64                          Address;
 423 
 424 } ACPI_RESOURCE_GENERIC_REGISTER;
 425 
 426 typedef struct acpi_resource_gpio
 427 {
 428     UINT8                           RevisionId;
 429     UINT8                           ConnectionType;
 430     UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
 431     UINT8                           PinConfig;
 432     UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
 433     UINT8                           WakeCapable;        /* For values, see Interrupt Attributes above */
 434     UINT8                           IoRestriction;
 435     UINT8                           Triggering;         /* For values, see Interrupt Attributes above */
 436     UINT8                           Polarity;           /* For values, see Interrupt Attributes above */
 437     UINT16                          DriveStrength;
 438     UINT16                          DebounceTimeout;
 439     UINT16                          PinTableLength;
 440     UINT16                          VendorLength;
 441     ACPI_RESOURCE_SOURCE            ResourceSource;
 442     UINT16                          *PinTable;
 443     UINT8                           *VendorData;
 444 
 445 } ACPI_RESOURCE_GPIO;
 446 
 447 /* Values for GPIO ConnectionType field above */
 448 
 449 #define ACPI_RESOURCE_GPIO_TYPE_INT             0
 450 #define ACPI_RESOURCE_GPIO_TYPE_IO              1
 451 
 452 /* Values for PinConfig field above */
 453 
 454 #define ACPI_PIN_CONFIG_DEFAULT                 0
 455 #define ACPI_PIN_CONFIG_PULLUP                  1
 456 #define ACPI_PIN_CONFIG_PULLDOWN                2
 457 #define ACPI_PIN_CONFIG_NOPULL                  3
 458 
 459 /* Values for IoRestriction field above */
 460 
 461 #define ACPI_IO_RESTRICT_NONE                   0
 462 #define ACPI_IO_RESTRICT_INPUT                  1
 463 #define ACPI_IO_RESTRICT_OUTPUT                 2
 464 #define ACPI_IO_RESTRICT_NONE_PRESERVE          3
 465 
 466 
 467 /* Common structure for I2C, SPI, and UART serial descriptors */
 468 
 469 #define ACPI_RESOURCE_SERIAL_COMMON \
 470     UINT8                           RevisionId; \
 471     UINT8                           Type; \
 472     UINT8                           ProducerConsumer;    /* For values, see Producer/Consumer above */\
 473     UINT8                           SlaveMode; \
 474     UINT8                           TypeRevisionId; \
 475     UINT16                          TypeDataLength; \
 476     UINT16                          VendorLength; \
 477     ACPI_RESOURCE_SOURCE            ResourceSource; \
 478     UINT8                           *VendorData;
 479 
 480 typedef struct acpi_resource_common_serialbus
 481 {
 482     ACPI_RESOURCE_SERIAL_COMMON
 483 
 484 } ACPI_RESOURCE_COMMON_SERIALBUS;
 485 
 486 /* Values for the Type field above */
 487 
 488 #define ACPI_RESOURCE_SERIAL_TYPE_I2C           1
 489 #define ACPI_RESOURCE_SERIAL_TYPE_SPI           2
 490 #define ACPI_RESOURCE_SERIAL_TYPE_UART          3
 491 
 492 /* Values for SlaveMode field above */
 493 
 494 #define ACPI_CONTROLLER_INITIATED               0
 495 #define ACPI_DEVICE_INITIATED                   1
 496 
 497 
 498 typedef struct acpi_resource_i2c_serialbus
 499 {
 500     ACPI_RESOURCE_SERIAL_COMMON
 501     UINT8                           AccessMode;
 502     UINT16                          SlaveAddress;
 503     UINT32                          ConnectionSpeed;
 504 
 505 } ACPI_RESOURCE_I2C_SERIALBUS;
 506 
 507 /* Values for AccessMode field above */
 508 
 509 #define ACPI_I2C_7BIT_MODE                      0
 510 #define ACPI_I2C_10BIT_MODE                     1
 511 
 512 
 513 typedef struct acpi_resource_spi_serialbus
 514 {
 515     ACPI_RESOURCE_SERIAL_COMMON
 516     UINT8                           WireMode;
 517     UINT8                           DevicePolarity;
 518     UINT8                           DataBitLength;
 519     UINT8                           ClockPhase;
 520     UINT8                           ClockPolarity;
 521     UINT16                          DeviceSelection;
 522     UINT32                          ConnectionSpeed;
 523 
 524 } ACPI_RESOURCE_SPI_SERIALBUS;
 525 
 526 /* Values for WireMode field above */
 527 
 528 #define ACPI_SPI_4WIRE_MODE                     0
 529 #define ACPI_SPI_3WIRE_MODE                     1
 530 
 531 /* Values for DevicePolarity field above */
 532 
 533 #define ACPI_SPI_ACTIVE_LOW                     0
 534 #define ACPI_SPI_ACTIVE_HIGH                    1
 535 
 536 /* Values for ClockPhase field above */
 537 
 538 #define ACPI_SPI_FIRST_PHASE                    0
 539 #define ACPI_SPI_SECOND_PHASE                   1
 540 
 541 /* Values for ClockPolarity field above */
 542 
 543 #define ACPI_SPI_START_LOW                      0
 544 #define ACPI_SPI_START_HIGH                     1
 545 
 546 
 547 typedef struct acpi_resource_uart_serialbus
 548 {
 549     ACPI_RESOURCE_SERIAL_COMMON
 550     UINT8                           Endian;
 551     UINT8                           DataBits;
 552     UINT8                           StopBits;
 553     UINT8                           FlowControl;
 554     UINT8                           Parity;
 555     UINT8                           LinesEnabled;
 556     UINT16                          RxFifoSize;
 557     UINT16                          TxFifoSize;
 558     UINT32                          DefaultBaudRate;
 559 
 560 } ACPI_RESOURCE_UART_SERIALBUS;
 561 
 562 /* Values for Endian field above */
 563 
 564 #define ACPI_UART_LITTLE_ENDIAN                 0
 565 #define ACPI_UART_BIG_ENDIAN                    1
 566 
 567 /* Values for DataBits field above */
 568 
 569 #define ACPI_UART_5_DATA_BITS                   0
 570 #define ACPI_UART_6_DATA_BITS                   1
 571 #define ACPI_UART_7_DATA_BITS                   2
 572 #define ACPI_UART_8_DATA_BITS                   3
 573 #define ACPI_UART_9_DATA_BITS                   4
 574 
 575 /* Values for StopBits field above */
 576 
 577 #define ACPI_UART_NO_STOP_BITS                  0
 578 #define ACPI_UART_1_STOP_BIT                    1
 579 #define ACPI_UART_1P5_STOP_BITS                 2
 580 #define ACPI_UART_2_STOP_BITS                   3
 581 
 582 /* Values for FlowControl field above */
 583 
 584 #define ACPI_UART_FLOW_CONTROL_NONE             0
 585 #define ACPI_UART_FLOW_CONTROL_HW               1
 586 #define ACPI_UART_FLOW_CONTROL_XON_XOFF         2
 587 
 588 /* Values for Parity field above */
 589 
 590 #define ACPI_UART_PARITY_NONE                   0
 591 #define ACPI_UART_PARITY_EVEN                   1
 592 #define ACPI_UART_PARITY_ODD                    2
 593 #define ACPI_UART_PARITY_MARK                   3
 594 #define ACPI_UART_PARITY_SPACE                  4
 595 
 596 /* Values for LinesEnabled bitfield above */
 597 
 598 #define ACPI_UART_CARRIER_DETECT                (1<<2)
 599 #define ACPI_UART_RING_INDICATOR                (1<<3)
 600 #define ACPI_UART_DATA_SET_READY                (1<<4)
 601 #define ACPI_UART_DATA_TERMINAL_READY           (1<<5)
 602 #define ACPI_UART_CLEAR_TO_SEND                 (1<<6)
 603 #define ACPI_UART_REQUEST_TO_SEND               (1<<7)
 604 
 605 
 606 /* ACPI_RESOURCE_TYPEs */
 607 
 608 #define ACPI_RESOURCE_TYPE_IRQ                  0
 609 #define ACPI_RESOURCE_TYPE_DMA                  1
 610 #define ACPI_RESOURCE_TYPE_START_DEPENDENT      2
 611 #define ACPI_RESOURCE_TYPE_END_DEPENDENT        3
 612 #define ACPI_RESOURCE_TYPE_IO                   4
 613 #define ACPI_RESOURCE_TYPE_FIXED_IO             5
 614 #define ACPI_RESOURCE_TYPE_VENDOR               6
 615 #define ACPI_RESOURCE_TYPE_END_TAG              7
 616 #define ACPI_RESOURCE_TYPE_MEMORY24             8
 617 #define ACPI_RESOURCE_TYPE_MEMORY32             9
 618 #define ACPI_RESOURCE_TYPE_FIXED_MEMORY32       10
 619 #define ACPI_RESOURCE_TYPE_ADDRESS16            11
 620 #define ACPI_RESOURCE_TYPE_ADDRESS32            12
 621 #define ACPI_RESOURCE_TYPE_ADDRESS64            13
 622 #define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64   14  /* ACPI 3.0 */
 623 #define ACPI_RESOURCE_TYPE_EXTENDED_IRQ         15
 624 #define ACPI_RESOURCE_TYPE_GENERIC_REGISTER     16
 625 #define ACPI_RESOURCE_TYPE_GPIO                 17  /* ACPI 5.0 */
 626 #define ACPI_RESOURCE_TYPE_FIXED_DMA            18  /* ACPI 5.0 */
 627 #define ACPI_RESOURCE_TYPE_SERIAL_BUS           19  /* ACPI 5.0 */
 628 #define ACPI_RESOURCE_TYPE_MAX                  19
 629 
 630 /* Master union for resource descriptors */
 631 
 632 typedef union acpi_resource_data
 633 {
 634     ACPI_RESOURCE_IRQ                       Irq;
 635     ACPI_RESOURCE_DMA                       Dma;
 636     ACPI_RESOURCE_START_DEPENDENT           StartDpf;
 637     ACPI_RESOURCE_IO                        Io;
 638     ACPI_RESOURCE_FIXED_IO                  FixedIo;
 639     ACPI_RESOURCE_FIXED_DMA                 FixedDma;
 640     ACPI_RESOURCE_VENDOR                    Vendor;
 641     ACPI_RESOURCE_VENDOR_TYPED              VendorTyped;
 642     ACPI_RESOURCE_END_TAG                   EndTag;
 643     ACPI_RESOURCE_MEMORY24                  Memory24;
 644     ACPI_RESOURCE_MEMORY32                  Memory32;
 645     ACPI_RESOURCE_FIXED_MEMORY32            FixedMemory32;
 646     ACPI_RESOURCE_ADDRESS16                 Address16;
 647     ACPI_RESOURCE_ADDRESS32                 Address32;
 648     ACPI_RESOURCE_ADDRESS64                 Address64;
 649     ACPI_RESOURCE_EXTENDED_ADDRESS64        ExtAddress64;
 650     ACPI_RESOURCE_EXTENDED_IRQ              ExtendedIrq;
 651     ACPI_RESOURCE_GENERIC_REGISTER          GenericReg;
 652     ACPI_RESOURCE_GPIO                      Gpio;
 653     ACPI_RESOURCE_I2C_SERIALBUS             I2cSerialBus;
 654     ACPI_RESOURCE_SPI_SERIALBUS             SpiSerialBus;
 655     ACPI_RESOURCE_UART_SERIALBUS            UartSerialBus;
 656     ACPI_RESOURCE_COMMON_SERIALBUS          CommonSerialBus;
 657 
 658     /* Common fields */
 659 
 660     ACPI_RESOURCE_ADDRESS                   Address;        /* Common 16/32/64 address fields */
 661 
 662 } ACPI_RESOURCE_DATA;
 663 
 664 
 665 /* Common resource header */
 666 
 667 typedef struct acpi_resource
 668 {
 669     UINT32                          Type;
 670     UINT32                          Length;
 671     ACPI_RESOURCE_DATA              Data;
 672 
 673 } ACPI_RESOURCE;
 674 
 675 /* restore default alignment */
 676 
 677 #pragma pack()
 678 
 679 
 680 #define ACPI_RS_SIZE_NO_DATA                8       /* Id + Length fields */
 681 #define ACPI_RS_SIZE_MIN                    (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (12)
 682 #define ACPI_RS_SIZE(Type)                  (UINT32) (ACPI_RS_SIZE_NO_DATA + sizeof (Type))
 683 
 684 /* Macro for walking resource templates with multiple descriptors */
 685 
 686 #define ACPI_NEXT_RESOURCE(Res) \
 687     ACPI_ADD_PTR (ACPI_RESOURCE, (Res), (Res)->Length)
 688 
 689 
 690 typedef struct acpi_pci_routing_table
 691 {
 692     UINT32                          Length;
 693     UINT32                          Pin;
 694     UINT64                          Address;        /* here for 64-bit alignment */
 695     UINT32                          SourceIndex;
 696     char                            Source[4];      /* pad to 64 bits so sizeof() works in all cases */
 697 
 698 } ACPI_PCI_ROUTING_TABLE;
 699 
 700 #endif /* __ACRESTYP_H__ */