dbconvert.c revision 244971
1244971Sjkim/******************************************************************************* 2244971Sjkim * 3244971Sjkim * Module Name: dbconvert - debugger miscellaneous conversion routines 4244971Sjkim * 5244971Sjkim ******************************************************************************/ 6244971Sjkim 7244971Sjkim/* 8244971Sjkim * Copyright (C) 2000 - 2012, Intel Corp. 9244971Sjkim * All rights reserved. 10244971Sjkim * 11244971Sjkim * Redistribution and use in source and binary forms, with or without 12244971Sjkim * modification, are permitted provided that the following conditions 13244971Sjkim * are met: 14244971Sjkim * 1. Redistributions of source code must retain the above copyright 15244971Sjkim * notice, this list of conditions, and the following disclaimer, 16244971Sjkim * without modification. 17244971Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18244971Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19244971Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20244971Sjkim * including a substantially similar Disclaimer requirement for further 21244971Sjkim * binary redistribution. 22244971Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23244971Sjkim * of any contributors may be used to endorse or promote products derived 24244971Sjkim * from this software without specific prior written permission. 25244971Sjkim * 26244971Sjkim * Alternatively, this software may be distributed under the terms of the 27244971Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28244971Sjkim * Software Foundation. 29244971Sjkim * 30244971Sjkim * NO WARRANTY 31244971Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32244971Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33244971Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34244971Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35244971Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36244971Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37244971Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38244971Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39244971Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40244971Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41244971Sjkim * POSSIBILITY OF SUCH DAMAGES. 42244971Sjkim */ 43244971Sjkim 44244971Sjkim 45244971Sjkim#include "acpi.h" 46244971Sjkim#include "accommon.h" 47244971Sjkim#include "acdebug.h" 48244971Sjkim 49244971Sjkim#ifdef ACPI_DEBUGGER 50244971Sjkim 51244971Sjkim#define _COMPONENT ACPI_CA_DEBUGGER 52244971Sjkim ACPI_MODULE_NAME ("dbconvert") 53244971Sjkim 54244971Sjkim 55244971Sjkim#define DB_DEFAULT_PKG_ELEMENTS 33 56244971Sjkim 57244971Sjkim 58244971Sjkim/******************************************************************************* 59244971Sjkim * 60244971Sjkim * FUNCTION: AcpiDbHexCharToValue 61244971Sjkim * 62244971Sjkim * PARAMETERS: HexChar - Ascii Hex digit, 0-9|a-f|A-F 63244971Sjkim * ReturnValue - Where the converted value is returned 64244971Sjkim * 65244971Sjkim * RETURN: Status 66244971Sjkim * 67244971Sjkim * DESCRIPTION: Convert a single hex character to a 4-bit number (0-16). 68244971Sjkim * 69244971Sjkim ******************************************************************************/ 70244971Sjkim 71244971SjkimACPI_STATUS 72244971SjkimAcpiDbHexCharToValue ( 73244971Sjkim int HexChar, 74244971Sjkim UINT8 *ReturnValue) 75244971Sjkim{ 76244971Sjkim UINT8 Value; 77244971Sjkim 78244971Sjkim 79244971Sjkim /* Digit must be ascii [0-9a-fA-F] */ 80244971Sjkim 81244971Sjkim if (!ACPI_IS_XDIGIT (HexChar)) 82244971Sjkim { 83244971Sjkim return (AE_BAD_HEX_CONSTANT); 84244971Sjkim } 85244971Sjkim 86244971Sjkim if (HexChar <= 0x39) 87244971Sjkim { 88244971Sjkim Value = (UINT8) (HexChar - 0x30); 89244971Sjkim } 90244971Sjkim else 91244971Sjkim { 92244971Sjkim Value = (UINT8) (ACPI_TOUPPER (HexChar) - 0x37); 93244971Sjkim } 94244971Sjkim 95244971Sjkim *ReturnValue = Value; 96244971Sjkim return (AE_OK); 97244971Sjkim} 98244971Sjkim 99244971Sjkim 100244971Sjkim/******************************************************************************* 101244971Sjkim * 102244971Sjkim * FUNCTION: AcpiDbHexByteToBinary 103244971Sjkim * 104244971Sjkim * PARAMETERS: HexByte - Double hex digit (0x00 - 0xFF) in format: 105244971Sjkim * HiByte then LoByte. 106244971Sjkim * ReturnValue - Where the converted value is returned 107244971Sjkim * 108244971Sjkim * RETURN: Status 109244971Sjkim * 110244971Sjkim * DESCRIPTION: Convert two hex characters to an 8 bit number (0 - 255). 111244971Sjkim * 112244971Sjkim ******************************************************************************/ 113244971Sjkim 114244971Sjkimstatic ACPI_STATUS 115244971SjkimAcpiDbHexByteToBinary ( 116244971Sjkim char *HexByte, 117244971Sjkim UINT8 *ReturnValue) 118244971Sjkim{ 119244971Sjkim UINT8 Local0; 120244971Sjkim UINT8 Local1; 121244971Sjkim ACPI_STATUS Status; 122244971Sjkim 123244971Sjkim 124244971Sjkim /* High byte */ 125244971Sjkim 126244971Sjkim Status = AcpiDbHexCharToValue (HexByte[0], &Local0); 127244971Sjkim if (ACPI_FAILURE (Status)) 128244971Sjkim { 129244971Sjkim return (Status); 130244971Sjkim } 131244971Sjkim 132244971Sjkim /* Low byte */ 133244971Sjkim 134244971Sjkim Status = AcpiDbHexCharToValue (HexByte[1], &Local1); 135244971Sjkim if (ACPI_FAILURE (Status)) 136244971Sjkim { 137244971Sjkim return (Status); 138244971Sjkim } 139244971Sjkim 140244971Sjkim *ReturnValue = (UINT8) ((Local0 << 4) | Local1); 141244971Sjkim return (AE_OK); 142244971Sjkim} 143244971Sjkim 144244971Sjkim 145244971Sjkim/******************************************************************************* 146244971Sjkim * 147244971Sjkim * FUNCTION: AcpiDbConvertToBuffer 148244971Sjkim * 149244971Sjkim * PARAMETERS: String - Input string to be converted 150244971Sjkim * Object - Where the buffer object is returned 151244971Sjkim * 152244971Sjkim * RETURN: Status 153244971Sjkim * 154244971Sjkim * DESCRIPTION: Convert a string to a buffer object. String is treated a list 155244971Sjkim * of buffer elements, each separated by a space or comma. 156244971Sjkim * 157244971Sjkim ******************************************************************************/ 158244971Sjkim 159244971Sjkimstatic ACPI_STATUS 160244971SjkimAcpiDbConvertToBuffer ( 161244971Sjkim char *String, 162244971Sjkim ACPI_OBJECT *Object) 163244971Sjkim{ 164244971Sjkim UINT32 i; 165244971Sjkim UINT32 j; 166244971Sjkim UINT32 Length; 167244971Sjkim UINT8 *Buffer; 168244971Sjkim ACPI_STATUS Status; 169244971Sjkim 170244971Sjkim 171244971Sjkim /* Generate the final buffer length */ 172244971Sjkim 173244971Sjkim for (i = 0, Length = 0; String[i];) 174244971Sjkim { 175244971Sjkim i+=2; 176244971Sjkim Length++; 177244971Sjkim 178244971Sjkim while (String[i] && 179244971Sjkim ((String[i] == ',') || (String[i] == ' '))) 180244971Sjkim { 181244971Sjkim i++; 182244971Sjkim } 183244971Sjkim } 184244971Sjkim 185244971Sjkim Buffer = ACPI_ALLOCATE (Length); 186244971Sjkim if (!Buffer) 187244971Sjkim { 188244971Sjkim return (AE_NO_MEMORY); 189244971Sjkim } 190244971Sjkim 191244971Sjkim /* Convert the command line bytes to the buffer */ 192244971Sjkim 193244971Sjkim for (i = 0, j = 0; String[i];) 194244971Sjkim { 195244971Sjkim Status = AcpiDbHexByteToBinary (&String[i], &Buffer[j]); 196244971Sjkim if (ACPI_FAILURE (Status)) 197244971Sjkim { 198244971Sjkim ACPI_FREE (Buffer); 199244971Sjkim return (Status); 200244971Sjkim } 201244971Sjkim 202244971Sjkim j++; 203244971Sjkim i+=2; 204244971Sjkim while (String[i] && 205244971Sjkim ((String[i] == ',') || (String[i] == ' '))) 206244971Sjkim { 207244971Sjkim i++; 208244971Sjkim } 209244971Sjkim } 210244971Sjkim 211244971Sjkim Object->Type = ACPI_TYPE_BUFFER; 212244971Sjkim Object->Buffer.Pointer = Buffer; 213244971Sjkim Object->Buffer.Length = Length; 214244971Sjkim return (AE_OK); 215244971Sjkim} 216244971Sjkim 217244971Sjkim 218244971Sjkim/******************************************************************************* 219244971Sjkim * 220244971Sjkim * FUNCTION: AcpiDbConvertToPackage 221244971Sjkim * 222244971Sjkim * PARAMETERS: String - Input string to be converted 223244971Sjkim * Object - Where the package object is returned 224244971Sjkim * 225244971Sjkim * RETURN: Status 226244971Sjkim * 227244971Sjkim * DESCRIPTION: Convert a string to a package object. Handles nested packages 228244971Sjkim * via recursion with AcpiDbConvertToObject. 229244971Sjkim * 230244971Sjkim ******************************************************************************/ 231244971Sjkim 232244971SjkimACPI_STATUS 233244971SjkimAcpiDbConvertToPackage ( 234244971Sjkim char *String, 235244971Sjkim ACPI_OBJECT *Object) 236244971Sjkim{ 237244971Sjkim char *This; 238244971Sjkim char *Next; 239244971Sjkim UINT32 i; 240244971Sjkim ACPI_OBJECT_TYPE Type; 241244971Sjkim ACPI_OBJECT *Elements; 242244971Sjkim ACPI_STATUS Status; 243244971Sjkim 244244971Sjkim 245244971Sjkim Elements = ACPI_ALLOCATE_ZEROED ( 246244971Sjkim DB_DEFAULT_PKG_ELEMENTS * sizeof (ACPI_OBJECT)); 247244971Sjkim 248244971Sjkim This = String; 249244971Sjkim for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++) 250244971Sjkim { 251244971Sjkim This = AcpiDbGetNextToken (This, &Next, &Type); 252244971Sjkim if (!This) 253244971Sjkim { 254244971Sjkim break; 255244971Sjkim } 256244971Sjkim 257244971Sjkim /* Recursive call to convert each package element */ 258244971Sjkim 259244971Sjkim Status = AcpiDbConvertToObject (Type, This, &Elements[i]); 260244971Sjkim if (ACPI_FAILURE (Status)) 261244971Sjkim { 262244971Sjkim AcpiDbDeleteObjects (i + 1, Elements); 263244971Sjkim ACPI_FREE (Elements); 264244971Sjkim return (Status); 265244971Sjkim } 266244971Sjkim 267244971Sjkim This = Next; 268244971Sjkim } 269244971Sjkim 270244971Sjkim Object->Type = ACPI_TYPE_PACKAGE; 271244971Sjkim Object->Package.Count = i; 272244971Sjkim Object->Package.Elements = Elements; 273244971Sjkim return (AE_OK); 274244971Sjkim} 275244971Sjkim 276244971Sjkim 277244971Sjkim/******************************************************************************* 278244971Sjkim * 279244971Sjkim * FUNCTION: AcpiDbConvertToObject 280244971Sjkim * 281244971Sjkim * PARAMETERS: Type - Object type as determined by parser 282244971Sjkim * String - Input string to be converted 283244971Sjkim * Object - Where the new object is returned 284244971Sjkim * 285244971Sjkim * RETURN: Status 286244971Sjkim * 287244971Sjkim * DESCRIPTION: Convert a typed and tokenized string to an ACPI_OBJECT. Typing: 288244971Sjkim * 1) String objects were surrounded by quotes. 289244971Sjkim * 2) Buffer objects were surrounded by parentheses. 290244971Sjkim * 3) Package objects were surrounded by brackets "[]". 291244971Sjkim * 4) All standalone tokens are treated as integers. 292244971Sjkim * 293244971Sjkim ******************************************************************************/ 294244971Sjkim 295244971SjkimACPI_STATUS 296244971SjkimAcpiDbConvertToObject ( 297244971Sjkim ACPI_OBJECT_TYPE Type, 298244971Sjkim char *String, 299244971Sjkim ACPI_OBJECT *Object) 300244971Sjkim{ 301244971Sjkim ACPI_STATUS Status = AE_OK; 302244971Sjkim 303244971Sjkim 304244971Sjkim switch (Type) 305244971Sjkim { 306244971Sjkim case ACPI_TYPE_STRING: 307244971Sjkim Object->Type = ACPI_TYPE_STRING; 308244971Sjkim Object->String.Pointer = String; 309244971Sjkim Object->String.Length = (UINT32) ACPI_STRLEN (String); 310244971Sjkim break; 311244971Sjkim 312244971Sjkim case ACPI_TYPE_BUFFER: 313244971Sjkim Status = AcpiDbConvertToBuffer (String, Object); 314244971Sjkim break; 315244971Sjkim 316244971Sjkim case ACPI_TYPE_PACKAGE: 317244971Sjkim Status = AcpiDbConvertToPackage (String, Object); 318244971Sjkim break; 319244971Sjkim 320244971Sjkim default: 321244971Sjkim Object->Type = ACPI_TYPE_INTEGER; 322244971Sjkim Status = AcpiUtStrtoul64 (String, 16, &Object->Integer.Value); 323244971Sjkim break; 324244971Sjkim } 325244971Sjkim 326244971Sjkim return (Status); 327244971Sjkim} 328244971Sjkim 329244971Sjkim 330244971Sjkim/******************************************************************************* 331244971Sjkim * 332244971Sjkim * FUNCTION: AcpiDbEncodePldBuffer 333244971Sjkim * 334244971Sjkim * PARAMETERS: PldInfo - _PLD buffer struct (Using local struct) 335244971Sjkim * 336244971Sjkim * RETURN: Encode _PLD buffer suitable for return value from _PLD 337244971Sjkim * 338244971Sjkim * DESCRIPTION: Bit-packs a _PLD buffer struct. Used to test the _PLD macros 339244971Sjkim * 340244971Sjkim ******************************************************************************/ 341244971Sjkim 342244971SjkimUINT8 * 343244971SjkimAcpiDbEncodePldBuffer ( 344244971Sjkim ACPI_PLD_INFO *PldInfo) 345244971Sjkim{ 346244971Sjkim UINT32 *Buffer; 347244971Sjkim UINT32 Dword; 348244971Sjkim 349244971Sjkim 350244971Sjkim Buffer = ACPI_ALLOCATE_ZEROED (ACPI_PLD_BUFFER_SIZE); 351244971Sjkim if (!Buffer) 352244971Sjkim { 353244971Sjkim return (NULL); 354244971Sjkim } 355244971Sjkim 356244971Sjkim /* First 32 bits */ 357244971Sjkim 358244971Sjkim Dword = 0; 359244971Sjkim ACPI_PLD_SET_REVISION (&Dword, PldInfo->Revision); 360244971Sjkim ACPI_PLD_SET_IGNORE_COLOR (&Dword, PldInfo->IgnoreColor); 361244971Sjkim ACPI_PLD_SET_COLOR (&Dword, PldInfo->Color); 362244971Sjkim ACPI_MOVE_32_TO_32 (&Buffer[0], &Dword); 363244971Sjkim 364244971Sjkim /* Second 32 bits */ 365244971Sjkim 366244971Sjkim Dword = 0; 367244971Sjkim ACPI_PLD_SET_WIDTH (&Dword, PldInfo->Width); 368244971Sjkim ACPI_PLD_SET_HEIGHT (&Dword, PldInfo->Height); 369244971Sjkim ACPI_MOVE_32_TO_32 (&Buffer[1], &Dword); 370244971Sjkim 371244971Sjkim /* Third 32 bits */ 372244971Sjkim 373244971Sjkim Dword = 0; 374244971Sjkim ACPI_PLD_SET_USER_VISIBLE (&Dword, PldInfo->UserVisible); 375244971Sjkim ACPI_PLD_SET_DOCK (&Dword, PldInfo->Dock); 376244971Sjkim ACPI_PLD_SET_LID (&Dword, PldInfo->Lid); 377244971Sjkim ACPI_PLD_SET_PANEL (&Dword, PldInfo->Panel); 378244971Sjkim ACPI_PLD_SET_VERTICAL (&Dword, PldInfo->VerticalPosition); 379244971Sjkim ACPI_PLD_SET_HORIZONTAL (&Dword, PldInfo->HorizontalPosition); 380244971Sjkim ACPI_PLD_SET_SHAPE (&Dword, PldInfo->Shape); 381244971Sjkim ACPI_PLD_SET_ORIENTATION (&Dword, PldInfo->GroupOrientation); 382244971Sjkim ACPI_PLD_SET_TOKEN (&Dword, PldInfo->GroupToken); 383244971Sjkim ACPI_PLD_SET_POSITION (&Dword, PldInfo->GroupPosition); 384244971Sjkim ACPI_PLD_SET_BAY (&Dword, PldInfo->Bay); 385244971Sjkim ACPI_MOVE_32_TO_32 (&Buffer[2], &Dword); 386244971Sjkim 387244971Sjkim /* Fourth 32 bits */ 388244971Sjkim 389244971Sjkim Dword = 0; 390244971Sjkim ACPI_PLD_SET_EJECTABLE (&Dword, PldInfo->Ejectable); 391244971Sjkim ACPI_PLD_SET_OSPM_EJECT (&Dword, PldInfo->OspmEjectRequired); 392244971Sjkim ACPI_PLD_SET_CABINET (&Dword, PldInfo->CabinetNumber); 393244971Sjkim ACPI_PLD_SET_CARD_CAGE (&Dword, PldInfo->CardCageNumber); 394244971Sjkim ACPI_PLD_SET_REFERENCE (&Dword, PldInfo->Reference); 395244971Sjkim ACPI_PLD_SET_ROTATION (&Dword, PldInfo->Rotation); 396244971Sjkim ACPI_PLD_SET_ORDER (&Dword, PldInfo->Order); 397244971Sjkim ACPI_MOVE_32_TO_32 (&Buffer[3], &Dword); 398244971Sjkim 399244971Sjkim if (PldInfo->Revision >= 2) 400244971Sjkim { 401244971Sjkim /* Fifth 32 bits */ 402244971Sjkim 403244971Sjkim Dword = 0; 404244971Sjkim ACPI_PLD_SET_VERT_OFFSET (&Dword, PldInfo->VerticalOffset); 405244971Sjkim ACPI_PLD_SET_HORIZ_OFFSET (&Dword, PldInfo->HorizontalOffset); 406244971Sjkim ACPI_MOVE_32_TO_32 (&Buffer[4], &Dword); 407244971Sjkim } 408244971Sjkim 409244971Sjkim return (ACPI_CAST_PTR (UINT8, Buffer)); 410244971Sjkim} 411244971Sjkim 412244971Sjkim 413244971Sjkim/******************************************************************************* 414244971Sjkim * 415244971Sjkim * FUNCTION: AcpiDbDumpPldBuffer 416244971Sjkim * 417244971Sjkim * PARAMETERS: ObjDesc - Object returned from _PLD method 418244971Sjkim * 419244971Sjkim * RETURN: None. 420244971Sjkim * 421244971Sjkim * DESCRIPTION: Dumps formatted contents of a _PLD return buffer. 422244971Sjkim * 423244971Sjkim ******************************************************************************/ 424244971Sjkim 425244971Sjkim#define ACPI_PLD_OUTPUT "%20s : %-6X\n" 426244971Sjkim 427244971Sjkimvoid 428244971SjkimAcpiDbDumpPldBuffer ( 429244971Sjkim ACPI_OBJECT *ObjDesc) 430244971Sjkim{ 431244971Sjkim ACPI_OBJECT *BufferDesc; 432244971Sjkim ACPI_PLD_INFO *PldInfo; 433244971Sjkim UINT8 *NewBuffer; 434244971Sjkim ACPI_STATUS Status; 435244971Sjkim 436244971Sjkim 437244971Sjkim /* Object must be of type Package with at least one Buffer element */ 438244971Sjkim 439244971Sjkim if (ObjDesc->Type != ACPI_TYPE_PACKAGE) 440244971Sjkim { 441244971Sjkim return; 442244971Sjkim } 443244971Sjkim 444244971Sjkim BufferDesc = &ObjDesc->Package.Elements[0]; 445244971Sjkim if (BufferDesc->Type != ACPI_TYPE_BUFFER) 446244971Sjkim { 447244971Sjkim return; 448244971Sjkim } 449244971Sjkim 450244971Sjkim /* Convert _PLD buffer to local _PLD struct */ 451244971Sjkim 452244971Sjkim Status = AcpiDecodePldBuffer (BufferDesc->Buffer.Pointer, 453244971Sjkim BufferDesc->Buffer.Length, &PldInfo); 454244971Sjkim if (ACPI_FAILURE (Status)) 455244971Sjkim { 456244971Sjkim return; 457244971Sjkim } 458244971Sjkim 459244971Sjkim /* Encode local _PLD struct back to a _PLD buffer */ 460244971Sjkim 461244971Sjkim NewBuffer = AcpiDbEncodePldBuffer (PldInfo); 462244971Sjkim if (!NewBuffer) 463244971Sjkim { 464244971Sjkim return; 465244971Sjkim } 466244971Sjkim 467244971Sjkim /* The two bit-packed buffers should match */ 468244971Sjkim 469244971Sjkim if (ACPI_MEMCMP (NewBuffer, BufferDesc->Buffer.Pointer, 470244971Sjkim BufferDesc->Buffer.Length)) 471244971Sjkim { 472244971Sjkim AcpiOsPrintf ("Converted _PLD buffer does not compare. New:\n"); 473244971Sjkim 474244971Sjkim AcpiUtDumpBuffer (NewBuffer, 475244971Sjkim BufferDesc->Buffer.Length, DB_BYTE_DISPLAY, 0); 476244971Sjkim } 477244971Sjkim 478244971Sjkim /* First 32-bit dword */ 479244971Sjkim 480244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Revision", PldInfo->Revision); 481244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "IgnoreColor", PldInfo->IgnoreColor); 482244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Color", PldInfo->Color); 483244971Sjkim 484244971Sjkim /* Second 32-bit dword */ 485244971Sjkim 486244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Width", PldInfo->Width); 487244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Height", PldInfo->Height); 488244971Sjkim 489244971Sjkim /* Third 32-bit dword */ 490244971Sjkim 491244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "UserVisible", PldInfo->UserVisible); 492244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Dock", PldInfo->Dock); 493244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Lid", PldInfo->Lid); 494244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Panel", PldInfo->Panel); 495244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "VerticalPosition", PldInfo->VerticalPosition); 496244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "HorizontalPosition", PldInfo->HorizontalPosition); 497244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Shape", PldInfo->Shape); 498244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupOrientation", PldInfo->GroupOrientation); 499244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupToken", PldInfo->GroupToken); 500244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupPosition", PldInfo->GroupPosition); 501244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Bay", PldInfo->Bay); 502244971Sjkim 503244971Sjkim /* Fourth 32-bit dword */ 504244971Sjkim 505244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Ejectable", PldInfo->Ejectable); 506244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "OspmEjectRequired", PldInfo->OspmEjectRequired); 507244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "CabinetNumber", PldInfo->CabinetNumber); 508244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "CardCageNumber", PldInfo->CardCageNumber); 509244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Reference", PldInfo->Reference); 510244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Rotation", PldInfo->Rotation); 511244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "Order", PldInfo->Order); 512244971Sjkim 513244971Sjkim /* Fifth 32-bit dword */ 514244971Sjkim 515244971Sjkim if (BufferDesc->Buffer.Length > 16) 516244971Sjkim { 517244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "VerticalOffset", PldInfo->VerticalOffset); 518244971Sjkim AcpiOsPrintf (ACPI_PLD_OUTPUT, "HorizontalOffset", PldInfo->HorizontalOffset); 519244971Sjkim } 520244971Sjkim 521244971Sjkim ACPI_FREE (PldInfo); 522244971Sjkim ACPI_FREE (NewBuffer); 523244971Sjkim} 524244971Sjkim 525244971Sjkim#endif /* ACPI_DEBUGGER */ 526