linux/drivers/acpi/acpica/rsmemory.c
<<
>>
Prefs
   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
  13ACPI_MODULE_NAME("rsmemory")
  14
  15/*******************************************************************************
  16 *
  17 * acpi_rs_convert_memory24
  18 *
  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 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
  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 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
  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 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
 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_large
 135 *
 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_vendor
 159 *
 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 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};
 199