199 lines · c
1// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.02/*******************************************************************************3 *4 * Module Name: rsmem24 - Memory resource descriptors5 *6 ******************************************************************************/7 8#include <acpi/acpi.h>9#include "accommon.h"10#include "acresrc.h"11 12#define _COMPONENT ACPI_RESOURCES13ACPI_MODULE_NAME("rsmemory")14 15/*******************************************************************************16 *17 * acpi_rs_convert_memory2418 *19 ******************************************************************************/20struct acpi_rsconvert_info acpi_rs_convert_memory24[4] = {21 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY24,22 ACPI_RS_SIZE(struct acpi_resource_memory24),23 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_memory24)},24 25 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY24,26 sizeof(struct aml_resource_memory24),27 0},28 29 /* Read/Write bit */30 31 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.memory24.write_protect),32 AML_OFFSET(memory24.flags),33 0},34 /*35 * These fields are contiguous in both the source and destination:36 * Minimum Base Address37 * Maximum Base Address38 * Address Base Alignment39 * Range Length40 */41 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.memory24.minimum),42 AML_OFFSET(memory24.minimum),43 4}44};45 46/*******************************************************************************47 *48 * acpi_rs_convert_memory3249 *50 ******************************************************************************/51 52struct acpi_rsconvert_info acpi_rs_convert_memory32[4] = {53 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY32,54 ACPI_RS_SIZE(struct acpi_resource_memory32),55 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_memory32)},56 57 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY32,58 sizeof(struct aml_resource_memory32),59 0},60 61 /* Read/Write bit */62 63 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.memory32.write_protect),64 AML_OFFSET(memory32.flags),65 0},66 /*67 * These fields are contiguous in both the source and destination:68 * Minimum Base Address69 * Maximum Base Address70 * Address Base Alignment71 * Range Length72 */73 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.memory32.minimum),74 AML_OFFSET(memory32.minimum),75 4}76};77 78/*******************************************************************************79 *80 * acpi_rs_convert_fixed_memory3281 *82 ******************************************************************************/83 84struct acpi_rsconvert_info acpi_rs_convert_fixed_memory32[4] = {85 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_MEMORY32,86 ACPI_RS_SIZE(struct acpi_resource_fixed_memory32),87 ACPI_RSC_TABLE_SIZE(acpi_rs_convert_fixed_memory32)},88 89 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_MEMORY32,90 sizeof(struct aml_resource_fixed_memory32),91 0},92 93 /* Read/Write bit */94 95 {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.fixed_memory32.write_protect),96 AML_OFFSET(fixed_memory32.flags),97 0},98 /*99 * These fields are contiguous in both the source and destination:100 * Base Address101 * Range Length102 */103 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.fixed_memory32.address),104 AML_OFFSET(fixed_memory32.address),105 2}106};107 108/*******************************************************************************109 *110 * acpi_rs_get_vendor_small111 *112 ******************************************************************************/113 114struct acpi_rsconvert_info acpi_rs_get_vendor_small[3] = {115 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR,116 ACPI_RS_SIZE(struct acpi_resource_vendor),117 ACPI_RSC_TABLE_SIZE(acpi_rs_get_vendor_small)},118 119 /* Length of the vendor data (byte count) */120 121 {ACPI_RSC_COUNT16, ACPI_RS_OFFSET(data.vendor.byte_length),122 0,123 sizeof(u8)},124 125 /* Vendor data */126 127 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.vendor.byte_data[0]),128 sizeof(struct aml_resource_small_header),129 0}130};131 132/*******************************************************************************133 *134 * acpi_rs_get_vendor_large135 *136 ******************************************************************************/137 138struct acpi_rsconvert_info acpi_rs_get_vendor_large[3] = {139 {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR,140 ACPI_RS_SIZE(struct acpi_resource_vendor),141 ACPI_RSC_TABLE_SIZE(acpi_rs_get_vendor_large)},142 143 /* Length of the vendor data (byte count) */144 145 {ACPI_RSC_COUNT16, ACPI_RS_OFFSET(data.vendor.byte_length),146 0,147 sizeof(u8)},148 149 /* Vendor data */150 151 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.vendor.byte_data[0]),152 sizeof(struct aml_resource_large_header),153 0}154};155 156/*******************************************************************************157 *158 * acpi_rs_set_vendor159 *160 ******************************************************************************/161 162struct acpi_rsconvert_info acpi_rs_set_vendor[7] = {163 /* Default is a small vendor descriptor */164 165 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_SMALL,166 sizeof(struct aml_resource_small_header),167 ACPI_RSC_TABLE_SIZE(acpi_rs_set_vendor)},168 169 /* Get the length and copy the data */170 171 {ACPI_RSC_COUNT16, ACPI_RS_OFFSET(data.vendor.byte_length),172 0,173 0},174 175 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.vendor.byte_data[0]),176 sizeof(struct aml_resource_small_header),177 0},178 179 /*180 * All done if the Vendor byte length is 7 or less, meaning that it will181 * fit within a small descriptor182 */183 {ACPI_RSC_EXIT_LE, 0, 0, 7},184 185 /* Must create a large vendor descriptor */186 187 {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_LARGE,188 sizeof(struct aml_resource_large_header),189 0},190 191 {ACPI_RSC_COUNT16, ACPI_RS_OFFSET(data.vendor.byte_length),192 0,193 0},194 195 {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.vendor.byte_data[0]),196 sizeof(struct aml_resource_large_header),197 0}198};199