brintos

brintos / linux-shallow public Read only

0
0
Text · 5.4 KiB · 44fa16d Raw
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