Home | History | Annotate | Line # | Download | only in common
ahuuids.c revision 1.1.1.10
      1       1.1  christos /******************************************************************************
      2       1.1  christos  *
      3       1.1  christos  * Module Name: ahuuids - Table of known ACPI-related UUIDs
      4       1.1  christos  *
      5       1.1  christos  *****************************************************************************/
      6       1.1  christos 
      7       1.1  christos /*
      8   1.1.1.9  christos  * Copyright (C) 2000 - 2020, Intel Corp.
      9       1.1  christos  * All rights reserved.
     10       1.1  christos  *
     11       1.1  christos  * Redistribution and use in source and binary forms, with or without
     12       1.1  christos  * modification, are permitted provided that the following conditions
     13       1.1  christos  * are met:
     14       1.1  christos  * 1. Redistributions of source code must retain the above copyright
     15       1.1  christos  *    notice, this list of conditions, and the following disclaimer,
     16       1.1  christos  *    without modification.
     17       1.1  christos  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18       1.1  christos  *    substantially similar to the "NO WARRANTY" disclaimer below
     19       1.1  christos  *    ("Disclaimer") and any redistribution must be conditioned upon
     20       1.1  christos  *    including a substantially similar Disclaimer requirement for further
     21       1.1  christos  *    binary redistribution.
     22       1.1  christos  * 3. Neither the names of the above-listed copyright holders nor the names
     23       1.1  christos  *    of any contributors may be used to endorse or promote products derived
     24       1.1  christos  *    from this software without specific prior written permission.
     25       1.1  christos  *
     26       1.1  christos  * Alternatively, this software may be distributed under the terms of the
     27       1.1  christos  * GNU General Public License ("GPL") version 2 as published by the Free
     28       1.1  christos  * Software Foundation.
     29       1.1  christos  *
     30       1.1  christos  * NO WARRANTY
     31       1.1  christos  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32       1.1  christos  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33       1.1  christos  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34       1.1  christos  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35       1.1  christos  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36       1.1  christos  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37       1.1  christos  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38       1.1  christos  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39       1.1  christos  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40       1.1  christos  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41       1.1  christos  * POSSIBILITY OF SUCH DAMAGES.
     42       1.1  christos  */
     43       1.1  christos 
     44       1.1  christos #include "acpi.h"
     45       1.1  christos #include "accommon.h"
     46   1.1.1.3  christos #include "acuuid.h"
     47       1.1  christos 
     48       1.1  christos #define _COMPONENT          ACPI_UTILITIES
     49       1.1  christos         ACPI_MODULE_NAME    ("ahuuids")
     50       1.1  christos 
     51   1.1.1.4  christos 
     52       1.1  christos /*
     53       1.1  christos  * Table of "known" (ACPI-related) UUIDs
     54       1.1  christos  */
     55   1.1.1.5  christos const AH_UUID  Gbl_AcpiUuids[] =
     56       1.1  christos {
     57   1.1.1.3  christos     {"[Controllers]",               NULL},
     58   1.1.1.3  christos     {"GPIO Controller",             UUID_GPIO_CONTROLLER},
     59   1.1.1.3  christos     {"USB Controller",              UUID_USB_CONTROLLER},
     60   1.1.1.3  christos     {"SATA Controller",             UUID_SATA_CONTROLLER},
     61   1.1.1.3  christos 
     62   1.1.1.3  christos     {"[Devices]",                   NULL},
     63   1.1.1.3  christos     {"PCI Host Bridge Device",      UUID_PCI_HOST_BRIDGE},
     64   1.1.1.3  christos     {"HID I2C Device",              UUID_I2C_DEVICE},
     65   1.1.1.3  christos     {"Power Button Device",         UUID_POWER_BUTTON},
     66  1.1.1.10  christos     {"Memory Device",               UUID_MEMORY_DEVICE},
     67  1.1.1.10  christos     {"Generic Buttons Device",      UUID_GENERIC_BUTTONS_DEVICE},
     68  1.1.1.10  christos     {"NVDIMM Root Device",          UUID_NVDIMM_ROOT_DEVICE},
     69  1.1.1.10  christos     {"Control Method Battery",      UUID_CONTROL_METHOD_BATTERY},
     70   1.1.1.3  christos 
     71   1.1.1.3  christos     {"[Interfaces]",                NULL},
     72   1.1.1.3  christos     {"Device Labeling Interface",   UUID_DEVICE_LABELING},
     73   1.1.1.3  christos     {"Physical Presence Interface", UUID_PHYSICAL_PRESENCE},
     74   1.1.1.3  christos 
     75   1.1.1.3  christos     {"[Non-volatile DIMM and NFIT table]",       NULL},
     76  1.1.1.10  christos     {"NVDIMM Device",               UUID_NFIT_DIMM},
     77   1.1.1.3  christos     {"Volatile Memory Region",      UUID_VOLATILE_MEMORY},
     78   1.1.1.3  christos     {"Persistent Memory Region",    UUID_PERSISTENT_MEMORY},
     79   1.1.1.3  christos     {"NVDIMM Control Region",       UUID_CONTROL_REGION},
     80   1.1.1.3  christos     {"NVDIMM Data Region",          UUID_DATA_REGION},
     81   1.1.1.3  christos     {"Volatile Virtual Disk",       UUID_VOLATILE_VIRTUAL_DISK},
     82   1.1.1.3  christos     {"Volatile Virtual CD",         UUID_VOLATILE_VIRTUAL_CD},
     83   1.1.1.3  christos     {"Persistent Virtual Disk",     UUID_PERSISTENT_VIRTUAL_DISK},
     84   1.1.1.3  christos     {"Persistent Virtual CD",       UUID_PERSISTENT_VIRTUAL_CD},
     85  1.1.1.10  christos     {"Microsoft NVDIMM Command set",UUID_NFIT_DIMM_N_MSFT},
     86  1.1.1.10  christos     {"HP NDIMM HPE1",               UUID_NFIT_DIMM_N_HPE1},
     87  1.1.1.10  christos     {"HP NDIMM HPE2",               UUID_NFIT_DIMM_N_HPE2},
     88  1.1.1.10  christos     {"Virtual NVDIMM",              UUID_NFIT_DIMM_N_HYPERV},
     89   1.1.1.3  christos 
     90   1.1.1.6  christos     {"[Processor Properties]",      NULL},
     91   1.1.1.6  christos     {"Cache Properties",            UUID_CACHE_PROPERTIES},
     92   1.1.1.6  christos     {"Physical Package Property",   UUID_PHYSICAL_PROPERTY},
     93   1.1.1.6  christos 
     94   1.1.1.3  christos     {"[Miscellaneous]",             NULL},
     95   1.1.1.3  christos     {"Platform-wide Capabilities",  UUID_PLATFORM_CAPABILITIES},
     96   1.1.1.3  christos     {"Dynamic Enumeration",         UUID_DYNAMIC_ENUMERATION},
     97   1.1.1.3  christos     {"Battery Thermal Limit",       UUID_BATTERY_THERMAL_LIMIT},
     98   1.1.1.3  christos     {"Thermal Extensions",          UUID_THERMAL_EXTENSIONS},
     99   1.1.1.3  christos     {"Device Properties for _DSD",  UUID_DEVICE_PROPERTIES},
    100  1.1.1.10  christos     {"Device Graphs for _DSD",      UUID_DEVICE_GRAPHS},
    101  1.1.1.10  christos     {"Hierarchical Data Extension", UUID_HIERARCHICAL_DATA_EXTENSION},
    102  1.1.1.10  christos     {"ARM Coresight Graph",         UUID_CORESIGHT_GRAPH},
    103       1.1  christos     {NULL, NULL}
    104       1.1  christos };
    105       1.1  christos 
    106       1.1  christos 
    107       1.1  christos /*******************************************************************************
    108       1.1  christos  *
    109       1.1  christos  * FUNCTION:    AcpiAhMatchUuid
    110       1.1  christos  *
    111       1.1  christos  * PARAMETERS:  Data                - Data buffer containing a UUID
    112       1.1  christos  *
    113       1.1  christos  * RETURN:      ASCII description string for the UUID if it is found.
    114       1.1  christos  *
    115       1.1  christos  * DESCRIPTION: Returns a description string for "known" UUIDs, which are
    116       1.1  christos  *              are UUIDs that are related to ACPI in some way.
    117       1.1  christos  *
    118       1.1  christos  ******************************************************************************/
    119       1.1  christos 
    120       1.1  christos const char *
    121       1.1  christos AcpiAhMatchUuid (
    122       1.1  christos     UINT8                   *Data)
    123       1.1  christos {
    124       1.1  christos     const AH_UUID           *Info;
    125       1.1  christos     UINT8                   UuidBuffer[UUID_BUFFER_LENGTH];
    126       1.1  christos 
    127       1.1  christos 
    128       1.1  christos     /* Walk the table of known ACPI-related UUIDs */
    129       1.1  christos 
    130   1.1.1.5  christos     for (Info = Gbl_AcpiUuids; Info->Description; Info++)
    131       1.1  christos     {
    132   1.1.1.8  christos         /* Null string means description is a UUID class */
    133   1.1.1.3  christos 
    134   1.1.1.3  christos         if (!Info->String)
    135   1.1.1.3  christos         {
    136   1.1.1.3  christos             continue;
    137   1.1.1.3  christos         }
    138   1.1.1.3  christos 
    139       1.1  christos         AcpiUtConvertStringToUuid (Info->String, UuidBuffer);
    140       1.1  christos 
    141   1.1.1.3  christos         if (!memcmp (Data, UuidBuffer, UUID_BUFFER_LENGTH))
    142       1.1  christos         {
    143       1.1  christos             return (Info->Description);
    144       1.1  christos         }
    145       1.1  christos     }
    146       1.1  christos 
    147       1.1  christos     return (NULL);
    148       1.1  christos }
    149