rsinfo.c revision 217365
1151937Sjkim/******************************************************************************* 2151937Sjkim * 3151937Sjkim * Module Name: rsinfo - Dispatch and Info tables 4151937Sjkim * 5151937Sjkim ******************************************************************************/ 6151937Sjkim 7217365Sjkim/* 8217365Sjkim * Copyright (C) 2000 - 2011, Intel Corp. 9151937Sjkim * All rights reserved. 10151937Sjkim * 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. 25151937Sjkim * 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. 29151937Sjkim * 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 */ 43151937Sjkim 44151937Sjkim#define __RSINFO_C__ 45151937Sjkim 46193341Sjkim#include <contrib/dev/acpica/include/acpi.h> 47193341Sjkim#include <contrib/dev/acpica/include/accommon.h> 48193341Sjkim#include <contrib/dev/acpica/include/acresrc.h> 49151937Sjkim 50151937Sjkim#define _COMPONENT ACPI_RESOURCES 51151937Sjkim ACPI_MODULE_NAME ("rsinfo") 52151937Sjkim 53151937Sjkim/* 54151937Sjkim * Resource dispatch and information tables. Any new resource types (either 55151937Sjkim * Large or Small) must be reflected in each of these tables, so they are here 56151937Sjkim * in one place. 57151937Sjkim * 58151937Sjkim * The tables for Large descriptors are indexed by bits 6:0 of the AML 59151937Sjkim * descriptor type byte. The tables for Small descriptors are indexed by 60151937Sjkim * bits 6:3 of the descriptor byte. The tables for internal resource 61151937Sjkim * descriptors are indexed by the ACPI_RESOURCE_TYPE field. 62151937Sjkim */ 63151937Sjkim 64151937Sjkim 65151937Sjkim/* Dispatch table for resource-to-AML (Set Resource) conversion functions */ 66151937Sjkim 67151937SjkimACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[] = 68151937Sjkim{ 69151937Sjkim AcpiRsSetIrq, /* 0x00, ACPI_RESOURCE_TYPE_IRQ */ 70151937Sjkim AcpiRsConvertDma, /* 0x01, ACPI_RESOURCE_TYPE_DMA */ 71151937Sjkim AcpiRsSetStartDpf, /* 0x02, ACPI_RESOURCE_TYPE_START_DEPENDENT */ 72151937Sjkim AcpiRsConvertEndDpf, /* 0x03, ACPI_RESOURCE_TYPE_END_DEPENDENT */ 73151937Sjkim AcpiRsConvertIo, /* 0x04, ACPI_RESOURCE_TYPE_IO */ 74151937Sjkim AcpiRsConvertFixedIo, /* 0x05, ACPI_RESOURCE_TYPE_FIXED_IO */ 75151937Sjkim AcpiRsSetVendor, /* 0x06, ACPI_RESOURCE_TYPE_VENDOR */ 76151937Sjkim AcpiRsConvertEndTag, /* 0x07, ACPI_RESOURCE_TYPE_END_TAG */ 77151937Sjkim AcpiRsConvertMemory24, /* 0x08, ACPI_RESOURCE_TYPE_MEMORY24 */ 78151937Sjkim AcpiRsConvertMemory32, /* 0x09, ACPI_RESOURCE_TYPE_MEMORY32 */ 79151937Sjkim AcpiRsConvertFixedMemory32, /* 0x0A, ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ 80151937Sjkim AcpiRsConvertAddress16, /* 0x0B, ACPI_RESOURCE_TYPE_ADDRESS16 */ 81151937Sjkim AcpiRsConvertAddress32, /* 0x0C, ACPI_RESOURCE_TYPE_ADDRESS32 */ 82151937Sjkim AcpiRsConvertAddress64, /* 0x0D, ACPI_RESOURCE_TYPE_ADDRESS64 */ 83151937Sjkim AcpiRsConvertExtAddress64, /* 0x0E, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ 84151937Sjkim AcpiRsConvertExtIrq, /* 0x0F, ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ 85151937Sjkim AcpiRsConvertGenericReg /* 0x10, ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ 86151937Sjkim}; 87151937Sjkim 88151937Sjkim/* Dispatch tables for AML-to-resource (Get Resource) conversion functions */ 89151937Sjkim 90167802SjkimACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[] = 91151937Sjkim{ 92167802Sjkim /* Small descriptors */ 93167802Sjkim 94151937Sjkim NULL, /* 0x00, Reserved */ 95151937Sjkim NULL, /* 0x01, Reserved */ 96151937Sjkim NULL, /* 0x02, Reserved */ 97151937Sjkim NULL, /* 0x03, Reserved */ 98151937Sjkim AcpiRsGetIrq, /* 0x04, ACPI_RESOURCE_NAME_IRQ */ 99151937Sjkim AcpiRsConvertDma, /* 0x05, ACPI_RESOURCE_NAME_DMA */ 100151937Sjkim AcpiRsGetStartDpf, /* 0x06, ACPI_RESOURCE_NAME_START_DEPENDENT */ 101151937Sjkim AcpiRsConvertEndDpf, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */ 102151937Sjkim AcpiRsConvertIo, /* 0x08, ACPI_RESOURCE_NAME_IO */ 103151937Sjkim AcpiRsConvertFixedIo, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO */ 104151937Sjkim NULL, /* 0x0A, Reserved */ 105151937Sjkim NULL, /* 0x0B, Reserved */ 106151937Sjkim NULL, /* 0x0C, Reserved */ 107151937Sjkim NULL, /* 0x0D, Reserved */ 108151937Sjkim AcpiRsGetVendorSmall, /* 0x0E, ACPI_RESOURCE_NAME_VENDOR_SMALL */ 109167802Sjkim AcpiRsConvertEndTag, /* 0x0F, ACPI_RESOURCE_NAME_END_TAG */ 110151937Sjkim 111167802Sjkim /* Large descriptors */ 112167802Sjkim 113151937Sjkim NULL, /* 0x00, Reserved */ 114151937Sjkim AcpiRsConvertMemory24, /* 0x01, ACPI_RESOURCE_NAME_MEMORY24 */ 115151937Sjkim AcpiRsConvertGenericReg, /* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */ 116151937Sjkim NULL, /* 0x03, Reserved */ 117151937Sjkim AcpiRsGetVendorLarge, /* 0x04, ACPI_RESOURCE_NAME_VENDOR_LARGE */ 118151937Sjkim AcpiRsConvertMemory32, /* 0x05, ACPI_RESOURCE_NAME_MEMORY32 */ 119151937Sjkim AcpiRsConvertFixedMemory32, /* 0x06, ACPI_RESOURCE_NAME_FIXED_MEMORY32 */ 120151937Sjkim AcpiRsConvertAddress32, /* 0x07, ACPI_RESOURCE_NAME_ADDRESS32 */ 121151937Sjkim AcpiRsConvertAddress16, /* 0x08, ACPI_RESOURCE_NAME_ADDRESS16 */ 122151937Sjkim AcpiRsConvertExtIrq, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_IRQ */ 123151937Sjkim AcpiRsConvertAddress64, /* 0x0A, ACPI_RESOURCE_NAME_ADDRESS64 */ 124151937Sjkim AcpiRsConvertExtAddress64 /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */ 125151937Sjkim}; 126151937Sjkim 127151937Sjkim 128151937Sjkim#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 129151937Sjkim 130151937Sjkim/* Dispatch table for resource dump functions */ 131151937Sjkim 132151937SjkimACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[] = 133151937Sjkim{ 134151937Sjkim AcpiRsDumpIrq, /* ACPI_RESOURCE_TYPE_IRQ */ 135151937Sjkim AcpiRsDumpDma, /* ACPI_RESOURCE_TYPE_DMA */ 136151937Sjkim AcpiRsDumpStartDpf, /* ACPI_RESOURCE_TYPE_START_DEPENDENT */ 137151937Sjkim AcpiRsDumpEndDpf, /* ACPI_RESOURCE_TYPE_END_DEPENDENT */ 138151937Sjkim AcpiRsDumpIo, /* ACPI_RESOURCE_TYPE_IO */ 139151937Sjkim AcpiRsDumpFixedIo, /* ACPI_RESOURCE_TYPE_FIXED_IO */ 140151937Sjkim AcpiRsDumpVendor, /* ACPI_RESOURCE_TYPE_VENDOR */ 141151937Sjkim AcpiRsDumpEndTag, /* ACPI_RESOURCE_TYPE_END_TAG */ 142151937Sjkim AcpiRsDumpMemory24, /* ACPI_RESOURCE_TYPE_MEMORY24 */ 143151937Sjkim AcpiRsDumpMemory32, /* ACPI_RESOURCE_TYPE_MEMORY32 */ 144151937Sjkim AcpiRsDumpFixedMemory32, /* ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ 145151937Sjkim AcpiRsDumpAddress16, /* ACPI_RESOURCE_TYPE_ADDRESS16 */ 146151937Sjkim AcpiRsDumpAddress32, /* ACPI_RESOURCE_TYPE_ADDRESS32 */ 147151937Sjkim AcpiRsDumpAddress64, /* ACPI_RESOURCE_TYPE_ADDRESS64 */ 148151937Sjkim AcpiRsDumpExtAddress64, /* ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ 149151937Sjkim AcpiRsDumpExtIrq, /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ 150151937Sjkim AcpiRsDumpGenericReg, /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ 151151937Sjkim}; 152151937Sjkim#endif 153151937Sjkim 154151937Sjkim 155151937Sjkim/* 156151937Sjkim * Base sizes for external AML resource descriptors, indexed by internal type. 157151937Sjkim * Includes size of the descriptor header (1 byte for small descriptors, 158151937Sjkim * 3 bytes for large descriptors) 159151937Sjkim */ 160151937Sjkimconst UINT8 AcpiGbl_AmlResourceSizes[] = 161151937Sjkim{ 162151937Sjkim sizeof (AML_RESOURCE_IRQ), /* ACPI_RESOURCE_TYPE_IRQ (optional Byte 3 always created) */ 163151937Sjkim sizeof (AML_RESOURCE_DMA), /* ACPI_RESOURCE_TYPE_DMA */ 164151937Sjkim sizeof (AML_RESOURCE_START_DEPENDENT), /* ACPI_RESOURCE_TYPE_START_DEPENDENT (optional Byte 1 always created) */ 165151937Sjkim sizeof (AML_RESOURCE_END_DEPENDENT), /* ACPI_RESOURCE_TYPE_END_DEPENDENT */ 166151937Sjkim sizeof (AML_RESOURCE_IO), /* ACPI_RESOURCE_TYPE_IO */ 167151937Sjkim sizeof (AML_RESOURCE_FIXED_IO), /* ACPI_RESOURCE_TYPE_FIXED_IO */ 168151937Sjkim sizeof (AML_RESOURCE_VENDOR_SMALL), /* ACPI_RESOURCE_TYPE_VENDOR */ 169151937Sjkim sizeof (AML_RESOURCE_END_TAG), /* ACPI_RESOURCE_TYPE_END_TAG */ 170151937Sjkim sizeof (AML_RESOURCE_MEMORY24), /* ACPI_RESOURCE_TYPE_MEMORY24 */ 171151937Sjkim sizeof (AML_RESOURCE_MEMORY32), /* ACPI_RESOURCE_TYPE_MEMORY32 */ 172151937Sjkim sizeof (AML_RESOURCE_FIXED_MEMORY32), /* ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ 173151937Sjkim sizeof (AML_RESOURCE_ADDRESS16), /* ACPI_RESOURCE_TYPE_ADDRESS16 */ 174151937Sjkim sizeof (AML_RESOURCE_ADDRESS32), /* ACPI_RESOURCE_TYPE_ADDRESS32 */ 175151937Sjkim sizeof (AML_RESOURCE_ADDRESS64), /* ACPI_RESOURCE_TYPE_ADDRESS64 */ 176151937Sjkim sizeof (AML_RESOURCE_EXTENDED_ADDRESS64),/*ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ 177151937Sjkim sizeof (AML_RESOURCE_EXTENDED_IRQ), /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ 178151937Sjkim sizeof (AML_RESOURCE_GENERIC_REGISTER) /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ 179151937Sjkim}; 180151937Sjkim 181151937Sjkim 182167802Sjkimconst UINT8 AcpiGbl_ResourceStructSizes[] = 183167802Sjkim{ 184167802Sjkim /* Small descriptors */ 185151937Sjkim 186167802Sjkim 0, 187167802Sjkim 0, 188167802Sjkim 0, 189167802Sjkim 0, 190167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_IRQ), 191167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_DMA), 192167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_START_DEPENDENT), 193167802Sjkim ACPI_RS_SIZE_MIN, 194167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_IO), 195167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_IO), 196167802Sjkim 0, 197167802Sjkim 0, 198167802Sjkim 0, 199167802Sjkim 0, 200167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), 201167802Sjkim ACPI_RS_SIZE_MIN, 202151937Sjkim 203167802Sjkim /* Large descriptors */ 204151937Sjkim 205167802Sjkim 0, 206167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY24), 207167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_GENERIC_REGISTER), 208167802Sjkim 0, 209167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), 210167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY32), 211167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_MEMORY32), 212167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS32), 213167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS16), 214167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_IRQ), 215167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS64), 216167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_ADDRESS64) 217151937Sjkim}; 218151937Sjkim 219