Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
0002 /*******************************************************************************
0003  *
0004  * Module Name: rsmem24 - Memory resource descriptors
0005  *
0006  ******************************************************************************/
0007 
0008 #include <acpi/acpi.h>
0009 #include "accommon.h"
0010 #include "acresrc.h"
0011 
0012 #define _COMPONENT          ACPI_RESOURCES
0013 ACPI_MODULE_NAME("rsmemory")
0014 
0015 /*******************************************************************************
0016  *
0017  * acpi_rs_convert_memory24
0018  *
0019  ******************************************************************************/
0020 struct acpi_rsconvert_info acpi_rs_convert_memory24[4] = {
0021     {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY24,
0022      ACPI_RS_SIZE(struct acpi_resource_memory24),
0023      ACPI_RSC_TABLE_SIZE(acpi_rs_convert_memory24)},
0024 
0025     {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY24,
0026      sizeof(struct aml_resource_memory24),
0027      0},
0028 
0029     /* Read/Write bit */
0030 
0031     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.memory24.write_protect),
0032      AML_OFFSET(memory24.flags),
0033      0},
0034     /*
0035      * These fields are contiguous in both the source and destination:
0036      * Minimum Base Address
0037      * Maximum Base Address
0038      * Address Base Alignment
0039      * Range Length
0040      */
0041     {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.memory24.minimum),
0042      AML_OFFSET(memory24.minimum),
0043      4}
0044 };
0045 
0046 /*******************************************************************************
0047  *
0048  * acpi_rs_convert_memory32
0049  *
0050  ******************************************************************************/
0051 
0052 struct acpi_rsconvert_info acpi_rs_convert_memory32[4] = {
0053     {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY32,
0054      ACPI_RS_SIZE(struct acpi_resource_memory32),
0055      ACPI_RSC_TABLE_SIZE(acpi_rs_convert_memory32)},
0056 
0057     {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY32,
0058      sizeof(struct aml_resource_memory32),
0059      0},
0060 
0061     /* Read/Write bit */
0062 
0063     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.memory32.write_protect),
0064      AML_OFFSET(memory32.flags),
0065      0},
0066     /*
0067      * These fields are contiguous in both the source and destination:
0068      * Minimum Base Address
0069      * Maximum Base Address
0070      * Address Base Alignment
0071      * Range Length
0072      */
0073     {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.memory32.minimum),
0074      AML_OFFSET(memory32.minimum),
0075      4}
0076 };
0077 
0078 /*******************************************************************************
0079  *
0080  * acpi_rs_convert_fixed_memory32
0081  *
0082  ******************************************************************************/
0083 
0084 struct acpi_rsconvert_info acpi_rs_convert_fixed_memory32[4] = {
0085     {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_MEMORY32,
0086      ACPI_RS_SIZE(struct acpi_resource_fixed_memory32),
0087      ACPI_RSC_TABLE_SIZE(acpi_rs_convert_fixed_memory32)},
0088 
0089     {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_MEMORY32,
0090      sizeof(struct aml_resource_fixed_memory32),
0091      0},
0092 
0093     /* Read/Write bit */
0094 
0095     {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.fixed_memory32.write_protect),
0096      AML_OFFSET(fixed_memory32.flags),
0097      0},
0098     /*
0099      * These fields are contiguous in both the source and destination:
0100      * Base Address
0101      * Range Length
0102      */
0103     {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.fixed_memory32.address),
0104      AML_OFFSET(fixed_memory32.address),
0105      2}
0106 };
0107 
0108 /*******************************************************************************
0109  *
0110  * acpi_rs_get_vendor_small
0111  *
0112  ******************************************************************************/
0113 
0114 struct acpi_rsconvert_info acpi_rs_get_vendor_small[3] = {
0115     {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR,
0116      ACPI_RS_SIZE(struct acpi_resource_vendor),
0117      ACPI_RSC_TABLE_SIZE(acpi_rs_get_vendor_small)},
0118 
0119     /* Length of the vendor data (byte count) */
0120 
0121     {ACPI_RSC_COUNT16, ACPI_RS_OFFSET(data.vendor.byte_length),
0122      0,
0123      sizeof(u8)},
0124 
0125     /* Vendor data */
0126 
0127     {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.vendor.byte_data[0]),
0128      sizeof(struct aml_resource_small_header),
0129      0}
0130 };
0131 
0132 /*******************************************************************************
0133  *
0134  * acpi_rs_get_vendor_large
0135  *
0136  ******************************************************************************/
0137 
0138 struct acpi_rsconvert_info acpi_rs_get_vendor_large[3] = {
0139     {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR,
0140      ACPI_RS_SIZE(struct acpi_resource_vendor),
0141      ACPI_RSC_TABLE_SIZE(acpi_rs_get_vendor_large)},
0142 
0143     /* Length of the vendor data (byte count) */
0144 
0145     {ACPI_RSC_COUNT16, ACPI_RS_OFFSET(data.vendor.byte_length),
0146      0,
0147      sizeof(u8)},
0148 
0149     /* Vendor data */
0150 
0151     {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.vendor.byte_data[0]),
0152      sizeof(struct aml_resource_large_header),
0153      0}
0154 };
0155 
0156 /*******************************************************************************
0157  *
0158  * acpi_rs_set_vendor
0159  *
0160  ******************************************************************************/
0161 
0162 struct acpi_rsconvert_info acpi_rs_set_vendor[7] = {
0163     /* Default is a small vendor descriptor */
0164 
0165     {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_SMALL,
0166      sizeof(struct aml_resource_small_header),
0167      ACPI_RSC_TABLE_SIZE(acpi_rs_set_vendor)},
0168 
0169     /* Get the length and copy the data */
0170 
0171     {ACPI_RSC_COUNT16, ACPI_RS_OFFSET(data.vendor.byte_length),
0172      0,
0173      0},
0174 
0175     {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.vendor.byte_data[0]),
0176      sizeof(struct aml_resource_small_header),
0177      0},
0178 
0179     /*
0180      * All done if the Vendor byte length is 7 or less, meaning that it will
0181      * fit within a small descriptor
0182      */
0183     {ACPI_RSC_EXIT_LE, 0, 0, 7},
0184 
0185     /* Must create a large vendor descriptor */
0186 
0187     {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_LARGE,
0188      sizeof(struct aml_resource_large_header),
0189      0},
0190 
0191     {ACPI_RSC_COUNT16, ACPI_RS_OFFSET(data.vendor.byte_length),
0192      0,
0193      0},
0194 
0195     {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.vendor.byte_data[0]),
0196      sizeof(struct aml_resource_large_header),
0197      0}
0198 };