OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [drivers/] [acpi/] [tables/] [tbfind.c] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/******************************************************************************
2
 *
3
 * Module Name: tbfind   - find table
4
 *
5
 *****************************************************************************/
6
 
7
/*
8
 * Copyright (C) 2000 - 2007, R. Byron Moore
9
 * All rights reserved.
10
 *
11
 * Redistribution and use in source and binary forms, with or without
12
 * modification, are permitted provided that the following conditions
13
 * are met:
14
 * 1. Redistributions of source code must retain the above copyright
15
 *    notice, this list of conditions, and the following disclaimer,
16
 *    without modification.
17
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18
 *    substantially similar to the "NO WARRANTY" disclaimer below
19
 *    ("Disclaimer") and any redistribution must be conditioned upon
20
 *    including a substantially similar Disclaimer requirement for further
21
 *    binary redistribution.
22
 * 3. Neither the names of the above-listed copyright holders nor the names
23
 *    of any contributors may be used to endorse or promote products derived
24
 *    from this software without specific prior written permission.
25
 *
26
 * Alternatively, this software may be distributed under the terms of the
27
 * GNU General Public License ("GPL") version 2 as published by the Free
28
 * Software Foundation.
29
 *
30
 * NO WARRANTY
31
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41
 * POSSIBILITY OF SUCH DAMAGES.
42
 */
43
 
44
#include <acpi/acpi.h>
45
#include <acpi/actables.h>
46
 
47
#define _COMPONENT          ACPI_TABLES
48
ACPI_MODULE_NAME("tbfind")
49
 
50
/*******************************************************************************
51
 *
52
 * FUNCTION:    acpi_tb_find_table
53
 *
54
 * PARAMETERS:  Signature           - String with ACPI table signature
55
 *              oem_id              - String with the table OEM ID
56
 *              oem_table_id        - String with the OEM Table ID
57
 *              table_index         - Where the table index is returned
58
 *
59
 * RETURN:      Status and table index
60
 *
61
 * DESCRIPTION: Find an ACPI table (in the RSDT/XSDT) that matches the
62
 *              Signature, OEM ID and OEM Table ID. Returns an index that can
63
 *              be used to get the table header or entire table.
64
 *
65
 ******************************************************************************/
66
acpi_status
67
acpi_tb_find_table(char *signature,
68
                   char *oem_id,
69
                   char *oem_table_id, acpi_native_uint * table_index)
70
{
71
        acpi_native_uint i;
72
        acpi_status status;
73
 
74
        ACPI_FUNCTION_TRACE(tb_find_table);
75
 
76
        for (i = 0; i < acpi_gbl_root_table_list.count; ++i) {
77
                if (ACPI_MEMCMP(&(acpi_gbl_root_table_list.tables[i].signature),
78
                                signature, ACPI_NAME_SIZE)) {
79
 
80
                        /* Not the requested table */
81
 
82
                        continue;
83
                }
84
 
85
                /* Table with matching signature has been found */
86
 
87
                if (!acpi_gbl_root_table_list.tables[i].pointer) {
88
 
89
                        /* Table is not currently mapped, map it */
90
 
91
                        status =
92
                            acpi_tb_verify_table(&acpi_gbl_root_table_list.
93
                                                 tables[i]);
94
                        if (ACPI_FAILURE(status)) {
95
                                return_ACPI_STATUS(status);
96
                        }
97
 
98
                        if (!acpi_gbl_root_table_list.tables[i].pointer) {
99
                                continue;
100
                        }
101
                }
102
 
103
                /* Check for table match on all IDs */
104
 
105
                if (!ACPI_MEMCMP
106
                    (acpi_gbl_root_table_list.tables[i].pointer->signature,
107
                     signature, ACPI_NAME_SIZE) && (!oem_id[0]
108
                                                    ||
109
                                                    !ACPI_MEMCMP
110
                                                    (acpi_gbl_root_table_list.
111
                                                     tables[i].pointer->oem_id,
112
                                                     oem_id, ACPI_OEM_ID_SIZE))
113
                    && (!oem_table_id[0]
114
                        || !ACPI_MEMCMP(acpi_gbl_root_table_list.tables[i].
115
                                        pointer->oem_table_id, oem_table_id,
116
                                        ACPI_OEM_TABLE_ID_SIZE))) {
117
                        *table_index = i;
118
 
119
                        ACPI_DEBUG_PRINT((ACPI_DB_TABLES,
120
                                          "Found table [%4.4s]\n", signature));
121
                        return_ACPI_STATUS(AE_OK);
122
                }
123
        }
124
 
125
        return_ACPI_STATUS(AE_NOT_FOUND);
126
}

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.