rsmemory.c revision 281075
1130812Smarcel/******************************************************************************* 2130812Smarcel * 3130812Smarcel * Module Name: rsmem24 - Memory resource descriptors 4130812Smarcel * 5130812Smarcel ******************************************************************************/ 6130812Smarcel 7130812Smarcel/* 8130812Smarcel * Copyright (C) 2000 - 2015, Intel Corp. 9130812Smarcel * All rights reserved. 10130812Smarcel * 11130812Smarcel * Redistribution and use in source and binary forms, with or without 12130812Smarcel * modification, are permitted provided that the following conditions 13130812Smarcel * are met: 14130812Smarcel * 1. Redistributions of source code must retain the above copyright 15130812Smarcel * notice, this list of conditions, and the following disclaimer, 16130812Smarcel * without modification. 17130812Smarcel * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18130812Smarcel * substantially similar to the "NO WARRANTY" disclaimer below 19130812Smarcel * ("Disclaimer") and any redistribution must be conditioned upon 20130812Smarcel * including a substantially similar Disclaimer requirement for further 21130812Smarcel * binary redistribution. 22130812Smarcel * 3. Neither the names of the above-listed copyright holders nor the names 23130812Smarcel * of any contributors may be used to endorse or promote products derived 24130812Smarcel * from this software without specific prior written permission. 25130812Smarcel * 26130812Smarcel * Alternatively, this software may be distributed under the terms of the 27130812Smarcel * GNU General Public License ("GPL") version 2 as published by the Free 28130812Smarcel * Software Foundation. 29130812Smarcel * 30130812Smarcel * NO WARRANTY 31130812Smarcel * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32130812Smarcel * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33130812Smarcel * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34130812Smarcel * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35130812Smarcel * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36130812Smarcel * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37130812Smarcel * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38130812Smarcel * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39130812Smarcel * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40130812Smarcel * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41130812Smarcel * POSSIBILITY OF SUCH DAMAGES. 42130812Smarcel */ 43130812Smarcel 44130812Smarcel#include <contrib/dev/acpica/include/acpi.h> 45130812Smarcel#include <contrib/dev/acpica/include/accommon.h> 46130812Smarcel#include <contrib/dev/acpica/include/acresrc.h> 47130812Smarcel 48130812Smarcel#define _COMPONENT ACPI_RESOURCES 49130812Smarcel ACPI_MODULE_NAME ("rsmemory") 50130812Smarcel 51130812Smarcel 52130812Smarcel/******************************************************************************* 53130812Smarcel * 54130812Smarcel * AcpiRsConvertMemory24 55130812Smarcel * 56130812Smarcel ******************************************************************************/ 57130812Smarcel 58130812SmarcelACPI_RSCONVERT_INFO AcpiRsConvertMemory24[4] = 59130812Smarcel{ 60130812Smarcel {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY24, 61130812Smarcel ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY24), 62130812Smarcel ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemory24)}, 63130812Smarcel 64130812Smarcel {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY24, 65130812Smarcel sizeof (AML_RESOURCE_MEMORY24), 66130812Smarcel 0}, 67130812Smarcel 68130812Smarcel /* Read/Write bit */ 69130812Smarcel 70130812Smarcel {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Memory24.WriteProtect), 71130812Smarcel AML_OFFSET (Memory24.Flags), 72130812Smarcel 0}, 73130812Smarcel /* 74130812Smarcel * These fields are contiguous in both the source and destination: 75130812Smarcel * Minimum Base Address 76130812Smarcel * Maximum Base Address 77130812Smarcel * Address Base Alignment 78130812Smarcel * Range Length 79130812Smarcel */ 80130812Smarcel {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Memory24.Minimum), 81130812Smarcel AML_OFFSET (Memory24.Minimum), 82130812Smarcel 4} 83130812Smarcel}; 84130812Smarcel 85130812Smarcel 86130812Smarcel/******************************************************************************* 87130812Smarcel * 88130812Smarcel * AcpiRsConvertMemory32 89130812Smarcel * 90130812Smarcel ******************************************************************************/ 91130812Smarcel 92130812SmarcelACPI_RSCONVERT_INFO AcpiRsConvertMemory32[4] = 93130812Smarcel{ 94130812Smarcel {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY32, 95130812Smarcel ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY32), 96130812Smarcel ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemory32)}, 97130812Smarcel 98130812Smarcel {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY32, 99130812Smarcel sizeof (AML_RESOURCE_MEMORY32), 100130812Smarcel 0}, 101130812Smarcel 102130812Smarcel /* Read/Write bit */ 103130812Smarcel 104130812Smarcel {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Memory32.WriteProtect), 105130812Smarcel AML_OFFSET (Memory32.Flags), 106130812Smarcel 0}, 107130812Smarcel /* 108130812Smarcel * These fields are contiguous in both the source and destination: 109130812Smarcel * Minimum Base Address 110130812Smarcel * Maximum Base Address 111130812Smarcel * Address Base Alignment 112130812Smarcel * Range Length 113130812Smarcel */ 114130812Smarcel {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.Memory32.Minimum), 115130812Smarcel AML_OFFSET (Memory32.Minimum), 116130812Smarcel 4} 117130812Smarcel}; 118130812Smarcel 119130812Smarcel 120130812Smarcel/******************************************************************************* 121130812Smarcel * 122130812Smarcel * AcpiRsConvertFixedMemory32 123130812Smarcel * 124130812Smarcel ******************************************************************************/ 125130812Smarcel 126130812SmarcelACPI_RSCONVERT_INFO AcpiRsConvertFixedMemory32[4] = 127130812Smarcel{ 128130812Smarcel {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_MEMORY32, 129130812Smarcel ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_MEMORY32), 130130812Smarcel ACPI_RSC_TABLE_SIZE (AcpiRsConvertFixedMemory32)}, 131130812Smarcel 132130812Smarcel {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_MEMORY32, 133130812Smarcel sizeof (AML_RESOURCE_FIXED_MEMORY32), 134130812Smarcel 0}, 135130812Smarcel 136130812Smarcel /* Read/Write bit */ 137130812Smarcel 138130812Smarcel {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.FixedMemory32.WriteProtect), 139130812Smarcel AML_OFFSET (FixedMemory32.Flags), 140130812Smarcel 0}, 141130812Smarcel /* 142130812Smarcel * These fields are contiguous in both the source and destination: 143130812Smarcel * Base Address 144130812Smarcel * Range Length 145130812Smarcel */ 146130812Smarcel {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.FixedMemory32.Address), 147130812Smarcel AML_OFFSET (FixedMemory32.Address), 148130812Smarcel 2} 149130812Smarcel}; 150130812Smarcel 151130812Smarcel 152130812Smarcel/******************************************************************************* 153130812Smarcel * 154130812Smarcel * AcpiRsGetVendorSmall 155130812Smarcel * 156130812Smarcel ******************************************************************************/ 157130812Smarcel 158130812SmarcelACPI_RSCONVERT_INFO AcpiRsGetVendorSmall[3] = 159130812Smarcel{ 160130812Smarcel {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR, 161130812Smarcel ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), 162130812Smarcel ACPI_RSC_TABLE_SIZE (AcpiRsGetVendorSmall)}, 163130812Smarcel 164130812Smarcel /* Length of the vendor data (byte count) */ 165130812Smarcel 166130812Smarcel {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 167130812Smarcel 0, 168130812Smarcel sizeof (UINT8)}, 169130812Smarcel 170130812Smarcel /* Vendor data */ 171130812Smarcel 172130812Smarcel {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), 173130812Smarcel sizeof (AML_RESOURCE_SMALL_HEADER), 174130812Smarcel 0} 175130812Smarcel}; 176130812Smarcel 177130812Smarcel 178130812Smarcel/******************************************************************************* 179130812Smarcel * 180130812Smarcel * AcpiRsGetVendorLarge 181130812Smarcel * 182130812Smarcel ******************************************************************************/ 183130812Smarcel 184130812SmarcelACPI_RSCONVERT_INFO AcpiRsGetVendorLarge[3] = 185130812Smarcel{ 186130812Smarcel {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR, 187130812Smarcel ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), 188130812Smarcel ACPI_RSC_TABLE_SIZE (AcpiRsGetVendorLarge)}, 189130812Smarcel 190130812Smarcel /* Length of the vendor data (byte count) */ 191130812Smarcel 192130812Smarcel {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 193130812Smarcel 0, 194130812Smarcel sizeof (UINT8)}, 195130812Smarcel 196130812Smarcel /* Vendor data */ 197130812Smarcel 198130812Smarcel {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), 199130812Smarcel sizeof (AML_RESOURCE_LARGE_HEADER), 200130812Smarcel 0} 201130812Smarcel}; 202130812Smarcel 203130812Smarcel 204130812Smarcel/******************************************************************************* 205130812Smarcel * 206130812Smarcel * AcpiRsSetVendor 207130812Smarcel * 208130812Smarcel ******************************************************************************/ 209130812Smarcel 210130812SmarcelACPI_RSCONVERT_INFO AcpiRsSetVendor[7] = 211130812Smarcel{ 212130812Smarcel /* Default is a small vendor descriptor */ 213130812Smarcel 214130812Smarcel {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_SMALL, 215130812Smarcel sizeof (AML_RESOURCE_SMALL_HEADER), 216130812Smarcel ACPI_RSC_TABLE_SIZE (AcpiRsSetVendor)}, 217130812Smarcel 218130812Smarcel /* Get the length and copy the data */ 219130812Smarcel 220130812Smarcel {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 221130812Smarcel 0, 222130812Smarcel 0}, 223130812Smarcel 224130812Smarcel {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), 225130812Smarcel sizeof (AML_RESOURCE_SMALL_HEADER), 226130812Smarcel 0}, 227130812Smarcel 228130812Smarcel /* 229130812Smarcel * All done if the Vendor byte length is 7 or less, meaning that it will 230130812Smarcel * fit within a small descriptor 231130812Smarcel */ 232130812Smarcel {ACPI_RSC_EXIT_LE, 0, 0, 7}, 233130812Smarcel 234130812Smarcel /* Must create a large vendor descriptor */ 235130812Smarcel 236130812Smarcel {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_LARGE, 237130812Smarcel sizeof (AML_RESOURCE_LARGE_HEADER), 238130812Smarcel 0}, 239130812Smarcel 240130812Smarcel {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 241130812Smarcel 0, 242130812Smarcel 0}, 243130812Smarcel 244130812Smarcel {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), 245130812Smarcel sizeof (AML_RESOURCE_LARGE_HEADER), 246130812Smarcel 0} 247130812Smarcel}; 248130812Smarcel