amlresrc.h revision 228110
1100966Siwasaki 2100966Siwasaki/****************************************************************************** 3100966Siwasaki * 4100966Siwasaki * Module Name: amlresrc.h - AML resource descriptors 5100966Siwasaki * 6100966Siwasaki *****************************************************************************/ 7100966Siwasaki 8217365Sjkim/* 9217365Sjkim * Copyright (C) 2000 - 2011, Intel Corp. 10100966Siwasaki * All rights reserved. 11100966Siwasaki * 12217365Sjkim * Redistribution and use in source and binary forms, with or without 13217365Sjkim * modification, are permitted provided that the following conditions 14217365Sjkim * are met: 15217365Sjkim * 1. Redistributions of source code must retain the above copyright 16217365Sjkim * notice, this list of conditions, and the following disclaimer, 17217365Sjkim * without modification. 18217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 19217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 20217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 21217365Sjkim * including a substantially similar Disclaimer requirement for further 22217365Sjkim * binary redistribution. 23217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 24217365Sjkim * of any contributors may be used to endorse or promote products derived 25217365Sjkim * from this software without specific prior written permission. 26100966Siwasaki * 27217365Sjkim * Alternatively, this software may be distributed under the terms of the 28217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 29217365Sjkim * Software Foundation. 30100966Siwasaki * 31217365Sjkim * NO WARRANTY 32217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 33217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 34217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 35217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 36217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 37217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 38217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 39217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 40217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 41217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 42217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 43217365Sjkim */ 44100966Siwasaki 45167802Sjkim/* acpisrc:StructDefs -- for acpisrc conversion */ 46100966Siwasaki 47100966Siwasaki#ifndef __AMLRESRC_H 48100966Siwasaki#define __AMLRESRC_H 49100966Siwasaki 50100966Siwasaki 51167802Sjkim/* 52167802Sjkim * Resource descriptor tags, as defined in the ACPI specification. 53167802Sjkim * Used to symbolically reference fields within a descriptor. 54167802Sjkim */ 55167802Sjkim#define ACPI_RESTAG_ADDRESS "_ADR" 56167802Sjkim#define ACPI_RESTAG_ALIGNMENT "_ALN" 57167802Sjkim#define ACPI_RESTAG_ADDRESSSPACE "_ASI" 58167802Sjkim#define ACPI_RESTAG_ACCESSSIZE "_ASZ" 59167802Sjkim#define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT" 60167802Sjkim#define ACPI_RESTAG_BASEADDRESS "_BAS" 61167802Sjkim#define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */ 62228110Sjkim#define ACPI_RESTAG_DEBOUNCETIME "_DBT" 63167802Sjkim#define ACPI_RESTAG_DECODE "_DEC" 64228110Sjkim#define ACPI_RESTAG_DEVICEPOLARITY "_DPL" 65167802Sjkim#define ACPI_RESTAG_DMA "_DMA" 66167802Sjkim#define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */ 67228110Sjkim#define ACPI_RESTAG_DRIVESTRENGTH "_DRS" 68228110Sjkim#define ACPI_RESTAG_ENDIANNESS "_END" 69228110Sjkim#define ACPI_RESTAG_FLOWCONTROL "_FLC" 70167802Sjkim#define ACPI_RESTAG_GRANULARITY "_GRA" 71167802Sjkim#define ACPI_RESTAG_INTERRUPT "_INT" 72167802Sjkim#define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* ActiveLo(1), ActiveHi(0) */ 73167802Sjkim#define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), NoShare(0) */ 74167802Sjkim#define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */ 75228110Sjkim#define ACPI_RESTAG_IORESTRICTION "_IOR" 76167802Sjkim#define ACPI_RESTAG_LENGTH "_LEN" 77228110Sjkim#define ACPI_RESTAG_LINE "_LIN" 78167802Sjkim#define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */ 79167802Sjkim#define ACPI_RESTAG_MEMTYPE "_MEM" /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */ 80167802Sjkim#define ACPI_RESTAG_MAXADDR "_MAX" 81167802Sjkim#define ACPI_RESTAG_MINADDR "_MIN" 82167802Sjkim#define ACPI_RESTAG_MAXTYPE "_MAF" 83167802Sjkim#define ACPI_RESTAG_MINTYPE "_MIF" 84228110Sjkim#define ACPI_RESTAG_MODE "_MOD" 85228110Sjkim#define ACPI_RESTAG_PARITY "_PAR" 86228110Sjkim#define ACPI_RESTAG_PHASE "_PHA" 87228110Sjkim#define ACPI_RESTAG_PIN "_PIN" 88228110Sjkim#define ACPI_RESTAG_PINCONFIG "_PPI" 89228110Sjkim#define ACPI_RESTAG_POLARITY "_POL" 90167802Sjkim#define ACPI_RESTAG_REGISTERBITOFFSET "_RBO" 91167802Sjkim#define ACPI_RESTAG_REGISTERBITWIDTH "_RBW" 92167802Sjkim#define ACPI_RESTAG_RANGETYPE "_RNG" 93167802Sjkim#define ACPI_RESTAG_READWRITETYPE "_RW_" /* ReadOnly(0), Writeable (1) */ 94228110Sjkim#define ACPI_RESTAG_LENGTH_RX "_RXL" 95228110Sjkim#define ACPI_RESTAG_LENGTH_TX "_TXL" 96228110Sjkim#define ACPI_RESTAG_SLAVEMODE "_SLV" 97228110Sjkim#define ACPI_RESTAG_SPEED "_SPE" 98228110Sjkim#define ACPI_RESTAG_STOPBITS "_STB" 99167802Sjkim#define ACPI_RESTAG_TRANSLATION "_TRA" 100167802Sjkim#define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */ 101167802Sjkim#define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */ 102167802Sjkim#define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8And16(1), 16(2) */ 103228110Sjkim#define ACPI_RESTAG_VENDORDATA "_VEN" 104100966Siwasaki 105100966Siwasaki 106100966Siwasaki/* Default sizes for "small" resource descriptors */ 107100966Siwasaki 108100966Siwasaki#define ASL_RDESC_IRQ_SIZE 0x02 109100966Siwasaki#define ASL_RDESC_DMA_SIZE 0x02 110100966Siwasaki#define ASL_RDESC_ST_DEPEND_SIZE 0x00 111100966Siwasaki#define ASL_RDESC_END_DEPEND_SIZE 0x00 112100966Siwasaki#define ASL_RDESC_IO_SIZE 0x07 113100966Siwasaki#define ASL_RDESC_FIXED_IO_SIZE 0x03 114228110Sjkim#define ASL_RDESC_FIXED_DMA_SIZE 0x05 115100966Siwasaki#define ASL_RDESC_END_TAG_SIZE 0x01 116100966Siwasaki 117100966Siwasaki 118100966Siwasakitypedef struct asl_resource_node 119100966Siwasaki{ 120167802Sjkim UINT32 BufferLength; 121167802Sjkim void *Buffer; 122167802Sjkim struct asl_resource_node *Next; 123100966Siwasaki 124100966Siwasaki} ASL_RESOURCE_NODE; 125100966Siwasaki 126100966Siwasaki 127167802Sjkim/* Macros used to generate AML resource length fields */ 128167802Sjkim 129167802Sjkim#define ACPI_AML_SIZE_LARGE(r) (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER)) 130167802Sjkim#define ACPI_AML_SIZE_SMALL(r) (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER)) 131167802Sjkim 132100966Siwasaki/* 133100966Siwasaki * Resource descriptors defined in the ACPI specification. 134100966Siwasaki * 135138287Smarks * Packing/alignment must be BYTE because these descriptors 136151937Sjkim * are used to overlay the raw AML byte stream. 137100966Siwasaki */ 138100966Siwasaki#pragma pack(1) 139100966Siwasaki 140151937Sjkim/* 141151937Sjkim * SMALL descriptors 142151937Sjkim */ 143151937Sjkim#define AML_RESOURCE_SMALL_HEADER_COMMON \ 144167802Sjkim UINT8 DescriptorType; 145151937Sjkim 146151937Sjkimtypedef struct aml_resource_small_header 147100966Siwasaki{ 148151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 149151937Sjkim 150151937Sjkim} AML_RESOURCE_SMALL_HEADER; 151151937Sjkim 152151937Sjkim 153151937Sjkimtypedef struct aml_resource_irq 154151937Sjkim{ 155151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 156167802Sjkim UINT16 IrqMask; 157167802Sjkim UINT8 Flags; 158100966Siwasaki 159151937Sjkim} AML_RESOURCE_IRQ; 160100966Siwasaki 161100966Siwasaki 162151937Sjkimtypedef struct aml_resource_irq_noflags 163100966Siwasaki{ 164151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 165167802Sjkim UINT16 IrqMask; 166100966Siwasaki 167151937Sjkim} AML_RESOURCE_IRQ_NOFLAGS; 168100966Siwasaki 169100966Siwasaki 170151937Sjkimtypedef struct aml_resource_dma 171100966Siwasaki{ 172151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 173167802Sjkim UINT8 DmaChannelMask; 174167802Sjkim UINT8 Flags; 175100966Siwasaki 176151937Sjkim} AML_RESOURCE_DMA; 177100966Siwasaki 178100966Siwasaki 179151937Sjkimtypedef struct aml_resource_start_dependent 180100966Siwasaki{ 181151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 182167802Sjkim UINT8 Flags; 183100966Siwasaki 184151937Sjkim} AML_RESOURCE_START_DEPENDENT; 185100966Siwasaki 186100966Siwasaki 187151937Sjkimtypedef struct aml_resource_start_dependent_noprio 188100966Siwasaki{ 189151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 190100966Siwasaki 191151937Sjkim} AML_RESOURCE_START_DEPENDENT_NOPRIO; 192100966Siwasaki 193100966Siwasaki 194151937Sjkimtypedef struct aml_resource_end_dependent 195100966Siwasaki{ 196151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 197100966Siwasaki 198151937Sjkim} AML_RESOURCE_END_DEPENDENT; 199100966Siwasaki 200100966Siwasaki 201151937Sjkimtypedef struct aml_resource_io 202100966Siwasaki{ 203151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 204167802Sjkim UINT8 Flags; 205167802Sjkim UINT16 Minimum; 206167802Sjkim UINT16 Maximum; 207167802Sjkim UINT8 Alignment; 208167802Sjkim UINT8 AddressLength; 209100966Siwasaki 210151937Sjkim} AML_RESOURCE_IO; 211100966Siwasaki 212100966Siwasaki 213151937Sjkimtypedef struct aml_resource_fixed_io 214100966Siwasaki{ 215151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 216167802Sjkim UINT16 Address; 217167802Sjkim UINT8 AddressLength; 218100966Siwasaki 219151937Sjkim} AML_RESOURCE_FIXED_IO; 220100966Siwasaki 221100966Siwasaki 222151937Sjkimtypedef struct aml_resource_vendor_small 223100966Siwasaki{ 224151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 225100966Siwasaki 226151937Sjkim} AML_RESOURCE_VENDOR_SMALL; 227100966Siwasaki 228100966Siwasaki 229151937Sjkimtypedef struct aml_resource_end_tag 230100966Siwasaki{ 231151937Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 232167802Sjkim UINT8 Checksum; 233100966Siwasaki 234151937Sjkim} AML_RESOURCE_END_TAG; 235100966Siwasaki 236100966Siwasaki 237228110Sjkimtypedef struct aml_resource_fixed_dma 238228110Sjkim{ 239228110Sjkim AML_RESOURCE_SMALL_HEADER_COMMON 240228110Sjkim UINT16 RequestLines; 241228110Sjkim UINT16 Channels; 242228110Sjkim UINT8 Width; 243228110Sjkim 244228110Sjkim} AML_RESOURCE_FIXED_DMA; 245228110Sjkim 246228110Sjkim 247151937Sjkim/* 248151937Sjkim * LARGE descriptors 249151937Sjkim */ 250151937Sjkim#define AML_RESOURCE_LARGE_HEADER_COMMON \ 251167802Sjkim UINT8 DescriptorType;\ 252167802Sjkim UINT16 ResourceLength; 253100966Siwasaki 254151937Sjkimtypedef struct aml_resource_large_header 255100966Siwasaki{ 256151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 257151937Sjkim 258151937Sjkim} AML_RESOURCE_LARGE_HEADER; 259151937Sjkim 260151937Sjkim 261207344Sjkim/* General Flags for address space resource descriptors */ 262207344Sjkim 263207344Sjkim#define ACPI_RESOURCE_FLAG_DEC 2 264207344Sjkim#define ACPI_RESOURCE_FLAG_MIF 4 265207344Sjkim#define ACPI_RESOURCE_FLAG_MAF 8 266207344Sjkim 267151937Sjkimtypedef struct aml_resource_memory24 268151937Sjkim{ 269151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 270167802Sjkim UINT8 Flags; 271167802Sjkim UINT16 Minimum; 272167802Sjkim UINT16 Maximum; 273167802Sjkim UINT16 Alignment; 274167802Sjkim UINT16 AddressLength; 275100966Siwasaki 276151937Sjkim} AML_RESOURCE_MEMORY24; 277100966Siwasaki 278100966Siwasaki 279151937Sjkimtypedef struct aml_resource_vendor_large 280100966Siwasaki{ 281151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 282100966Siwasaki 283151937Sjkim} AML_RESOURCE_VENDOR_LARGE; 284100966Siwasaki 285100966Siwasaki 286151937Sjkimtypedef struct aml_resource_memory32 287100966Siwasaki{ 288151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 289167802Sjkim UINT8 Flags; 290167802Sjkim UINT32 Minimum; 291167802Sjkim UINT32 Maximum; 292167802Sjkim UINT32 Alignment; 293167802Sjkim UINT32 AddressLength; 294100966Siwasaki 295151937Sjkim} AML_RESOURCE_MEMORY32; 296100966Siwasaki 297100966Siwasaki 298151937Sjkimtypedef struct aml_resource_fixed_memory32 299100966Siwasaki{ 300151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 301167802Sjkim UINT8 Flags; 302167802Sjkim UINT32 Address; 303167802Sjkim UINT32 AddressLength; 304100966Siwasaki 305151937Sjkim} AML_RESOURCE_FIXED_MEMORY32; 306100966Siwasaki 307100966Siwasaki 308151937Sjkim#define AML_RESOURCE_ADDRESS_COMMON \ 309167802Sjkim UINT8 ResourceType; \ 310167802Sjkim UINT8 Flags; \ 311167802Sjkim UINT8 SpecificFlags; 312151937Sjkim 313151937Sjkim 314151937Sjkimtypedef struct aml_resource_address 315100966Siwasaki{ 316151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 317151937Sjkim AML_RESOURCE_ADDRESS_COMMON 318151937Sjkim 319151937Sjkim} AML_RESOURCE_ADDRESS; 320151937Sjkim 321151937Sjkim 322151937Sjkimtypedef struct aml_resource_extended_address64 323151937Sjkim{ 324151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 325151937Sjkim AML_RESOURCE_ADDRESS_COMMON 326167802Sjkim UINT8 RevisionID; 327167802Sjkim UINT8 Reserved; 328167802Sjkim UINT64 Granularity; 329167802Sjkim UINT64 Minimum; 330167802Sjkim UINT64 Maximum; 331167802Sjkim UINT64 TranslationOffset; 332167802Sjkim UINT64 AddressLength; 333167802Sjkim UINT64 TypeSpecific; 334100966Siwasaki 335151937Sjkim} AML_RESOURCE_EXTENDED_ADDRESS64; 336100966Siwasaki 337151937Sjkim#define AML_RESOURCE_EXTENDED_ADDRESS_REVISION 1 /* ACPI 3.0 */ 338100966Siwasaki 339151937Sjkim 340151937Sjkimtypedef struct aml_resource_address64 341100966Siwasaki{ 342151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 343151937Sjkim AML_RESOURCE_ADDRESS_COMMON 344167802Sjkim UINT64 Granularity; 345167802Sjkim UINT64 Minimum; 346167802Sjkim UINT64 Maximum; 347167802Sjkim UINT64 TranslationOffset; 348167802Sjkim UINT64 AddressLength; 349151937Sjkim 350151937Sjkim} AML_RESOURCE_ADDRESS64; 351151937Sjkim 352151937Sjkim 353151937Sjkimtypedef struct aml_resource_address32 354151937Sjkim{ 355151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 356151937Sjkim AML_RESOURCE_ADDRESS_COMMON 357167802Sjkim UINT32 Granularity; 358167802Sjkim UINT32 Minimum; 359167802Sjkim UINT32 Maximum; 360167802Sjkim UINT32 TranslationOffset; 361167802Sjkim UINT32 AddressLength; 362100966Siwasaki 363151937Sjkim} AML_RESOURCE_ADDRESS32; 364100966Siwasaki 365100966Siwasaki 366151937Sjkimtypedef struct aml_resource_address16 367100966Siwasaki{ 368151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 369151937Sjkim AML_RESOURCE_ADDRESS_COMMON 370167802Sjkim UINT16 Granularity; 371167802Sjkim UINT16 Minimum; 372167802Sjkim UINT16 Maximum; 373167802Sjkim UINT16 TranslationOffset; 374167802Sjkim UINT16 AddressLength; 375100966Siwasaki 376151937Sjkim} AML_RESOURCE_ADDRESS16; 377100966Siwasaki 378100966Siwasaki 379151937Sjkimtypedef struct aml_resource_extended_irq 380100966Siwasaki{ 381151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 382167802Sjkim UINT8 Flags; 383167802Sjkim UINT8 InterruptCount; 384167802Sjkim UINT32 Interrupts[1]; 385100966Siwasaki /* ResSourceIndex, ResSource optional fields follow */ 386100966Siwasaki 387151937Sjkim} AML_RESOURCE_EXTENDED_IRQ; 388100966Siwasaki 389100966Siwasaki 390151937Sjkimtypedef struct aml_resource_generic_register 391100966Siwasaki{ 392151937Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 393167802Sjkim UINT8 AddressSpaceId; 394167802Sjkim UINT8 BitWidth; 395167802Sjkim UINT8 BitOffset; 396167802Sjkim UINT8 AccessSize; /* ACPI 3.0, was previously Reserved */ 397167802Sjkim UINT64 Address; 398100966Siwasaki 399151937Sjkim} AML_RESOURCE_GENERIC_REGISTER; 400100966Siwasaki 401228110Sjkim 402228110Sjkim/* Common descriptor for GpioInt and GpioIo (ACPI 5.0) */ 403228110Sjkim 404228110Sjkimtypedef struct aml_resource_gpio 405228110Sjkim{ 406228110Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 407228110Sjkim UINT8 RevisionId; 408228110Sjkim UINT8 ConnectionType; 409228110Sjkim UINT16 Flags; 410228110Sjkim UINT16 IntFlags; 411228110Sjkim UINT8 PinConfig; 412228110Sjkim UINT16 DriveStrength; 413228110Sjkim UINT16 DebounceTimeout; 414228110Sjkim UINT16 PinTableOffset; 415228110Sjkim UINT8 ResSourceIndex; 416228110Sjkim UINT16 ResSourceOffset; 417228110Sjkim UINT16 VendorOffset; 418228110Sjkim UINT16 VendorLength; 419228110Sjkim /* 420228110Sjkim * Optional fields follow immediately: 421228110Sjkim * 1) PIN list (Words) 422228110Sjkim * 2) Resource Source String 423228110Sjkim * 3) Vendor Data bytes 424228110Sjkim */ 425228110Sjkim 426228110Sjkim} AML_RESOURCE_GPIO; 427228110Sjkim 428228110Sjkim#define AML_RESOURCE_GPIO_REVISION 1 /* ACPI 5.0 */ 429228110Sjkim 430228110Sjkim/* Values for ConnectionType above */ 431228110Sjkim 432228110Sjkim#define AML_RESOURCE_GPIO_TYPE_INT 0 433228110Sjkim#define AML_RESOURCE_GPIO_TYPE_IO 1 434228110Sjkim#define AML_RESOURCE_MAX_GPIOTYPE 1 435228110Sjkim 436228110Sjkim 437228110Sjkim/* Common preamble for all serial descriptors (ACPI 5.0) */ 438228110Sjkim 439228110Sjkim#define AML_RESOURCE_SERIAL_COMMON \ 440228110Sjkim UINT8 RevisionId; \ 441228110Sjkim UINT8 ResSourceIndex; \ 442228110Sjkim UINT8 Type; \ 443228110Sjkim UINT8 Flags; \ 444228110Sjkim UINT16 TypeSpecificFlags; \ 445228110Sjkim UINT8 TypeRevisionId; \ 446228110Sjkim UINT16 TypeDataLength; \ 447228110Sjkim 448228110Sjkim/* Values for the type field above */ 449228110Sjkim 450228110Sjkim#define AML_RESOURCE_I2C_SERIALBUSTYPE 1 451228110Sjkim#define AML_RESOURCE_SPI_SERIALBUSTYPE 2 452228110Sjkim#define AML_RESOURCE_UART_SERIALBUSTYPE 3 453228110Sjkim#define AML_RESOURCE_MAX_SERIALBUSTYPE 3 454228110Sjkim#define AML_RESOURCE_VENDOR_SERIALBUSTYPE 192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */ 455228110Sjkim 456228110Sjkimtypedef struct aml_resource_common_serialbus 457228110Sjkim{ 458228110Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 459228110Sjkim AML_RESOURCE_SERIAL_COMMON 460228110Sjkim 461228110Sjkim} AML_RESOURCE_COMMON_SERIALBUS; 462228110Sjkim 463228110Sjkimtypedef struct aml_resource_i2c_serialbus 464228110Sjkim{ 465228110Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 466228110Sjkim AML_RESOURCE_SERIAL_COMMON 467228110Sjkim UINT32 ConnectionSpeed; 468228110Sjkim UINT16 SlaveAddress; 469228110Sjkim /* 470228110Sjkim * Optional fields follow immediately: 471228110Sjkim * 1) Vendor Data bytes 472228110Sjkim * 2) Resource Source String 473228110Sjkim */ 474228110Sjkim 475228110Sjkim} AML_RESOURCE_I2C_SERIALBUS; 476228110Sjkim 477228110Sjkim#define AML_RESOURCE_I2C_REVISION 1 /* ACPI 5.0 */ 478228110Sjkim#define AML_RESOURCE_I2C_TYPE_REVISION 1 /* ACPI 5.0 */ 479228110Sjkim#define AML_RESOURCE_I2C_MIN_DATA_LEN 6 480228110Sjkim 481228110Sjkimtypedef struct aml_resource_spi_serialbus 482228110Sjkim{ 483228110Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 484228110Sjkim AML_RESOURCE_SERIAL_COMMON 485228110Sjkim UINT32 ConnectionSpeed; 486228110Sjkim UINT8 DataBitLength; 487228110Sjkim UINT8 ClockPhase; 488228110Sjkim UINT8 ClockPolarity; 489228110Sjkim UINT16 DeviceSelection; 490228110Sjkim /* 491228110Sjkim * Optional fields follow immediately: 492228110Sjkim * 1) Vendor Data bytes 493228110Sjkim * 2) Resource Source String 494228110Sjkim */ 495228110Sjkim 496228110Sjkim} AML_RESOURCE_SPI_SERIALBUS; 497228110Sjkim 498228110Sjkim#define AML_RESOURCE_SPI_REVISION 1 /* ACPI 5.0 */ 499228110Sjkim#define AML_RESOURCE_SPI_TYPE_REVISION 1 /* ACPI 5.0 */ 500228110Sjkim#define AML_RESOURCE_SPI_MIN_DATA_LEN 9 501228110Sjkim 502228110Sjkim 503228110Sjkimtypedef struct aml_resource_uart_serialbus 504228110Sjkim{ 505228110Sjkim AML_RESOURCE_LARGE_HEADER_COMMON 506228110Sjkim AML_RESOURCE_SERIAL_COMMON 507228110Sjkim UINT32 DefaultBaudRate; 508228110Sjkim UINT16 RxFifoSize; 509228110Sjkim UINT16 TxFifoSize; 510228110Sjkim UINT8 Parity; 511228110Sjkim UINT8 LinesEnabled; 512228110Sjkim /* 513228110Sjkim * Optional fields follow immediately: 514228110Sjkim * 1) Vendor Data bytes 515228110Sjkim * 2) Resource Source String 516228110Sjkim */ 517228110Sjkim 518228110Sjkim} AML_RESOURCE_UART_SERIALBUS; 519228110Sjkim 520228110Sjkim#define AML_RESOURCE_UART_REVISION 1 /* ACPI 5.0 */ 521228110Sjkim#define AML_RESOURCE_UART_TYPE_REVISION 1 /* ACPI 5.0 */ 522228110Sjkim#define AML_RESOURCE_UART_MIN_DATA_LEN 10 523228110Sjkim 524228110Sjkim 525100966Siwasaki/* restore default alignment */ 526100966Siwasaki 527100966Siwasaki#pragma pack() 528100966Siwasaki 529138287Smarks/* Union of all resource descriptors, so we can allocate the worst case */ 530100966Siwasaki 531151937Sjkimtypedef union aml_resource 532100966Siwasaki{ 533151937Sjkim /* Descriptor headers */ 534100966Siwasaki 535167802Sjkim UINT8 DescriptorType; 536167802Sjkim AML_RESOURCE_SMALL_HEADER SmallHeader; 537167802Sjkim AML_RESOURCE_LARGE_HEADER LargeHeader; 538100966Siwasaki 539151937Sjkim /* Small resource descriptors */ 540100966Siwasaki 541167802Sjkim AML_RESOURCE_IRQ Irq; 542167802Sjkim AML_RESOURCE_DMA Dma; 543167802Sjkim AML_RESOURCE_START_DEPENDENT StartDpf; 544167802Sjkim AML_RESOURCE_END_DEPENDENT EndDpf; 545167802Sjkim AML_RESOURCE_IO Io; 546167802Sjkim AML_RESOURCE_FIXED_IO FixedIo; 547228110Sjkim AML_RESOURCE_FIXED_DMA FixedDma; 548167802Sjkim AML_RESOURCE_VENDOR_SMALL VendorSmall; 549167802Sjkim AML_RESOURCE_END_TAG EndTag; 550100966Siwasaki 551151937Sjkim /* Large resource descriptors */ 552151937Sjkim 553167802Sjkim AML_RESOURCE_MEMORY24 Memory24; 554167802Sjkim AML_RESOURCE_GENERIC_REGISTER GenericReg; 555167802Sjkim AML_RESOURCE_VENDOR_LARGE VendorLarge; 556167802Sjkim AML_RESOURCE_MEMORY32 Memory32; 557167802Sjkim AML_RESOURCE_FIXED_MEMORY32 FixedMemory32; 558167802Sjkim AML_RESOURCE_ADDRESS16 Address16; 559167802Sjkim AML_RESOURCE_ADDRESS32 Address32; 560167802Sjkim AML_RESOURCE_ADDRESS64 Address64; 561167802Sjkim AML_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; 562167802Sjkim AML_RESOURCE_EXTENDED_IRQ ExtendedIrq; 563228110Sjkim AML_RESOURCE_GPIO Gpio; 564228110Sjkim AML_RESOURCE_I2C_SERIALBUS I2cSerialBus; 565228110Sjkim AML_RESOURCE_SPI_SERIALBUS SpiSerialBus; 566228110Sjkim AML_RESOURCE_UART_SERIALBUS UartSerialBus; 567228110Sjkim AML_RESOURCE_COMMON_SERIALBUS CommonSerialBus; 568151937Sjkim 569151937Sjkim /* Utility overlays */ 570151937Sjkim 571167802Sjkim AML_RESOURCE_ADDRESS Address; 572167802Sjkim UINT32 DwordItem; 573167802Sjkim UINT16 WordItem; 574167802Sjkim UINT8 ByteItem; 575151937Sjkim 576151937Sjkim} AML_RESOURCE; 577151937Sjkim 578100966Siwasaki#endif 579100966Siwasaki 580