1 /****************************************************************************** 2 * 3 * Module Name: amlresrc.h - AML resource descriptors 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2016, 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 /* acpisrc:StructDefs -- for acpisrc conversion */ 45 46 #ifndef __AMLRESRC_H 47 #define __AMLRESRC_H 48 49 50 /* 51 * Resource descriptor tags, as defined in the ACPI specification. 52 * Used to symbolically reference fields within a descriptor. 53 */ 54 #define ACPI_RESTAG_ADDRESS "_ADR" 55 #define ACPI_RESTAG_ALIGNMENT "_ALN" 56 #define ACPI_RESTAG_ADDRESSSPACE "_ASI" 57 #define ACPI_RESTAG_ACCESSSIZE "_ASZ" 58 #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT" 59 #define ACPI_RESTAG_BASEADDRESS "_BAS" 60 #define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */ 61 #define ACPI_RESTAG_DEBOUNCETIME "_DBT" 62 #define ACPI_RESTAG_DECODE "_DEC" 63 #define ACPI_RESTAG_DEVICEPOLARITY "_DPL" 64 #define ACPI_RESTAG_DMA "_DMA" 65 #define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */ 66 #define ACPI_RESTAG_DRIVESTRENGTH "_DRS" 67 #define ACPI_RESTAG_ENDIANNESS "_END" 68 #define ACPI_RESTAG_FLOWCONTROL "_FLC" 69 #define ACPI_RESTAG_GRANULARITY "_GRA" 70 #define ACPI_RESTAG_INTERRUPT "_INT" 71 #define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* ActiveLo(1), ActiveHi(0) */ 72 #define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), NoShare(0) */ 73 #define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */ 74 #define ACPI_RESTAG_IORESTRICTION "_IOR" 75 #define ACPI_RESTAG_LENGTH "_LEN" 76 #define ACPI_RESTAG_LINE "_LIN" 77 #define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */ 78 #define ACPI_RESTAG_MEMTYPE "_MEM" /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */ 79 #define ACPI_RESTAG_MAXADDR "_MAX" 80 #define ACPI_RESTAG_MINADDR "_MIN" 81 #define ACPI_RESTAG_MAXTYPE "_MAF" 82 #define ACPI_RESTAG_MINTYPE "_MIF" 83 #define ACPI_RESTAG_MODE "_MOD" 84 #define ACPI_RESTAG_PARITY "_PAR" 85 #define ACPI_RESTAG_PHASE "_PHA" 86 #define ACPI_RESTAG_PIN "_PIN" 87 #define ACPI_RESTAG_PINCONFIG "_PPI" 88 #define ACPI_RESTAG_POLARITY "_POL" 89 #define ACPI_RESTAG_REGISTERBITOFFSET "_RBO" 90 #define ACPI_RESTAG_REGISTERBITWIDTH "_RBW" 91 #define ACPI_RESTAG_RANGETYPE "_RNG" 92 #define ACPI_RESTAG_READWRITETYPE "_RW_" /* ReadOnly(0), Writeable (1) */ 93 #define ACPI_RESTAG_LENGTH_RX "_RXL" 94 #define ACPI_RESTAG_LENGTH_TX "_TXL" 95 #define ACPI_RESTAG_SLAVEMODE "_SLV" 96 #define ACPI_RESTAG_SPEED "_SPE" 97 #define ACPI_RESTAG_STOPBITS "_STB" 98 #define ACPI_RESTAG_TRANSLATION "_TRA" 99 #define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */ 100 #define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */ 101 #define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8And16(1), 16(2) */ 102 #define ACPI_RESTAG_VENDORDATA "_VEN" 103 104 105 /* Default sizes for "small" resource descriptors */ 106 107 #define ASL_RDESC_IRQ_SIZE 0x02 108 #define ASL_RDESC_DMA_SIZE 0x02 109 #define ASL_RDESC_ST_DEPEND_SIZE 0x00 110 #define ASL_RDESC_END_DEPEND_SIZE 0x00 111 #define ASL_RDESC_IO_SIZE 0x07 112 #define ASL_RDESC_FIXED_IO_SIZE 0x03 113 #define ASL_RDESC_FIXED_DMA_SIZE 0x05 114 #define ASL_RDESC_END_TAG_SIZE 0x01 115 116 117 typedef struct asl_resource_node 118 { 119 UINT32 BufferLength; 120 void *Buffer; 121 struct asl_resource_node *Next; 122 123 } ASL_RESOURCE_NODE; 124 125 typedef struct asl_resource_info 126 { 127 ACPI_PARSE_OBJECT *DescriptorTypeOp; /* Resource descriptor parse node */ 128 ACPI_PARSE_OBJECT *MappingOp; /* Used for mapfile support */ 129 UINT32 CurrentByteOffset; /* Offset in resource template */ 130 131 } ASL_RESOURCE_INFO; 132 133 134 /* Macros used to generate AML resource length fields */ 135 136 #define ACPI_AML_SIZE_LARGE(r) (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER)) 137 #define ACPI_AML_SIZE_SMALL(r) (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER)) 138 139 /* 140 * Resource descriptors defined in the ACPI specification. 141 * 142 * Packing/alignment must be BYTE because these descriptors 143 * are used to overlay the raw AML byte stream. 144 */ 145 #pragma pack(1) 146 147 /* 148 * SMALL descriptors 149 */ 150 #define AML_RESOURCE_SMALL_HEADER_COMMON \ 151 UINT8 DescriptorType; 152 153 typedef struct aml_resource_small_header 154 { 155 AML_RESOURCE_SMALL_HEADER_COMMON 156 157 } AML_RESOURCE_SMALL_HEADER; 158 159 160 typedef struct aml_resource_irq 161 { 162 AML_RESOURCE_SMALL_HEADER_COMMON 163 UINT16 IrqMask; 164 UINT8 Flags; 165 166 } AML_RESOURCE_IRQ; 167 168 169 typedef struct aml_resource_irq_noflags 170 { 171 AML_RESOURCE_SMALL_HEADER_COMMON 172 UINT16 IrqMask; 173 174 } AML_RESOURCE_IRQ_NOFLAGS; 175 176 177 typedef struct aml_resource_dma 178 { 179 AML_RESOURCE_SMALL_HEADER_COMMON 180 UINT8 DmaChannelMask; 181 UINT8 Flags; 182 183 } AML_RESOURCE_DMA; 184 185 186 typedef struct aml_resource_start_dependent 187 { 188 AML_RESOURCE_SMALL_HEADER_COMMON 189 UINT8 Flags; 190 191 } AML_RESOURCE_START_DEPENDENT; 192 193 194 typedef struct aml_resource_start_dependent_noprio 195 { 196 AML_RESOURCE_SMALL_HEADER_COMMON 197 198 } AML_RESOURCE_START_DEPENDENT_NOPRIO; 199 200 201 typedef struct aml_resource_end_dependent 202 { 203 AML_RESOURCE_SMALL_HEADER_COMMON 204 205 } AML_RESOURCE_END_DEPENDENT; 206 207 208 typedef struct aml_resource_io 209 { 210 AML_RESOURCE_SMALL_HEADER_COMMON 211 UINT8 Flags; 212 UINT16 Minimum; 213 UINT16 Maximum; 214 UINT8 Alignment; 215 UINT8 AddressLength; 216 217 } AML_RESOURCE_IO; 218 219 220 typedef struct aml_resource_fixed_io 221 { 222 AML_RESOURCE_SMALL_HEADER_COMMON 223 UINT16 Address; 224 UINT8 AddressLength; 225 226 } AML_RESOURCE_FIXED_IO; 227 228 229 typedef struct aml_resource_vendor_small 230 { 231 AML_RESOURCE_SMALL_HEADER_COMMON 232 233 } AML_RESOURCE_VENDOR_SMALL; 234 235 236 typedef struct aml_resource_end_tag 237 { 238 AML_RESOURCE_SMALL_HEADER_COMMON 239 UINT8 Checksum; 240 241 } AML_RESOURCE_END_TAG; 242 243 244 typedef struct aml_resource_fixed_dma 245 { 246 AML_RESOURCE_SMALL_HEADER_COMMON 247 UINT16 RequestLines; 248 UINT16 Channels; 249 UINT8 Width; 250 251 } AML_RESOURCE_FIXED_DMA; 252 253 254 /* 255 * LARGE descriptors 256 */ 257 #define AML_RESOURCE_LARGE_HEADER_COMMON \ 258 UINT8 DescriptorType;\ 259 UINT16 ResourceLength; 260 261 typedef struct aml_resource_large_header 262 { 263 AML_RESOURCE_LARGE_HEADER_COMMON 264 265 } AML_RESOURCE_LARGE_HEADER; 266 267 268 /* General Flags for address space resource descriptors */ 269 270 #define ACPI_RESOURCE_FLAG_DEC 2 271 #define ACPI_RESOURCE_FLAG_MIF 4 272 #define ACPI_RESOURCE_FLAG_MAF 8 273 274 typedef struct aml_resource_memory24 275 { 276 AML_RESOURCE_LARGE_HEADER_COMMON 277 UINT8 Flags; 278 UINT16 Minimum; 279 UINT16 Maximum; 280 UINT16 Alignment; 281 UINT16 AddressLength; 282 283 } AML_RESOURCE_MEMORY24; 284 285 286 typedef struct aml_resource_vendor_large 287 { 288 AML_RESOURCE_LARGE_HEADER_COMMON 289 290 } AML_RESOURCE_VENDOR_LARGE; 291 292 293 typedef struct aml_resource_memory32 294 { 295 AML_RESOURCE_LARGE_HEADER_COMMON 296 UINT8 Flags; 297 UINT32 Minimum; 298 UINT32 Maximum; 299 UINT32 Alignment; 300 UINT32 AddressLength; 301 302 } AML_RESOURCE_MEMORY32; 303 304 305 typedef struct aml_resource_fixed_memory32 306 { 307 AML_RESOURCE_LARGE_HEADER_COMMON 308 UINT8 Flags; 309 UINT32 Address; 310 UINT32 AddressLength; 311 312 } AML_RESOURCE_FIXED_MEMORY32; 313 314 315 #define AML_RESOURCE_ADDRESS_COMMON \ 316 UINT8 ResourceType; \ 317 UINT8 Flags; \ 318 UINT8 SpecificFlags; 319 320 321 typedef struct aml_resource_address 322 { 323 AML_RESOURCE_LARGE_HEADER_COMMON 324 AML_RESOURCE_ADDRESS_COMMON 325 326 } AML_RESOURCE_ADDRESS; 327 328 329 typedef struct aml_resource_extended_address64 330 { 331 AML_RESOURCE_LARGE_HEADER_COMMON 332 AML_RESOURCE_ADDRESS_COMMON 333 UINT8 RevisionID; 334 UINT8 Reserved; 335 UINT64 Granularity; 336 UINT64 Minimum; 337 UINT64 Maximum; 338 UINT64 TranslationOffset; 339 UINT64 AddressLength; 340 UINT64 TypeSpecific; 341 342 } AML_RESOURCE_EXTENDED_ADDRESS64; 343 344 #define AML_RESOURCE_EXTENDED_ADDRESS_REVISION 1 /* ACPI 3.0 */ 345 346 347 typedef struct aml_resource_address64 348 { 349 AML_RESOURCE_LARGE_HEADER_COMMON 350 AML_RESOURCE_ADDRESS_COMMON 351 UINT64 Granularity; 352 UINT64 Minimum; 353 UINT64 Maximum; 354 UINT64 TranslationOffset; 355 UINT64 AddressLength; 356 357 } AML_RESOURCE_ADDRESS64; 358 359 360 typedef struct aml_resource_address32 361 { 362 AML_RESOURCE_LARGE_HEADER_COMMON 363 AML_RESOURCE_ADDRESS_COMMON 364 UINT32 Granularity; 365 UINT32 Minimum; 366 UINT32 Maximum; 367 UINT32 TranslationOffset; 368 UINT32 AddressLength; 369 370 } AML_RESOURCE_ADDRESS32; 371 372 373 typedef struct aml_resource_address16 374 { 375 AML_RESOURCE_LARGE_HEADER_COMMON 376 AML_RESOURCE_ADDRESS_COMMON 377 UINT16 Granularity; 378 UINT16 Minimum; 379 UINT16 Maximum; 380 UINT16 TranslationOffset; 381 UINT16 AddressLength; 382 383 } AML_RESOURCE_ADDRESS16; 384 385 386 typedef struct aml_resource_extended_irq 387 { 388 AML_RESOURCE_LARGE_HEADER_COMMON 389 UINT8 Flags; 390 UINT8 InterruptCount; 391 UINT32 Interrupts[1]; 392 /* ResSourceIndex, ResSource optional fields follow */ 393 394 } AML_RESOURCE_EXTENDED_IRQ; 395 396 397 typedef struct aml_resource_generic_register 398 { 399 AML_RESOURCE_LARGE_HEADER_COMMON 400 UINT8 AddressSpaceId; 401 UINT8 BitWidth; 402 UINT8 BitOffset; 403 UINT8 AccessSize; /* ACPI 3.0, was previously Reserved */ 404 UINT64 Address; 405 406 } AML_RESOURCE_GENERIC_REGISTER; 407 408 409 /* Common descriptor for GpioInt and GpioIo (ACPI 5.0) */ 410 411 typedef struct aml_resource_gpio 412 { 413 AML_RESOURCE_LARGE_HEADER_COMMON 414 UINT8 RevisionId; 415 UINT8 ConnectionType; 416 UINT16 Flags; 417 UINT16 IntFlags; 418 UINT8 PinConfig; 419 UINT16 DriveStrength; 420 UINT16 DebounceTimeout; 421 UINT16 PinTableOffset; 422 UINT8 ResSourceIndex; 423 UINT16 ResSourceOffset; 424 UINT16 VendorOffset; 425 UINT16 VendorLength; 426 /* 427 * Optional fields follow immediately: 428 * 1) PIN list (Words) 429 * 2) Resource Source String 430 * 3) Vendor Data bytes 431 */ 432 433 } AML_RESOURCE_GPIO; 434 435 #define AML_RESOURCE_GPIO_REVISION 1 /* ACPI 5.0 */ 436 437 /* Values for ConnectionType above */ 438 439 #define AML_RESOURCE_GPIO_TYPE_INT 0 440 #define AML_RESOURCE_GPIO_TYPE_IO 1 441 #define AML_RESOURCE_MAX_GPIOTYPE 1 442 443 444 /* Common preamble for all serial descriptors (ACPI 5.0) */ 445 446 #define AML_RESOURCE_SERIAL_COMMON \ 447 UINT8 RevisionId; \ 448 UINT8 ResSourceIndex; \ 449 UINT8 Type; \ 450 UINT8 Flags; \ 451 UINT16 TypeSpecificFlags; \ 452 UINT8 TypeRevisionId; \ 453 UINT16 TypeDataLength; \ 454 455 /* Values for the type field above */ 456 457 #define AML_RESOURCE_I2C_SERIALBUSTYPE 1 458 #define AML_RESOURCE_SPI_SERIALBUSTYPE 2 459 #define AML_RESOURCE_UART_SERIALBUSTYPE 3 460 #define AML_RESOURCE_MAX_SERIALBUSTYPE 3 461 #define AML_RESOURCE_VENDOR_SERIALBUSTYPE 192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */ 462 463 typedef struct aml_resource_common_serialbus 464 { 465 AML_RESOURCE_LARGE_HEADER_COMMON 466 AML_RESOURCE_SERIAL_COMMON 467 468 } AML_RESOURCE_COMMON_SERIALBUS; 469 470 typedef struct aml_resource_i2c_serialbus 471 { 472 AML_RESOURCE_LARGE_HEADER_COMMON 473 AML_RESOURCE_SERIAL_COMMON 474 UINT32 ConnectionSpeed; 475 UINT16 SlaveAddress; 476 /* 477 * Optional fields follow immediately: 478 * 1) Vendor Data bytes 479 * 2) Resource Source String 480 */ 481 482 } AML_RESOURCE_I2C_SERIALBUS; 483 484 #define AML_RESOURCE_I2C_REVISION 1 /* ACPI 5.0 */ 485 #define AML_RESOURCE_I2C_TYPE_REVISION 1 /* ACPI 5.0 */ 486 #define AML_RESOURCE_I2C_MIN_DATA_LEN 6 487 488 typedef struct aml_resource_spi_serialbus 489 { 490 AML_RESOURCE_LARGE_HEADER_COMMON 491 AML_RESOURCE_SERIAL_COMMON 492 UINT32 ConnectionSpeed; 493 UINT8 DataBitLength; 494 UINT8 ClockPhase; 495 UINT8 ClockPolarity; 496 UINT16 DeviceSelection; 497 /* 498 * Optional fields follow immediately: 499 * 1) Vendor Data bytes 500 * 2) Resource Source String 501 */ 502 503 } AML_RESOURCE_SPI_SERIALBUS; 504 505 #define AML_RESOURCE_SPI_REVISION 1 /* ACPI 5.0 */ 506 #define AML_RESOURCE_SPI_TYPE_REVISION 1 /* ACPI 5.0 */ 507 #define AML_RESOURCE_SPI_MIN_DATA_LEN 9 508 509 510 typedef struct aml_resource_uart_serialbus 511 { 512 AML_RESOURCE_LARGE_HEADER_COMMON 513 AML_RESOURCE_SERIAL_COMMON 514 UINT32 DefaultBaudRate; 515 UINT16 RxFifoSize; 516 UINT16 TxFifoSize; 517 UINT8 Parity; 518 UINT8 LinesEnabled; 519 /* 520 * Optional fields follow immediately: 521 * 1) Vendor Data bytes 522 * 2) Resource Source String 523 */ 524 525 } AML_RESOURCE_UART_SERIALBUS; 526 527 #define AML_RESOURCE_UART_REVISION 1 /* ACPI 5.0 */ 528 #define AML_RESOURCE_UART_TYPE_REVISION 1 /* ACPI 5.0 */ 529 #define AML_RESOURCE_UART_MIN_DATA_LEN 10 530 531 532 /* restore default alignment */ 533 534 #pragma pack() 535 536 /* Union of all resource descriptors, so we can allocate the worst case */ 537 538 typedef union aml_resource 539 { 540 /* Descriptor headers */ 541 542 UINT8 DescriptorType; 543 AML_RESOURCE_SMALL_HEADER SmallHeader; 544 AML_RESOURCE_LARGE_HEADER LargeHeader; 545 546 /* Small resource descriptors */ 547 548 AML_RESOURCE_IRQ Irq; 549 AML_RESOURCE_DMA Dma; 550 AML_RESOURCE_START_DEPENDENT StartDpf; 551 AML_RESOURCE_END_DEPENDENT EndDpf; 552 AML_RESOURCE_IO Io; 553 AML_RESOURCE_FIXED_IO FixedIo; 554 AML_RESOURCE_FIXED_DMA FixedDma; 555 AML_RESOURCE_VENDOR_SMALL VendorSmall; 556 AML_RESOURCE_END_TAG EndTag; 557 558 /* Large resource descriptors */ 559 560 AML_RESOURCE_MEMORY24 Memory24; 561 AML_RESOURCE_GENERIC_REGISTER GenericReg; 562 AML_RESOURCE_VENDOR_LARGE VendorLarge; 563 AML_RESOURCE_MEMORY32 Memory32; 564 AML_RESOURCE_FIXED_MEMORY32 FixedMemory32; 565 AML_RESOURCE_ADDRESS16 Address16; 566 AML_RESOURCE_ADDRESS32 Address32; 567 AML_RESOURCE_ADDRESS64 Address64; 568 AML_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; 569 AML_RESOURCE_EXTENDED_IRQ ExtendedIrq; 570 AML_RESOURCE_GPIO Gpio; 571 AML_RESOURCE_I2C_SERIALBUS I2cSerialBus; 572 AML_RESOURCE_SPI_SERIALBUS SpiSerialBus; 573 AML_RESOURCE_UART_SERIALBUS UartSerialBus; 574 AML_RESOURCE_COMMON_SERIALBUS CommonSerialBus; 575 576 /* Utility overlays */ 577 578 AML_RESOURCE_ADDRESS Address; 579 UINT32 DwordItem; 580 UINT16 WordItem; 581 UINT8 ByteItem; 582 583 } AML_RESOURCE; 584 585 586 /* Interfaces used by both the disassembler and compiler */ 587 588 void 589 MpSaveGpioInfo ( 590 ACPI_PARSE_OBJECT *Op, 591 AML_RESOURCE *Resource, 592 UINT32 PinCount, 593 UINT16 *PinList, 594 char *DeviceName); 595 596 void 597 MpSaveSerialInfo ( 598 ACPI_PARSE_OBJECT *Op, 599 AML_RESOURCE *Resource, 600 char *DeviceName); 601 602 char * 603 MpGetHidFromParseTree ( 604 ACPI_NAMESPACE_NODE *HidNode); 605 606 char * 607 MpGetHidViaNamestring ( 608 char *DeviceName); 609 610 char * 611 MpGetConnectionInfo ( 612 ACPI_PARSE_OBJECT *Op, 613 UINT32 PinIndex, 614 ACPI_NAMESPACE_NODE **TargetNode, 615 char **TargetName); 616 617 char * 618 MpGetParentDeviceHid ( 619 ACPI_PARSE_OBJECT *Op, 620 ACPI_NAMESPACE_NODE **TargetNode, 621 char **ParentDeviceName); 622 623 char * 624 MpGetDdnValue ( 625 char *DeviceName); 626 627 char * 628 MpGetHidValue ( 629 ACPI_NAMESPACE_NODE *DeviceNode); 630 631 #endif 632