root/drivers/acpi/acpica/rsmemory.c

/* [<][>][^][v][top][bottom][index][help] */
   1 // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
   2 /*******************************************************************************
   3  *
   4  * Module Name: rsmem24 - Memory resource descriptors
   5  *
   6  ******************************************************************************/
   7 
   8 #include <acpi/acpi.h>
   9 #include "accommon.h"
  10 #include "acresrc.h"
  11 
  12 #define _COMPONENT          ACPI_RESOURCES
  13 ACPI_MODULE_NAME("rsmemory")
  14 
  15 /*******************************************************************************
  16  *
  17  * acpi_rs_convert_memory24
  18  *
  19  ******************************************************************************/
  20 struct 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 Address
  37          * Maximum Base Address
  38          * Address Base Alignment
  39          * Range Length
  40          */
  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_memory32
  49  *
  50  ******************************************************************************/
  51 
  52 struct 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 Address
  69          * Maximum Base Address
  70          * Address Base Alignment
  71          * Range Length
  72          */
  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_memory32
  81  *
  82  ******************************************************************************/
  83 
  84 struct 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 Address
 101          * Range Length
 102          */
 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_small
 111  *
 112  ******************************************************************************/
 113 
 114 struct 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_large
 135  *
 136  ******************************************************************************/
 137 
 138 struct 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_vendor
 159  *
 160  ******************************************************************************/
 161 
 162 struct 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 will
 181          * fit within a small descriptor
 182          */
 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 };

/* [<][>][^][v][top][bottom][index][help] */