1151937Sjkim/******************************************************************************* 2151937Sjkim * 3151937Sjkim * Module Name: rsinfo - Dispatch and Info tables 4151937Sjkim * 5151937Sjkim ******************************************************************************/ 6151937Sjkim 7217365Sjkim/* 8306536Sjkim * Copyright (C) 2000 - 2016, 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 44193341Sjkim#include <contrib/dev/acpica/include/acpi.h> 45193341Sjkim#include <contrib/dev/acpica/include/accommon.h> 46193341Sjkim#include <contrib/dev/acpica/include/acresrc.h> 47151937Sjkim 48151937Sjkim#define _COMPONENT ACPI_RESOURCES 49151937Sjkim ACPI_MODULE_NAME ("rsinfo") 50151937Sjkim 51151937Sjkim/* 52151937Sjkim * Resource dispatch and information tables. Any new resource types (either 53151937Sjkim * Large or Small) must be reflected in each of these tables, so they are here 54151937Sjkim * in one place. 55151937Sjkim * 56151937Sjkim * The tables for Large descriptors are indexed by bits 6:0 of the AML 57151937Sjkim * descriptor type byte. The tables for Small descriptors are indexed by 58151937Sjkim * bits 6:3 of the descriptor byte. The tables for internal resource 59151937Sjkim * descriptors are indexed by the ACPI_RESOURCE_TYPE field. 60151937Sjkim */ 61151937Sjkim 62151937Sjkim 63151937Sjkim/* Dispatch table for resource-to-AML (Set Resource) conversion functions */ 64151937Sjkim 65151937SjkimACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[] = 66151937Sjkim{ 67151937Sjkim AcpiRsSetIrq, /* 0x00, ACPI_RESOURCE_TYPE_IRQ */ 68151937Sjkim AcpiRsConvertDma, /* 0x01, ACPI_RESOURCE_TYPE_DMA */ 69151937Sjkim AcpiRsSetStartDpf, /* 0x02, ACPI_RESOURCE_TYPE_START_DEPENDENT */ 70151937Sjkim AcpiRsConvertEndDpf, /* 0x03, ACPI_RESOURCE_TYPE_END_DEPENDENT */ 71151937Sjkim AcpiRsConvertIo, /* 0x04, ACPI_RESOURCE_TYPE_IO */ 72151937Sjkim AcpiRsConvertFixedIo, /* 0x05, ACPI_RESOURCE_TYPE_FIXED_IO */ 73151937Sjkim AcpiRsSetVendor, /* 0x06, ACPI_RESOURCE_TYPE_VENDOR */ 74151937Sjkim AcpiRsConvertEndTag, /* 0x07, ACPI_RESOURCE_TYPE_END_TAG */ 75151937Sjkim AcpiRsConvertMemory24, /* 0x08, ACPI_RESOURCE_TYPE_MEMORY24 */ 76151937Sjkim AcpiRsConvertMemory32, /* 0x09, ACPI_RESOURCE_TYPE_MEMORY32 */ 77151937Sjkim AcpiRsConvertFixedMemory32, /* 0x0A, ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ 78151937Sjkim AcpiRsConvertAddress16, /* 0x0B, ACPI_RESOURCE_TYPE_ADDRESS16 */ 79151937Sjkim AcpiRsConvertAddress32, /* 0x0C, ACPI_RESOURCE_TYPE_ADDRESS32 */ 80151937Sjkim AcpiRsConvertAddress64, /* 0x0D, ACPI_RESOURCE_TYPE_ADDRESS64 */ 81151937Sjkim AcpiRsConvertExtAddress64, /* 0x0E, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ 82151937Sjkim AcpiRsConvertExtIrq, /* 0x0F, ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ 83228110Sjkim AcpiRsConvertGenericReg, /* 0x10, ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ 84228110Sjkim AcpiRsConvertGpio, /* 0x11, ACPI_RESOURCE_TYPE_GPIO */ 85228110Sjkim AcpiRsConvertFixedDma, /* 0x12, ACPI_RESOURCE_TYPE_FIXED_DMA */ 86228110Sjkim NULL, /* 0x13, ACPI_RESOURCE_TYPE_SERIAL_BUS - Use subtype table below */ 87151937Sjkim}; 88151937Sjkim 89151937Sjkim/* Dispatch tables for AML-to-resource (Get Resource) conversion functions */ 90151937Sjkim 91167802SjkimACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[] = 92151937Sjkim{ 93167802Sjkim /* Small descriptors */ 94167802Sjkim 95151937Sjkim NULL, /* 0x00, Reserved */ 96151937Sjkim NULL, /* 0x01, Reserved */ 97151937Sjkim NULL, /* 0x02, Reserved */ 98151937Sjkim NULL, /* 0x03, Reserved */ 99151937Sjkim AcpiRsGetIrq, /* 0x04, ACPI_RESOURCE_NAME_IRQ */ 100151937Sjkim AcpiRsConvertDma, /* 0x05, ACPI_RESOURCE_NAME_DMA */ 101151937Sjkim AcpiRsGetStartDpf, /* 0x06, ACPI_RESOURCE_NAME_START_DEPENDENT */ 102151937Sjkim AcpiRsConvertEndDpf, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */ 103151937Sjkim AcpiRsConvertIo, /* 0x08, ACPI_RESOURCE_NAME_IO */ 104151937Sjkim AcpiRsConvertFixedIo, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO */ 105228110Sjkim AcpiRsConvertFixedDma, /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */ 106151937Sjkim NULL, /* 0x0B, Reserved */ 107151937Sjkim NULL, /* 0x0C, Reserved */ 108151937Sjkim NULL, /* 0x0D, Reserved */ 109151937Sjkim AcpiRsGetVendorSmall, /* 0x0E, ACPI_RESOURCE_NAME_VENDOR_SMALL */ 110167802Sjkim AcpiRsConvertEndTag, /* 0x0F, ACPI_RESOURCE_NAME_END_TAG */ 111151937Sjkim 112167802Sjkim /* Large descriptors */ 113167802Sjkim 114151937Sjkim NULL, /* 0x00, Reserved */ 115151937Sjkim AcpiRsConvertMemory24, /* 0x01, ACPI_RESOURCE_NAME_MEMORY24 */ 116151937Sjkim AcpiRsConvertGenericReg, /* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */ 117151937Sjkim NULL, /* 0x03, Reserved */ 118151937Sjkim AcpiRsGetVendorLarge, /* 0x04, ACPI_RESOURCE_NAME_VENDOR_LARGE */ 119151937Sjkim AcpiRsConvertMemory32, /* 0x05, ACPI_RESOURCE_NAME_MEMORY32 */ 120151937Sjkim AcpiRsConvertFixedMemory32, /* 0x06, ACPI_RESOURCE_NAME_FIXED_MEMORY32 */ 121151937Sjkim AcpiRsConvertAddress32, /* 0x07, ACPI_RESOURCE_NAME_ADDRESS32 */ 122151937Sjkim AcpiRsConvertAddress16, /* 0x08, ACPI_RESOURCE_NAME_ADDRESS16 */ 123151937Sjkim AcpiRsConvertExtIrq, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_IRQ */ 124151937Sjkim AcpiRsConvertAddress64, /* 0x0A, ACPI_RESOURCE_NAME_ADDRESS64 */ 125228110Sjkim AcpiRsConvertExtAddress64, /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */ 126228110Sjkim AcpiRsConvertGpio, /* 0x0C, ACPI_RESOURCE_NAME_GPIO */ 127228110Sjkim NULL, /* 0x0D, Reserved */ 128228110Sjkim NULL, /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS - Use subtype table below */ 129151937Sjkim}; 130151937Sjkim 131228110Sjkim/* Subtype table for SerialBus -- I2C, SPI, and UART */ 132151937Sjkim 133228110SjkimACPI_RSCONVERT_INFO *AcpiGbl_ConvertResourceSerialBusDispatch[] = 134228110Sjkim{ 135228110Sjkim NULL, 136228110Sjkim AcpiRsConvertI2cSerialBus, 137228110Sjkim AcpiRsConvertSpiSerialBus, 138228110Sjkim AcpiRsConvertUartSerialBus, 139228110Sjkim}; 140228110Sjkim 141228110Sjkim 142281075Sdim#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUGGER) 143151937Sjkim 144151937Sjkim/* Dispatch table for resource dump functions */ 145151937Sjkim 146151937SjkimACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[] = 147151937Sjkim{ 148151937Sjkim AcpiRsDumpIrq, /* ACPI_RESOURCE_TYPE_IRQ */ 149151937Sjkim AcpiRsDumpDma, /* ACPI_RESOURCE_TYPE_DMA */ 150151937Sjkim AcpiRsDumpStartDpf, /* ACPI_RESOURCE_TYPE_START_DEPENDENT */ 151151937Sjkim AcpiRsDumpEndDpf, /* ACPI_RESOURCE_TYPE_END_DEPENDENT */ 152151937Sjkim AcpiRsDumpIo, /* ACPI_RESOURCE_TYPE_IO */ 153151937Sjkim AcpiRsDumpFixedIo, /* ACPI_RESOURCE_TYPE_FIXED_IO */ 154151937Sjkim AcpiRsDumpVendor, /* ACPI_RESOURCE_TYPE_VENDOR */ 155151937Sjkim AcpiRsDumpEndTag, /* ACPI_RESOURCE_TYPE_END_TAG */ 156151937Sjkim AcpiRsDumpMemory24, /* ACPI_RESOURCE_TYPE_MEMORY24 */ 157151937Sjkim AcpiRsDumpMemory32, /* ACPI_RESOURCE_TYPE_MEMORY32 */ 158151937Sjkim AcpiRsDumpFixedMemory32, /* ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ 159151937Sjkim AcpiRsDumpAddress16, /* ACPI_RESOURCE_TYPE_ADDRESS16 */ 160151937Sjkim AcpiRsDumpAddress32, /* ACPI_RESOURCE_TYPE_ADDRESS32 */ 161151937Sjkim AcpiRsDumpAddress64, /* ACPI_RESOURCE_TYPE_ADDRESS64 */ 162151937Sjkim AcpiRsDumpExtAddress64, /* ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ 163151937Sjkim AcpiRsDumpExtIrq, /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ 164151937Sjkim AcpiRsDumpGenericReg, /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ 165228110Sjkim AcpiRsDumpGpio, /* ACPI_RESOURCE_TYPE_GPIO */ 166228110Sjkim AcpiRsDumpFixedDma, /* ACPI_RESOURCE_TYPE_FIXED_DMA */ 167228110Sjkim NULL, /* ACPI_RESOURCE_TYPE_SERIAL_BUS */ 168151937Sjkim}; 169228110Sjkim 170228110SjkimACPI_RSDUMP_INFO *AcpiGbl_DumpSerialBusDispatch[] = 171228110Sjkim{ 172228110Sjkim NULL, 173228110Sjkim AcpiRsDumpI2cSerialBus, /* AML_RESOURCE_I2C_BUS_TYPE */ 174228110Sjkim AcpiRsDumpSpiSerialBus, /* AML_RESOURCE_SPI_BUS_TYPE */ 175228110Sjkim AcpiRsDumpUartSerialBus, /* AML_RESOURCE_UART_BUS_TYPE */ 176228110Sjkim}; 177151937Sjkim#endif 178151937Sjkim 179151937Sjkim 180151937Sjkim/* 181151937Sjkim * Base sizes for external AML resource descriptors, indexed by internal type. 182151937Sjkim * Includes size of the descriptor header (1 byte for small descriptors, 183151937Sjkim * 3 bytes for large descriptors) 184151937Sjkim */ 185151937Sjkimconst UINT8 AcpiGbl_AmlResourceSizes[] = 186151937Sjkim{ 187151937Sjkim sizeof (AML_RESOURCE_IRQ), /* ACPI_RESOURCE_TYPE_IRQ (optional Byte 3 always created) */ 188151937Sjkim sizeof (AML_RESOURCE_DMA), /* ACPI_RESOURCE_TYPE_DMA */ 189151937Sjkim sizeof (AML_RESOURCE_START_DEPENDENT), /* ACPI_RESOURCE_TYPE_START_DEPENDENT (optional Byte 1 always created) */ 190151937Sjkim sizeof (AML_RESOURCE_END_DEPENDENT), /* ACPI_RESOURCE_TYPE_END_DEPENDENT */ 191151937Sjkim sizeof (AML_RESOURCE_IO), /* ACPI_RESOURCE_TYPE_IO */ 192151937Sjkim sizeof (AML_RESOURCE_FIXED_IO), /* ACPI_RESOURCE_TYPE_FIXED_IO */ 193151937Sjkim sizeof (AML_RESOURCE_VENDOR_SMALL), /* ACPI_RESOURCE_TYPE_VENDOR */ 194151937Sjkim sizeof (AML_RESOURCE_END_TAG), /* ACPI_RESOURCE_TYPE_END_TAG */ 195151937Sjkim sizeof (AML_RESOURCE_MEMORY24), /* ACPI_RESOURCE_TYPE_MEMORY24 */ 196151937Sjkim sizeof (AML_RESOURCE_MEMORY32), /* ACPI_RESOURCE_TYPE_MEMORY32 */ 197151937Sjkim sizeof (AML_RESOURCE_FIXED_MEMORY32), /* ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ 198151937Sjkim sizeof (AML_RESOURCE_ADDRESS16), /* ACPI_RESOURCE_TYPE_ADDRESS16 */ 199151937Sjkim sizeof (AML_RESOURCE_ADDRESS32), /* ACPI_RESOURCE_TYPE_ADDRESS32 */ 200151937Sjkim sizeof (AML_RESOURCE_ADDRESS64), /* ACPI_RESOURCE_TYPE_ADDRESS64 */ 201151937Sjkim sizeof (AML_RESOURCE_EXTENDED_ADDRESS64),/*ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ 202151937Sjkim sizeof (AML_RESOURCE_EXTENDED_IRQ), /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ 203228110Sjkim sizeof (AML_RESOURCE_GENERIC_REGISTER), /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ 204228110Sjkim sizeof (AML_RESOURCE_GPIO), /* ACPI_RESOURCE_TYPE_GPIO */ 205228110Sjkim sizeof (AML_RESOURCE_FIXED_DMA), /* ACPI_RESOURCE_TYPE_FIXED_DMA */ 206228110Sjkim sizeof (AML_RESOURCE_COMMON_SERIALBUS), /* ACPI_RESOURCE_TYPE_SERIAL_BUS */ 207151937Sjkim}; 208151937Sjkim 209151937Sjkim 210167802Sjkimconst UINT8 AcpiGbl_ResourceStructSizes[] = 211167802Sjkim{ 212167802Sjkim /* Small descriptors */ 213151937Sjkim 214167802Sjkim 0, 215167802Sjkim 0, 216167802Sjkim 0, 217167802Sjkim 0, 218167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_IRQ), 219167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_DMA), 220167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_START_DEPENDENT), 221167802Sjkim ACPI_RS_SIZE_MIN, 222167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_IO), 223167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_IO), 224228110Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_DMA), 225167802Sjkim 0, 226167802Sjkim 0, 227167802Sjkim 0, 228167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), 229167802Sjkim ACPI_RS_SIZE_MIN, 230151937Sjkim 231167802Sjkim /* Large descriptors */ 232151937Sjkim 233167802Sjkim 0, 234167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY24), 235167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_GENERIC_REGISTER), 236167802Sjkim 0, 237167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), 238167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY32), 239167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_MEMORY32), 240167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS32), 241167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS16), 242167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_IRQ), 243167802Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS64), 244228110Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_ADDRESS64), 245228110Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_GPIO), 246228110Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_COMMON_SERIALBUS) 247151937Sjkim}; 248151937Sjkim 249228110Sjkimconst UINT8 AcpiGbl_AmlResourceSerialBusSizes[] = 250228110Sjkim{ 251228110Sjkim 0, 252228110Sjkim sizeof (AML_RESOURCE_I2C_SERIALBUS), 253228110Sjkim sizeof (AML_RESOURCE_SPI_SERIALBUS), 254228110Sjkim sizeof (AML_RESOURCE_UART_SERIALBUS), 255228110Sjkim}; 256228110Sjkim 257228110Sjkimconst UINT8 AcpiGbl_ResourceStructSerialBusSizes[] = 258228110Sjkim{ 259228110Sjkim 0, 260228110Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_I2C_SERIALBUS), 261228110Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_SPI_SERIALBUS), 262228110Sjkim ACPI_RS_SIZE (ACPI_RESOURCE_UART_SERIALBUS), 263228110Sjkim}; 264