19c7c683cSJung-uk Kim /****************************************************************************** 29c7c683cSJung-uk Kim * 39c7c683cSJung-uk Kim * Module Name: utpredef - support functions for predefined names 49c7c683cSJung-uk Kim * 59c7c683cSJung-uk Kim *****************************************************************************/ 69c7c683cSJung-uk Kim 79c7c683cSJung-uk Kim /* 8*f8146b88SJung-uk Kim * Copyright (C) 2000 - 2016, Intel Corp. 99c7c683cSJung-uk Kim * All rights reserved. 109c7c683cSJung-uk Kim * 119c7c683cSJung-uk Kim * Redistribution and use in source and binary forms, with or without 129c7c683cSJung-uk Kim * modification, are permitted provided that the following conditions 139c7c683cSJung-uk Kim * are met: 149c7c683cSJung-uk Kim * 1. Redistributions of source code must retain the above copyright 159c7c683cSJung-uk Kim * notice, this list of conditions, and the following disclaimer, 169c7c683cSJung-uk Kim * without modification. 179c7c683cSJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 189c7c683cSJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 199c7c683cSJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 209c7c683cSJung-uk Kim * including a substantially similar Disclaimer requirement for further 219c7c683cSJung-uk Kim * binary redistribution. 229c7c683cSJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 239c7c683cSJung-uk Kim * of any contributors may be used to endorse or promote products derived 249c7c683cSJung-uk Kim * from this software without specific prior written permission. 259c7c683cSJung-uk Kim * 269c7c683cSJung-uk Kim * Alternatively, this software may be distributed under the terms of the 279c7c683cSJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 289c7c683cSJung-uk Kim * Software Foundation. 299c7c683cSJung-uk Kim * 309c7c683cSJung-uk Kim * NO WARRANTY 319c7c683cSJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 329c7c683cSJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 339c7c683cSJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 349c7c683cSJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 359c7c683cSJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 369c7c683cSJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 379c7c683cSJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 389c7c683cSJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 399c7c683cSJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 409c7c683cSJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 419c7c683cSJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 429c7c683cSJung-uk Kim */ 439c7c683cSJung-uk Kim 449c7c683cSJung-uk Kim #include <contrib/dev/acpica/include/acpi.h> 459c7c683cSJung-uk Kim #include <contrib/dev/acpica/include/accommon.h> 469c7c683cSJung-uk Kim #include <contrib/dev/acpica/include/acpredef.h> 479c7c683cSJung-uk Kim 489c7c683cSJung-uk Kim 499c7c683cSJung-uk Kim #define _COMPONENT ACPI_UTILITIES 509c7c683cSJung-uk Kim ACPI_MODULE_NAME ("utpredef") 519c7c683cSJung-uk Kim 529c7c683cSJung-uk Kim 539c7c683cSJung-uk Kim /* 549c7c683cSJung-uk Kim * Names for the types that can be returned by the predefined objects. 559c7c683cSJung-uk Kim * Used for warning messages. Must be in the same order as the ACPI_RTYPEs 569c7c683cSJung-uk Kim */ 579c7c683cSJung-uk Kim static const char *UtRtypeNames[] = 589c7c683cSJung-uk Kim { 599c7c683cSJung-uk Kim "/Integer", 609c7c683cSJung-uk Kim "/String", 619c7c683cSJung-uk Kim "/Buffer", 629c7c683cSJung-uk Kim "/Package", 639c7c683cSJung-uk Kim "/Reference", 649c7c683cSJung-uk Kim }; 659c7c683cSJung-uk Kim 669c7c683cSJung-uk Kim 679c7c683cSJung-uk Kim /******************************************************************************* 689c7c683cSJung-uk Kim * 699c7c683cSJung-uk Kim * FUNCTION: AcpiUtGetNextPredefinedMethod 709c7c683cSJung-uk Kim * 719c7c683cSJung-uk Kim * PARAMETERS: ThisName - Entry in the predefined method/name table 729c7c683cSJung-uk Kim * 739c7c683cSJung-uk Kim * RETURN: Pointer to next entry in predefined table. 749c7c683cSJung-uk Kim * 759c7c683cSJung-uk Kim * DESCRIPTION: Get the next entry in the predefine method table. Handles the 769c7c683cSJung-uk Kim * cases where a package info entry follows a method name that 779c7c683cSJung-uk Kim * returns a package. 789c7c683cSJung-uk Kim * 799c7c683cSJung-uk Kim ******************************************************************************/ 809c7c683cSJung-uk Kim 819c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO * 829c7c683cSJung-uk Kim AcpiUtGetNextPredefinedMethod ( 839c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *ThisName) 849c7c683cSJung-uk Kim { 859c7c683cSJung-uk Kim 869c7c683cSJung-uk Kim /* 879c7c683cSJung-uk Kim * Skip next entry in the table if this name returns a Package 889c7c683cSJung-uk Kim * (next entry contains the package info) 899c7c683cSJung-uk Kim */ 909c7c683cSJung-uk Kim if ((ThisName->Info.ExpectedBtypes & ACPI_RTYPE_PACKAGE) && 919c7c683cSJung-uk Kim (ThisName->Info.ExpectedBtypes != ACPI_RTYPE_ALL)) 929c7c683cSJung-uk Kim { 939c7c683cSJung-uk Kim ThisName++; 949c7c683cSJung-uk Kim } 959c7c683cSJung-uk Kim 969c7c683cSJung-uk Kim ThisName++; 979c7c683cSJung-uk Kim return (ThisName); 989c7c683cSJung-uk Kim } 999c7c683cSJung-uk Kim 1009c7c683cSJung-uk Kim 1019c7c683cSJung-uk Kim /******************************************************************************* 1029c7c683cSJung-uk Kim * 1039c7c683cSJung-uk Kim * FUNCTION: AcpiUtMatchPredefinedMethod 1049c7c683cSJung-uk Kim * 1059c7c683cSJung-uk Kim * PARAMETERS: Name - Name to find 1069c7c683cSJung-uk Kim * 1079c7c683cSJung-uk Kim * RETURN: Pointer to entry in predefined table. NULL indicates not found. 1089c7c683cSJung-uk Kim * 1099c7c683cSJung-uk Kim * DESCRIPTION: Check an object name against the predefined object list. 1109c7c683cSJung-uk Kim * 1119c7c683cSJung-uk Kim ******************************************************************************/ 1129c7c683cSJung-uk Kim 1139c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO * 1149c7c683cSJung-uk Kim AcpiUtMatchPredefinedMethod ( 1159c7c683cSJung-uk Kim char *Name) 1169c7c683cSJung-uk Kim { 1179c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *ThisName; 1189c7c683cSJung-uk Kim 1199c7c683cSJung-uk Kim 1209c7c683cSJung-uk Kim /* Quick check for a predefined name, first character must be underscore */ 1219c7c683cSJung-uk Kim 1229c7c683cSJung-uk Kim if (Name[0] != '_') 1239c7c683cSJung-uk Kim { 1249c7c683cSJung-uk Kim return (NULL); 1259c7c683cSJung-uk Kim } 1269c7c683cSJung-uk Kim 1279c7c683cSJung-uk Kim /* Search info table for a predefined method/object name */ 1289c7c683cSJung-uk Kim 1299c7c683cSJung-uk Kim ThisName = AcpiGbl_PredefinedMethods; 1309c7c683cSJung-uk Kim while (ThisName->Info.Name[0]) 1319c7c683cSJung-uk Kim { 1329c7c683cSJung-uk Kim if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) 1339c7c683cSJung-uk Kim { 1349c7c683cSJung-uk Kim return (ThisName); 1359c7c683cSJung-uk Kim } 1369c7c683cSJung-uk Kim 1379c7c683cSJung-uk Kim ThisName = AcpiUtGetNextPredefinedMethod (ThisName); 1389c7c683cSJung-uk Kim } 1399c7c683cSJung-uk Kim 1409c7c683cSJung-uk Kim return (NULL); /* Not found */ 1419c7c683cSJung-uk Kim } 1429c7c683cSJung-uk Kim 1439c7c683cSJung-uk Kim 1449c7c683cSJung-uk Kim /******************************************************************************* 1459c7c683cSJung-uk Kim * 1469c7c683cSJung-uk Kim * FUNCTION: AcpiUtGetExpectedReturnTypes 1479c7c683cSJung-uk Kim * 1489c7c683cSJung-uk Kim * PARAMETERS: Buffer - Where the formatted string is returned 1499c7c683cSJung-uk Kim * ExpectedBTypes - Bitfield of expected data types 1509c7c683cSJung-uk Kim * 1519c7c683cSJung-uk Kim * RETURN: Formatted string in Buffer. 1529c7c683cSJung-uk Kim * 1539c7c683cSJung-uk Kim * DESCRIPTION: Format the expected object types into a printable string. 1549c7c683cSJung-uk Kim * 1559c7c683cSJung-uk Kim ******************************************************************************/ 1569c7c683cSJung-uk Kim 1579c7c683cSJung-uk Kim void 1589c7c683cSJung-uk Kim AcpiUtGetExpectedReturnTypes ( 1599c7c683cSJung-uk Kim char *Buffer, 1609c7c683cSJung-uk Kim UINT32 ExpectedBtypes) 1619c7c683cSJung-uk Kim { 1629c7c683cSJung-uk Kim UINT32 ThisRtype; 1639c7c683cSJung-uk Kim UINT32 i; 1649c7c683cSJung-uk Kim UINT32 j; 1659c7c683cSJung-uk Kim 1669c7c683cSJung-uk Kim 167895f26a9SJung-uk Kim if (!ExpectedBtypes) 168895f26a9SJung-uk Kim { 1695ef50723SJung-uk Kim strcpy (Buffer, "NONE"); 170895f26a9SJung-uk Kim return; 171895f26a9SJung-uk Kim } 172895f26a9SJung-uk Kim 1739c7c683cSJung-uk Kim j = 1; 1749c7c683cSJung-uk Kim Buffer[0] = 0; 1759c7c683cSJung-uk Kim ThisRtype = ACPI_RTYPE_INTEGER; 1769c7c683cSJung-uk Kim 1779c7c683cSJung-uk Kim for (i = 0; i < ACPI_NUM_RTYPES; i++) 1789c7c683cSJung-uk Kim { 1799c7c683cSJung-uk Kim /* If one of the expected types, concatenate the name of this type */ 1809c7c683cSJung-uk Kim 1819c7c683cSJung-uk Kim if (ExpectedBtypes & ThisRtype) 1829c7c683cSJung-uk Kim { 1835ef50723SJung-uk Kim strcat (Buffer, &UtRtypeNames[i][j]); 1849c7c683cSJung-uk Kim j = 0; /* Use name separator from now on */ 1859c7c683cSJung-uk Kim } 1869c7c683cSJung-uk Kim 1879c7c683cSJung-uk Kim ThisRtype <<= 1; /* Next Rtype */ 1889c7c683cSJung-uk Kim } 1899c7c683cSJung-uk Kim } 1909c7c683cSJung-uk Kim 1919c7c683cSJung-uk Kim 1929c7c683cSJung-uk Kim /******************************************************************************* 1939c7c683cSJung-uk Kim * 1949c7c683cSJung-uk Kim * The remaining functions are used by iASL and AcpiHelp only 1959c7c683cSJung-uk Kim * 1969c7c683cSJung-uk Kim ******************************************************************************/ 1979c7c683cSJung-uk Kim 1989c7c683cSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP) 1999c7c683cSJung-uk Kim #include <stdio.h> 2009c7c683cSJung-uk Kim #include <string.h> 2019c7c683cSJung-uk Kim 2029c7c683cSJung-uk Kim /* Local prototypes */ 2039c7c683cSJung-uk Kim 2049c7c683cSJung-uk Kim static UINT32 2059c7c683cSJung-uk Kim AcpiUtGetArgumentTypes ( 2069c7c683cSJung-uk Kim char *Buffer, 2079c7c683cSJung-uk Kim UINT16 ArgumentTypes); 2089c7c683cSJung-uk Kim 2099c7c683cSJung-uk Kim 2109c7c683cSJung-uk Kim /* Types that can be returned externally by a predefined name */ 2119c7c683cSJung-uk Kim 2129c7c683cSJung-uk Kim static const char *UtExternalTypeNames[] = /* Indexed by ACPI_TYPE_* */ 2139c7c683cSJung-uk Kim { 2149c7c683cSJung-uk Kim ", UNSUPPORTED-TYPE", 2159c7c683cSJung-uk Kim ", Integer", 2169c7c683cSJung-uk Kim ", String", 2179c7c683cSJung-uk Kim ", Buffer", 2189c7c683cSJung-uk Kim ", Package" 2199c7c683cSJung-uk Kim }; 2209c7c683cSJung-uk Kim 2219c7c683cSJung-uk Kim /* Bit widths for resource descriptor predefined names */ 2229c7c683cSJung-uk Kim 2239c7c683cSJung-uk Kim static const char *UtResourceTypeNames[] = 2249c7c683cSJung-uk Kim { 2259c7c683cSJung-uk Kim "/1", 2269c7c683cSJung-uk Kim "/2", 2279c7c683cSJung-uk Kim "/3", 2289c7c683cSJung-uk Kim "/8", 2299c7c683cSJung-uk Kim "/16", 2309c7c683cSJung-uk Kim "/32", 2319c7c683cSJung-uk Kim "/64", 2329c7c683cSJung-uk Kim "/variable", 2339c7c683cSJung-uk Kim }; 2349c7c683cSJung-uk Kim 2359c7c683cSJung-uk Kim 2369c7c683cSJung-uk Kim /******************************************************************************* 2379c7c683cSJung-uk Kim * 2389c7c683cSJung-uk Kim * FUNCTION: AcpiUtMatchResourceName 2399c7c683cSJung-uk Kim * 2409c7c683cSJung-uk Kim * PARAMETERS: Name - Name to find 2419c7c683cSJung-uk Kim * 2429c7c683cSJung-uk Kim * RETURN: Pointer to entry in the resource table. NULL indicates not 2439c7c683cSJung-uk Kim * found. 2449c7c683cSJung-uk Kim * 2459c7c683cSJung-uk Kim * DESCRIPTION: Check an object name against the predefined resource 2469c7c683cSJung-uk Kim * descriptor object list. 2479c7c683cSJung-uk Kim * 2489c7c683cSJung-uk Kim ******************************************************************************/ 2499c7c683cSJung-uk Kim 2509c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO * 2519c7c683cSJung-uk Kim AcpiUtMatchResourceName ( 2529c7c683cSJung-uk Kim char *Name) 2539c7c683cSJung-uk Kim { 2549c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *ThisName; 2559c7c683cSJung-uk Kim 2569c7c683cSJung-uk Kim 257*f8146b88SJung-uk Kim /* 258*f8146b88SJung-uk Kim * Quick check for a predefined name, first character must 259*f8146b88SJung-uk Kim * be underscore 260*f8146b88SJung-uk Kim */ 2619c7c683cSJung-uk Kim if (Name[0] != '_') 2629c7c683cSJung-uk Kim { 2639c7c683cSJung-uk Kim return (NULL); 2649c7c683cSJung-uk Kim } 2659c7c683cSJung-uk Kim 2669c7c683cSJung-uk Kim /* Search info table for a predefined method/object name */ 2679c7c683cSJung-uk Kim 2689c7c683cSJung-uk Kim ThisName = AcpiGbl_ResourceNames; 2699c7c683cSJung-uk Kim while (ThisName->Info.Name[0]) 2709c7c683cSJung-uk Kim { 2719c7c683cSJung-uk Kim if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) 2729c7c683cSJung-uk Kim { 2739c7c683cSJung-uk Kim return (ThisName); 2749c7c683cSJung-uk Kim } 2759c7c683cSJung-uk Kim 2769c7c683cSJung-uk Kim ThisName++; 2779c7c683cSJung-uk Kim } 2789c7c683cSJung-uk Kim 2799c7c683cSJung-uk Kim return (NULL); /* Not found */ 2809c7c683cSJung-uk Kim } 2819c7c683cSJung-uk Kim 2829c7c683cSJung-uk Kim 2839c7c683cSJung-uk Kim /******************************************************************************* 2849c7c683cSJung-uk Kim * 2859c7c683cSJung-uk Kim * FUNCTION: AcpiUtDisplayPredefinedMethod 2869c7c683cSJung-uk Kim * 2879c7c683cSJung-uk Kim * PARAMETERS: Buffer - Scratch buffer for this function 2889c7c683cSJung-uk Kim * ThisName - Entry in the predefined method/name table 2899c7c683cSJung-uk Kim * MultiLine - TRUE if output should be on >1 line 2909c7c683cSJung-uk Kim * 2919c7c683cSJung-uk Kim * RETURN: None 2929c7c683cSJung-uk Kim * 2939c7c683cSJung-uk Kim * DESCRIPTION: Display information about a predefined method. Number and 2949c7c683cSJung-uk Kim * type of the input arguments, and expected type(s) for the 2959c7c683cSJung-uk Kim * return value, if any. 2969c7c683cSJung-uk Kim * 2979c7c683cSJung-uk Kim ******************************************************************************/ 2989c7c683cSJung-uk Kim 2999c7c683cSJung-uk Kim void 3009c7c683cSJung-uk Kim AcpiUtDisplayPredefinedMethod ( 3019c7c683cSJung-uk Kim char *Buffer, 3029c7c683cSJung-uk Kim const ACPI_PREDEFINED_INFO *ThisName, 3039c7c683cSJung-uk Kim BOOLEAN MultiLine) 3049c7c683cSJung-uk Kim { 3059c7c683cSJung-uk Kim UINT32 ArgCount; 3069c7c683cSJung-uk Kim 3079c7c683cSJung-uk Kim /* 3089c7c683cSJung-uk Kim * Get the argument count and the string buffer 3099c7c683cSJung-uk Kim * containing all argument types 3109c7c683cSJung-uk Kim */ 3119c7c683cSJung-uk Kim ArgCount = AcpiUtGetArgumentTypes (Buffer, 3129c7c683cSJung-uk Kim ThisName->Info.ArgumentList); 3139c7c683cSJung-uk Kim 3149c7c683cSJung-uk Kim if (MultiLine) 3159c7c683cSJung-uk Kim { 3169c7c683cSJung-uk Kim printf (" "); 3179c7c683cSJung-uk Kim } 3189c7c683cSJung-uk Kim 3199c7c683cSJung-uk Kim printf ("%4.4s Requires %s%u argument%s", 3209c7c683cSJung-uk Kim ThisName->Info.Name, 3219c7c683cSJung-uk Kim (ThisName->Info.ArgumentList & ARG_COUNT_IS_MINIMUM) ? 3229c7c683cSJung-uk Kim "(at least) " : "", 3239c7c683cSJung-uk Kim ArgCount, ArgCount != 1 ? "s" : ""); 3249c7c683cSJung-uk Kim 3259c7c683cSJung-uk Kim /* Display the types for any arguments */ 3269c7c683cSJung-uk Kim 3279c7c683cSJung-uk Kim if (ArgCount > 0) 3289c7c683cSJung-uk Kim { 3299c7c683cSJung-uk Kim printf (" (%s)", Buffer); 3309c7c683cSJung-uk Kim } 3319c7c683cSJung-uk Kim 3329c7c683cSJung-uk Kim if (MultiLine) 3339c7c683cSJung-uk Kim { 3349c7c683cSJung-uk Kim printf ("\n "); 3359c7c683cSJung-uk Kim } 3369c7c683cSJung-uk Kim 3379c7c683cSJung-uk Kim /* Get the return value type(s) allowed */ 3389c7c683cSJung-uk Kim 3399c7c683cSJung-uk Kim if (ThisName->Info.ExpectedBtypes) 3409c7c683cSJung-uk Kim { 3419c7c683cSJung-uk Kim AcpiUtGetExpectedReturnTypes (Buffer, ThisName->Info.ExpectedBtypes); 3429c7c683cSJung-uk Kim printf (" Return value types: %s\n", Buffer); 3439c7c683cSJung-uk Kim } 3449c7c683cSJung-uk Kim else 3459c7c683cSJung-uk Kim { 3469c7c683cSJung-uk Kim printf (" No return value\n"); 3479c7c683cSJung-uk Kim } 3489c7c683cSJung-uk Kim } 3499c7c683cSJung-uk Kim 3509c7c683cSJung-uk Kim 3519c7c683cSJung-uk Kim /******************************************************************************* 3529c7c683cSJung-uk Kim * 3539c7c683cSJung-uk Kim * FUNCTION: AcpiUtGetArgumentTypes 3549c7c683cSJung-uk Kim * 3559c7c683cSJung-uk Kim * PARAMETERS: Buffer - Where to return the formatted types 3569c7c683cSJung-uk Kim * ArgumentTypes - Types field for this method 3579c7c683cSJung-uk Kim * 3589c7c683cSJung-uk Kim * RETURN: Count - the number of arguments required for this method 3599c7c683cSJung-uk Kim * 3609c7c683cSJung-uk Kim * DESCRIPTION: Format the required data types for this method (Integer, 3619c7c683cSJung-uk Kim * String, Buffer, or Package) and return the required argument 3629c7c683cSJung-uk Kim * count. 3639c7c683cSJung-uk Kim * 3649c7c683cSJung-uk Kim ******************************************************************************/ 3659c7c683cSJung-uk Kim 3669c7c683cSJung-uk Kim static UINT32 3679c7c683cSJung-uk Kim AcpiUtGetArgumentTypes ( 3689c7c683cSJung-uk Kim char *Buffer, 3699c7c683cSJung-uk Kim UINT16 ArgumentTypes) 3709c7c683cSJung-uk Kim { 3719c7c683cSJung-uk Kim UINT16 ThisArgumentType; 3729c7c683cSJung-uk Kim UINT16 SubIndex; 3739c7c683cSJung-uk Kim UINT16 ArgCount; 3749c7c683cSJung-uk Kim UINT32 i; 3759c7c683cSJung-uk Kim 3769c7c683cSJung-uk Kim 3779c7c683cSJung-uk Kim *Buffer = 0; 3789c7c683cSJung-uk Kim SubIndex = 2; 3799c7c683cSJung-uk Kim 3809c7c683cSJung-uk Kim /* First field in the types list is the count of args to follow */ 3819c7c683cSJung-uk Kim 382895f26a9SJung-uk Kim ArgCount = METHOD_GET_ARG_COUNT (ArgumentTypes); 3839c7c683cSJung-uk Kim if (ArgCount > METHOD_PREDEF_ARGS_MAX) 3849c7c683cSJung-uk Kim { 3859c7c683cSJung-uk Kim printf ("**** Invalid argument count (%u) " 3869c7c683cSJung-uk Kim "in predefined info structure\n", ArgCount); 3879c7c683cSJung-uk Kim return (ArgCount); 3889c7c683cSJung-uk Kim } 3899c7c683cSJung-uk Kim 3909c7c683cSJung-uk Kim /* Get each argument from the list, convert to ascii, store to buffer */ 3919c7c683cSJung-uk Kim 3929c7c683cSJung-uk Kim for (i = 0; i < ArgCount; i++) 3939c7c683cSJung-uk Kim { 394895f26a9SJung-uk Kim ThisArgumentType = METHOD_GET_NEXT_TYPE (ArgumentTypes); 395895f26a9SJung-uk Kim 3969c7c683cSJung-uk Kim if (!ThisArgumentType || (ThisArgumentType > METHOD_MAX_ARG_TYPE)) 3979c7c683cSJung-uk Kim { 3989c7c683cSJung-uk Kim printf ("**** Invalid argument type (%u) " 3999c7c683cSJung-uk Kim "in predefined info structure\n", ThisArgumentType); 4009c7c683cSJung-uk Kim return (ArgCount); 4019c7c683cSJung-uk Kim } 4029c7c683cSJung-uk Kim 4039c7c683cSJung-uk Kim strcat (Buffer, UtExternalTypeNames[ThisArgumentType] + SubIndex); 4049c7c683cSJung-uk Kim SubIndex = 0; 4059c7c683cSJung-uk Kim } 4069c7c683cSJung-uk Kim 4079c7c683cSJung-uk Kim return (ArgCount); 4089c7c683cSJung-uk Kim } 4099c7c683cSJung-uk Kim 4109c7c683cSJung-uk Kim 4119c7c683cSJung-uk Kim /******************************************************************************* 4129c7c683cSJung-uk Kim * 4139c7c683cSJung-uk Kim * FUNCTION: AcpiUtGetResourceBitWidth 4149c7c683cSJung-uk Kim * 4159c7c683cSJung-uk Kim * PARAMETERS: Buffer - Where the formatted string is returned 4169c7c683cSJung-uk Kim * Types - Bitfield of expected data types 4179c7c683cSJung-uk Kim * 4189c7c683cSJung-uk Kim * RETURN: Count of return types. Formatted string in Buffer. 4199c7c683cSJung-uk Kim * 4209c7c683cSJung-uk Kim * DESCRIPTION: Format the resource bit widths into a printable string. 4219c7c683cSJung-uk Kim * 4229c7c683cSJung-uk Kim ******************************************************************************/ 4239c7c683cSJung-uk Kim 4249c7c683cSJung-uk Kim UINT32 4259c7c683cSJung-uk Kim AcpiUtGetResourceBitWidth ( 4269c7c683cSJung-uk Kim char *Buffer, 4279c7c683cSJung-uk Kim UINT16 Types) 4289c7c683cSJung-uk Kim { 4299c7c683cSJung-uk Kim UINT32 i; 4309c7c683cSJung-uk Kim UINT16 SubIndex; 4319c7c683cSJung-uk Kim UINT32 Found; 4329c7c683cSJung-uk Kim 4339c7c683cSJung-uk Kim 4349c7c683cSJung-uk Kim *Buffer = 0; 4359c7c683cSJung-uk Kim SubIndex = 1; 4369c7c683cSJung-uk Kim Found = 0; 4379c7c683cSJung-uk Kim 4389c7c683cSJung-uk Kim for (i = 0; i < NUM_RESOURCE_WIDTHS; i++) 4399c7c683cSJung-uk Kim { 4409c7c683cSJung-uk Kim if (Types & 1) 4419c7c683cSJung-uk Kim { 4429c7c683cSJung-uk Kim strcat (Buffer, &(UtResourceTypeNames[i][SubIndex])); 4439c7c683cSJung-uk Kim SubIndex = 0; 4449c7c683cSJung-uk Kim Found++; 4459c7c683cSJung-uk Kim } 4469c7c683cSJung-uk Kim 4479c7c683cSJung-uk Kim Types >>= 1; 4489c7c683cSJung-uk Kim } 4499c7c683cSJung-uk Kim 4509c7c683cSJung-uk Kim return (Found); 4519c7c683cSJung-uk Kim } 4529c7c683cSJung-uk Kim #endif 453