acresrc.h revision 217365
167754Smsmith/****************************************************************************** 267754Smsmith * 367754Smsmith * Name: acresrc.h - Resource Manager function prototypes 467754Smsmith * 567754Smsmith *****************************************************************************/ 667754Smsmith 7217365Sjkim/* 8217365Sjkim * Copyright (C) 2000 - 2011, Intel Corp. 970243Smsmith * All rights reserved. 1067754Smsmith * 11217365Sjkim * Redistribution and use in source and binary forms, with or without 12217365Sjkim * modification, are permitted provided that the following conditions 13217365Sjkim * are met: 14217365Sjkim * 1. Redistributions of source code must retain the above copyright 15217365Sjkim * notice, this list of conditions, and the following disclaimer, 16217365Sjkim * without modification. 17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20217365Sjkim * including a substantially similar Disclaimer requirement for further 21217365Sjkim * binary redistribution. 22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23217365Sjkim * of any contributors may be used to endorse or promote products derived 24217365Sjkim * from this software without specific prior written permission. 2567754Smsmith * 26217365Sjkim * Alternatively, this software may be distributed under the terms of the 27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28217365Sjkim * Software Foundation. 2967754Smsmith * 30217365Sjkim * NO WARRANTY 31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 42217365Sjkim */ 4367754Smsmith 4467754Smsmith#ifndef __ACRESRC_H__ 4567754Smsmith#define __ACRESRC_H__ 4667754Smsmith 47151937Sjkim/* Need the AML resource descriptor structs */ 4867754Smsmith 49193341Sjkim#include <contrib/dev/acpica/include/amlresrc.h> 50151937Sjkim 51151937Sjkim 5267754Smsmith/* 53151937Sjkim * If possible, pack the following structures to byte alignment, since we 54167802Sjkim * don't care about performance for debug output. Two cases where we cannot 55167802Sjkim * pack the structures: 56167802Sjkim * 57167802Sjkim * 1) Hardware does not support misaligned memory transfers 58167802Sjkim * 2) Compiler does not support pointers within packed structures 5967754Smsmith */ 60167802Sjkim#if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) 61151937Sjkim#pragma pack(1) 62151937Sjkim#endif 6367754Smsmith 64151937Sjkim/* 65151937Sjkim * Individual entry for the resource conversion tables 66151937Sjkim */ 67151937Sjkimtypedef const struct acpi_rsconvert_info 68151937Sjkim{ 69151937Sjkim UINT8 Opcode; 70151937Sjkim UINT8 ResourceOffset; 71151937Sjkim UINT8 AmlOffset; 72151937Sjkim UINT8 Value; 7367754Smsmith 74151937Sjkim} ACPI_RSCONVERT_INFO; 7567754Smsmith 76151937Sjkim/* Resource conversion opcodes */ 7767754Smsmith 78151937Sjkim#define ACPI_RSC_INITGET 0 79151937Sjkim#define ACPI_RSC_INITSET 1 80151937Sjkim#define ACPI_RSC_FLAGINIT 2 81151937Sjkim#define ACPI_RSC_1BITFLAG 3 82151937Sjkim#define ACPI_RSC_2BITFLAG 4 83151937Sjkim#define ACPI_RSC_COUNT 5 84151937Sjkim#define ACPI_RSC_COUNT16 6 85151937Sjkim#define ACPI_RSC_LENGTH 7 86151937Sjkim#define ACPI_RSC_MOVE8 8 87151937Sjkim#define ACPI_RSC_MOVE16 9 88151937Sjkim#define ACPI_RSC_MOVE32 10 89151937Sjkim#define ACPI_RSC_MOVE64 11 90151937Sjkim#define ACPI_RSC_SET8 12 91151937Sjkim#define ACPI_RSC_DATA8 13 92151937Sjkim#define ACPI_RSC_ADDRESS 14 93151937Sjkim#define ACPI_RSC_SOURCE 15 94151937Sjkim#define ACPI_RSC_SOURCEX 16 95151937Sjkim#define ACPI_RSC_BITMASK 17 96151937Sjkim#define ACPI_RSC_BITMASK16 18 97151937Sjkim#define ACPI_RSC_EXIT_NE 19 98151937Sjkim#define ACPI_RSC_EXIT_LE 20 99193267Sjkim#define ACPI_RSC_EXIT_EQ 21 10067754Smsmith 101151937Sjkim/* Resource Conversion sub-opcodes */ 102114237Snjl 103151937Sjkim#define ACPI_RSC_COMPARE_AML_LENGTH 0 104151937Sjkim#define ACPI_RSC_COMPARE_VALUE 1 10567754Smsmith 106151937Sjkim#define ACPI_RSC_TABLE_SIZE(d) (sizeof (d) / sizeof (ACPI_RSCONVERT_INFO)) 10767754Smsmith 108151937Sjkim#define ACPI_RS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_RESOURCE,f) 109151937Sjkim#define AML_OFFSET(f) (UINT8) ACPI_OFFSET (AML_RESOURCE,f) 11067754Smsmith 11167754Smsmith 112151937Sjkimtypedef const struct acpi_rsdump_info 113151937Sjkim{ 114151937Sjkim UINT8 Opcode; 115151937Sjkim UINT8 Offset; 116151937Sjkim char *Name; 117167802Sjkim const char **Pointer; 11899679Siwasaki 119151937Sjkim} ACPI_RSDUMP_INFO; 120102550Siwasaki 121151937Sjkim/* Values for the Opcode field above */ 12299679Siwasaki 123151937Sjkim#define ACPI_RSD_TITLE 0 124151937Sjkim#define ACPI_RSD_LITERAL 1 125151937Sjkim#define ACPI_RSD_STRING 2 126151937Sjkim#define ACPI_RSD_UINT8 3 127151937Sjkim#define ACPI_RSD_UINT16 4 128151937Sjkim#define ACPI_RSD_UINT32 5 129151937Sjkim#define ACPI_RSD_UINT64 6 130151937Sjkim#define ACPI_RSD_1BITFLAG 7 131151937Sjkim#define ACPI_RSD_2BITFLAG 8 132151937Sjkim#define ACPI_RSD_SHORTLIST 9 133151937Sjkim#define ACPI_RSD_LONGLIST 10 134151937Sjkim#define ACPI_RSD_DWORDLIST 11 135151937Sjkim#define ACPI_RSD_ADDRESS 12 136151937Sjkim#define ACPI_RSD_SOURCE 13 13799679Siwasaki 138151937Sjkim/* restore default alignment */ 13999679Siwasaki 140151937Sjkim#pragma pack() 14199679Siwasaki 14299679Siwasaki 143151937Sjkim/* Resource tables indexed by internal resource type */ 14499679Siwasaki 145151937Sjkimextern const UINT8 AcpiGbl_AmlResourceSizes[]; 146151937Sjkimextern ACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[]; 14799679Siwasaki 148151937Sjkim/* Resource tables indexed by raw AML resource descriptor type */ 14967754Smsmith 150167802Sjkimextern const UINT8 AcpiGbl_ResourceStructSizes[]; 151167802Sjkimextern ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[]; 15267754Smsmith 15367754Smsmith 154167802Sjkimtypedef struct acpi_vendor_walk_info 155167802Sjkim{ 156167802Sjkim ACPI_VENDOR_UUID *Uuid; 157167802Sjkim ACPI_BUFFER *Buffer; 158167802Sjkim ACPI_STATUS Status; 159167802Sjkim 160167802Sjkim} ACPI_VENDOR_WALK_INFO; 161167802Sjkim 162167802Sjkim 163151937Sjkim/* 164151937Sjkim * rscreate 165151937Sjkim */ 16667754SmsmithACPI_STATUS 167151937SjkimAcpiRsCreateResourceList ( 168151937Sjkim ACPI_OPERAND_OBJECT *AmlBuffer, 169151937Sjkim ACPI_BUFFER *OutputBuffer); 17067754Smsmith 17167754SmsmithACPI_STATUS 172151937SjkimAcpiRsCreateAmlResources ( 17377424Smsmith ACPI_RESOURCE *LinkedListBuffer, 174151937Sjkim ACPI_BUFFER *OutputBuffer); 17567754Smsmith 17667754SmsmithACPI_STATUS 177151937SjkimAcpiRsCreatePciRoutingTable ( 17867754Smsmith ACPI_OPERAND_OBJECT *PackageObject, 179151937Sjkim ACPI_BUFFER *OutputBuffer); 18067754Smsmith 18167754Smsmith 182151937Sjkim/* 183151937Sjkim * rsutils 184151937Sjkim */ 18567754SmsmithACPI_STATUS 186151937SjkimAcpiRsGetPrtMethodData ( 187167802Sjkim ACPI_NAMESPACE_NODE *Node, 188151937Sjkim ACPI_BUFFER *RetBuffer); 18967754Smsmith 19067754SmsmithACPI_STATUS 191151937SjkimAcpiRsGetCrsMethodData ( 192167802Sjkim ACPI_NAMESPACE_NODE *Node, 193151937Sjkim ACPI_BUFFER *RetBuffer); 19467754Smsmith 19567754SmsmithACPI_STATUS 196151937SjkimAcpiRsGetPrsMethodData ( 197167802Sjkim ACPI_NAMESPACE_NODE *Node, 198151937Sjkim ACPI_BUFFER *RetBuffer); 19967754Smsmith 20067754SmsmithACPI_STATUS 201151937SjkimAcpiRsGetMethodData ( 202151937Sjkim ACPI_HANDLE Handle, 203151937Sjkim char *Path, 204151937Sjkim ACPI_BUFFER *RetBuffer); 20567754Smsmith 20667754SmsmithACPI_STATUS 207151937SjkimAcpiRsSetSrsMethodData ( 208167802Sjkim ACPI_NAMESPACE_NODE *Node, 209151937Sjkim ACPI_BUFFER *RetBuffer); 21067754Smsmith 21167754Smsmith 212151937Sjkim/* 213151937Sjkim * rscalc 214151937Sjkim */ 21567754SmsmithACPI_STATUS 216151937SjkimAcpiRsGetListLength ( 217151937Sjkim UINT8 *AmlBuffer, 218151937Sjkim UINT32 AmlBufferLength, 219151937Sjkim ACPI_SIZE *SizeNeeded); 22067754Smsmith 22167754SmsmithACPI_STATUS 222151937SjkimAcpiRsGetAmlLength ( 223151937Sjkim ACPI_RESOURCE *LinkedListBuffer, 224151937Sjkim ACPI_SIZE *SizeNeeded); 22567754Smsmith 22667754SmsmithACPI_STATUS 227151937SjkimAcpiRsGetPciRoutingTableLength ( 228151937Sjkim ACPI_OPERAND_OBJECT *PackageObject, 229151937Sjkim ACPI_SIZE *BufferSizeNeeded); 23067754Smsmith 23167754SmsmithACPI_STATUS 232151937SjkimAcpiRsConvertAmlToResources ( 233167802Sjkim UINT8 *Aml, 234167802Sjkim UINT32 Length, 235167802Sjkim UINT32 Offset, 236167802Sjkim UINT8 ResourceIndex, 237167802Sjkim void *Context); 23867754Smsmith 23967754SmsmithACPI_STATUS 240151937SjkimAcpiRsConvertResourcesToAml ( 241151937Sjkim ACPI_RESOURCE *Resource, 242151937Sjkim ACPI_SIZE AmlSizeNeeded, 243151937Sjkim UINT8 *OutputBuffer); 24467754Smsmith 24567754Smsmith 246151937Sjkim/* 247151937Sjkim * rsaddr 248151937Sjkim */ 249151937Sjkimvoid 250151937SjkimAcpiRsSetAddressCommon ( 251151937Sjkim AML_RESOURCE *Aml, 252151937Sjkim ACPI_RESOURCE *Resource); 25367754Smsmith 254151937SjkimBOOLEAN 255151937SjkimAcpiRsGetAddressCommon ( 256151937Sjkim ACPI_RESOURCE *Resource, 257151937Sjkim AML_RESOURCE *Aml); 25877424Smsmith 25977424Smsmith 260151937Sjkim/* 261151937Sjkim * rsmisc 262151937Sjkim */ 26377424SmsmithACPI_STATUS 264151937SjkimAcpiRsConvertAmlToResource ( 265151937Sjkim ACPI_RESOURCE *Resource, 266151937Sjkim AML_RESOURCE *Aml, 267151937Sjkim ACPI_RSCONVERT_INFO *Info); 26867754Smsmith 26967754SmsmithACPI_STATUS 270151937SjkimAcpiRsConvertResourceToAml ( 271151937Sjkim ACPI_RESOURCE *Resource, 272151937Sjkim AML_RESOURCE *Aml, 273151937Sjkim ACPI_RSCONVERT_INFO *Info); 27467754Smsmith 27567754Smsmith 276151937Sjkim/* 277151937Sjkim * rsutils 278151937Sjkim */ 279151937Sjkimvoid 280151937SjkimAcpiRsMoveData ( 281151937Sjkim void *Destination, 282151937Sjkim void *Source, 283151937Sjkim UINT16 ItemCount, 284151937Sjkim UINT8 MoveType); 28567754Smsmith 286151937SjkimUINT8 287151937SjkimAcpiRsDecodeBitmask ( 288151937Sjkim UINT16 Mask, 289151937Sjkim UINT8 *List); 29067754Smsmith 291151937SjkimUINT16 292151937SjkimAcpiRsEncodeBitmask ( 293151937Sjkim UINT8 *List, 294151937Sjkim UINT8 Count); 29567754Smsmith 296151937SjkimACPI_RS_LENGTH 297151937SjkimAcpiRsGetResourceSource ( 298151937Sjkim ACPI_RS_LENGTH ResourceLength, 299151937Sjkim ACPI_RS_LENGTH MinimumLength, 300151937Sjkim ACPI_RESOURCE_SOURCE *ResourceSource, 301151937Sjkim AML_RESOURCE *Aml, 302151937Sjkim char *StringPtr); 30367754Smsmith 304151937SjkimACPI_RSDESC_SIZE 305151937SjkimAcpiRsSetResourceSource ( 306151937Sjkim AML_RESOURCE *Aml, 307151937Sjkim ACPI_RS_LENGTH MinimumLength, 308151937Sjkim ACPI_RESOURCE_SOURCE *ResourceSource); 30967754Smsmith 310151937Sjkimvoid 311151937SjkimAcpiRsSetResourceHeader ( 312151937Sjkim UINT8 DescriptorType, 313151937Sjkim ACPI_RSDESC_SIZE TotalLength, 314151937Sjkim AML_RESOURCE *Aml); 31567754Smsmith 316151937Sjkimvoid 317151937SjkimAcpiRsSetResourceLength ( 318151937Sjkim ACPI_RSDESC_SIZE TotalLength, 319151937Sjkim AML_RESOURCE *Aml); 32067754Smsmith 32167754Smsmith 322151937Sjkim/* 323151937Sjkim * rsdump 324151937Sjkim */ 325151937Sjkimvoid 326151937SjkimAcpiRsDumpResourceList ( 327151937Sjkim ACPI_RESOURCE *Resource); 32867754Smsmith 329151937Sjkimvoid 330151937SjkimAcpiRsDumpIrqList ( 331151937Sjkim UINT8 *RouteTable); 33267754Smsmith 33367754Smsmith 334151937Sjkim/* 335151937Sjkim * Resource conversion tables 336151937Sjkim */ 337151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertDma[]; 338151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertEndDpf[]; 339151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertIo[]; 340151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertFixedIo[]; 341151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertEndTag[]; 342151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertMemory24[]; 343151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertGenericReg[]; 344151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertMemory32[]; 345151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertFixedMemory32[]; 346151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertAddress32[]; 347151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertAddress16[]; 348151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertExtIrq[]; 349151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertAddress64[]; 350151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsConvertExtAddress64[]; 35167754Smsmith 352151937Sjkim/* These resources require separate get/set tables */ 35367754Smsmith 354151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsGetIrq[]; 355151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsGetStartDpf[]; 356151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsGetVendorSmall[]; 357151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsGetVendorLarge[]; 358151937Sjkim 359151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsSetIrq[]; 360151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsSetStartDpf[]; 361151937Sjkimextern ACPI_RSCONVERT_INFO AcpiRsSetVendor[]; 362151937Sjkim 363151937Sjkim 364151937Sjkim#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 365151937Sjkim/* 366151937Sjkim * rsinfo 367151937Sjkim */ 368151937Sjkimextern ACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[]; 369151937Sjkim 370151937Sjkim/* 371151937Sjkim * rsdump 372151937Sjkim */ 373151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpIrq[]; 374151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpDma[]; 375151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpStartDpf[]; 376151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpEndDpf[]; 377151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpIo[]; 378151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpFixedIo[]; 379151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpVendor[]; 380151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpEndTag[]; 381151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpMemory24[]; 382151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpMemory32[]; 383151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpFixedMemory32[]; 384151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpAddress16[]; 385151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpAddress32[]; 386151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpAddress64[]; 387151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpExtAddress64[]; 388151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpExtIrq[]; 389151937Sjkimextern ACPI_RSDUMP_INFO AcpiRsDumpGenericReg[]; 390151937Sjkim#endif 391151937Sjkim 39267754Smsmith#endif /* __ACRESRC_H__ */ 393