rsmemory.c revision 229989
1207618Srdivacky/******************************************************************************* 2207618Srdivacky * 3353358Sdim * Module Name: rsmem24 - Memory resource descriptors 4353358Sdim * 5353358Sdim ******************************************************************************/ 6207618Srdivacky 7207618Srdivacky/* 8207618Srdivacky * Copyright (C) 2000 - 2012, Intel Corp. 9276479Sdim * All rights reserved. 10207618Srdivacky * 11207618Srdivacky * Redistribution and use in source and binary forms, with or without 12207618Srdivacky * modification, are permitted provided that the following conditions 13207618Srdivacky * are met: 14207618Srdivacky * 1. Redistributions of source code must retain the above copyright 15207618Srdivacky * notice, this list of conditions, and the following disclaimer, 16224145Sdim * without modification. 17296417Sdim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18207618Srdivacky * substantially similar to the "NO WARRANTY" disclaimer below 19309124Sdim * ("Disclaimer") and any redistribution must be conditioned upon 20249423Sdim * including a substantially similar Disclaimer requirement for further 21276479Sdim * binary redistribution. 22249423Sdim * 3. Neither the names of the above-listed copyright holders nor the names 23249423Sdim * of any contributors may be used to endorse or promote products derived 24309124Sdim * from this software without specific prior written permission. 25207618Srdivacky * 26207618Srdivacky * Alternatively, this software may be distributed under the terms of the 27280031Sdim * GNU General Public License ("GPL") version 2 as published by the Free 28353358Sdim * Software Foundation. 29296417Sdim * 30296417Sdim * NO WARRANTY 31276479Sdim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32207618Srdivacky * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33276479Sdim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34218893Sdim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35234353Sdim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36218893Sdim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37276479Sdim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38207618Srdivacky * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39341825Sdim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40280031Sdim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41207618Srdivacky * POSSIBILITY OF SUCH DAMAGES. 42280031Sdim */ 43280031Sdim 44280031Sdim#define __RSMEMORY_C__ 45296417Sdim 46280031Sdim#include <contrib/dev/acpica/include/acpi.h> 47280031Sdim#include <contrib/dev/acpica/include/accommon.h> 48280031Sdim#include <contrib/dev/acpica/include/acresrc.h> 49280031Sdim 50280031Sdim#define _COMPONENT ACPI_RESOURCES 51280031Sdim ACPI_MODULE_NAME ("rsmemory") 52280031Sdim 53280031Sdim 54226633Sdim/******************************************************************************* 55207618Srdivacky * 56207618Srdivacky * AcpiRsConvertMemory24 57207618Srdivacky * 58207618Srdivacky ******************************************************************************/ 59226633Sdim 60224145SdimACPI_RSCONVERT_INFO AcpiRsConvertMemory24[4] = 61224145Sdim{ 62224145Sdim {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY24, 63224145Sdim ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY24), 64224145Sdim ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemory24)}, 65207618Srdivacky 66207618Srdivacky {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY24, 67207618Srdivacky sizeof (AML_RESOURCE_MEMORY24), 68207618Srdivacky 0}, 69207618Srdivacky 70207618Srdivacky /* Read/Write bit */ 71207618Srdivacky 72288943Sdim {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Memory24.WriteProtect), 73207618Srdivacky AML_OFFSET (Memory24.Flags), 74276479Sdim 0}, 75207618Srdivacky /* 76207618Srdivacky * These fields are contiguous in both the source and destination: 77353358Sdim * Minimum Base Address 78353358Sdim * Maximum Base Address 79353358Sdim * Address Base Alignment 80353358Sdim * Range Length 81353358Sdim */ 82353358Sdim {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Memory24.Minimum), 83353358Sdim AML_OFFSET (Memory24.Minimum), 84353358Sdim 4} 85353358Sdim}; 86353358Sdim 87353358Sdim 88353358Sdim/******************************************************************************* 89353358Sdim * 90353358Sdim * AcpiRsConvertMemory32 91353358Sdim * 92353358Sdim ******************************************************************************/ 93353358Sdim 94353358SdimACPI_RSCONVERT_INFO AcpiRsConvertMemory32[4] = 95353358Sdim{ 96207618Srdivacky {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY32, 97280031Sdim ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY32), 98207618Srdivacky ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemory32)}, 99207618Srdivacky 100207618Srdivacky {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY32, 101218893Sdim sizeof (AML_RESOURCE_MEMORY32), 102207618Srdivacky 0}, 103207618Srdivacky 104207618Srdivacky /* Read/Write bit */ 105207618Srdivacky 106207618Srdivacky {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Memory32.WriteProtect), 107207618Srdivacky AML_OFFSET (Memory32.Flags), 108207618Srdivacky 0}, 109207618Srdivacky /* 110234353Sdim * These fields are contiguous in both the source and destination: 111234353Sdim * Minimum Base Address 112234353Sdim * Maximum Base Address 113234353Sdim * Address Base Alignment 114207618Srdivacky * Range Length 115207618Srdivacky */ 116207618Srdivacky {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.Memory32.Minimum), 117207618Srdivacky AML_OFFSET (Memory32.Minimum), 118207618Srdivacky 4} 119207618Srdivacky}; 120207618Srdivacky 121207618Srdivacky 122207618Srdivacky/******************************************************************************* 123207618Srdivacky * 124207618Srdivacky * AcpiRsConvertFixedMemory32 125276479Sdim * 126207618Srdivacky ******************************************************************************/ 127314564Sdim 128314564SdimACPI_RSCONVERT_INFO AcpiRsConvertFixedMemory32[4] = 129314564Sdim{ 130314564Sdim {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_MEMORY32, 131314564Sdim ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_MEMORY32), 132314564Sdim ACPI_RSC_TABLE_SIZE (AcpiRsConvertFixedMemory32)}, 133314564Sdim 134314564Sdim {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_MEMORY32, 135314564Sdim sizeof (AML_RESOURCE_FIXED_MEMORY32), 136314564Sdim 0}, 137314564Sdim 138261991Sdim /* Read/Write bit */ 139261991Sdim 140261991Sdim {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.FixedMemory32.WriteProtect), 141314564Sdim AML_OFFSET (FixedMemory32.Flags), 142261991Sdim 0}, 143261991Sdim /* 144261991Sdim * These fields are contiguous in both the source and destination: 145296417Sdim * Base Address 146341825Sdim * Range Length 147296417Sdim */ 148207618Srdivacky {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.FixedMemory32.Address), 149207618Srdivacky AML_OFFSET (FixedMemory32.Address), 150207618Srdivacky 2} 151}; 152 153 154/******************************************************************************* 155 * 156 * AcpiRsGetVendorSmall 157 * 158 ******************************************************************************/ 159 160ACPI_RSCONVERT_INFO AcpiRsGetVendorSmall[3] = 161{ 162 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR, 163 ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), 164 ACPI_RSC_TABLE_SIZE (AcpiRsGetVendorSmall)}, 165 166 /* Length of the vendor data (byte count) */ 167 168 {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 169 0, 170 sizeof (UINT8)}, 171 172 /* Vendor data */ 173 174 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), 175 sizeof (AML_RESOURCE_SMALL_HEADER), 176 0} 177}; 178 179 180/******************************************************************************* 181 * 182 * AcpiRsGetVendorLarge 183 * 184 ******************************************************************************/ 185 186ACPI_RSCONVERT_INFO AcpiRsGetVendorLarge[3] = 187{ 188 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR, 189 ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), 190 ACPI_RSC_TABLE_SIZE (AcpiRsGetVendorLarge)}, 191 192 /* Length of the vendor data (byte count) */ 193 194 {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 195 0, 196 sizeof (UINT8)}, 197 198 /* Vendor data */ 199 200 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), 201 sizeof (AML_RESOURCE_LARGE_HEADER), 202 0} 203}; 204 205 206/******************************************************************************* 207 * 208 * AcpiRsSetVendor 209 * 210 ******************************************************************************/ 211 212ACPI_RSCONVERT_INFO AcpiRsSetVendor[7] = 213{ 214 /* Default is a small vendor descriptor */ 215 216 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_SMALL, 217 sizeof (AML_RESOURCE_SMALL_HEADER), 218 ACPI_RSC_TABLE_SIZE (AcpiRsSetVendor)}, 219 220 /* Get the length and copy the data */ 221 222 {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 223 0, 224 0}, 225 226 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), 227 sizeof (AML_RESOURCE_SMALL_HEADER), 228 0}, 229 230 /* 231 * All done if the Vendor byte length is 7 or less, meaning that it will 232 * fit within a small descriptor 233 */ 234 {ACPI_RSC_EXIT_LE, 0, 0, 7}, 235 236 /* Must create a large vendor descriptor */ 237 238 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_LARGE, 239 sizeof (AML_RESOURCE_LARGE_HEADER), 240 0}, 241 242 {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 243 0, 244 0}, 245 246 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), 247 sizeof (AML_RESOURCE_LARGE_HEADER), 248 0} 249}; 250 251 252