1 /** @file 2 Header file for GpioLib. 3 All function in this library is available for PEI, DXE, and SMM 4 5 @note: When GPIO pads are owned by ME Firmware, BIOS/host should not 6 attempt to access these GPIO Pads registers, registers value 7 returned in this case will be 0xFF. 8 9 Copyright (c) 2021, Intel Corporation. All rights reserved.<BR> 10 SPDX-License-Identifier: BSD-2-Clause-Patent 11 **/ 12 #ifndef _GPIO_LIB_H_ 13 #define _GPIO_LIB_H_ 14 15 #include <Library/GpioConfig.h> 16 17 #define GPIO_NAME_LENGTH_MAX 32 18 19 typedef struct { 20 GPIO_PAD GpioPad; 21 GPIO_CONFIG GpioConfig; 22 } GPIO_INIT_CONFIG; 23 24 /** 25 This procedure will initialize multiple GPIO pins. Use GPIO_INIT_CONFIG structure. 26 Structure contains fields that can be used to configure each pad. 27 Pad not configured using GPIO_INIT_CONFIG will be left with hardware default values. 28 Separate fields could be set to hardware default if it does not matter, except 29 GpioPad and PadMode. 30 Function will work in most efficient way if pads which belong to the same group are 31 placed in adjacent records of the table. 32 Although function can enable pads for Native mode, such programming is done 33 by reference code when enabling related silicon feature. 34 35 @param[in] NumberofItem Number of GPIO pads to be updated 36 @param[in] GpioInitTableAddress GPIO initialization table 37 38 @retval EFI_SUCCESS The function completed successfully 39 @retval EFI_INVALID_PARAMETER Invalid group or pad number 40 **/ 41 EFI_STATUS 42 GpioConfigurePads ( 43 IN UINT32 NumberOfItems, 44 IN GPIO_INIT_CONFIG *GpioInitTableAddress 45 ); 46 47 // 48 // Functions for setting/getting multiple GpioPad settings 49 // 50 51 /** 52 This procedure will read multiple GPIO settings 53 54 @param[in] GpioPad GPIO Pad 55 @param[out] GpioData GPIO data structure 56 57 @retval EFI_SUCCESS The function completed successfully 58 @retval EFI_INVALID_PARAMETER Invalid GpioPad 59 **/ 60 EFI_STATUS 61 GpioGetPadConfig ( 62 IN GPIO_PAD GpioPad, 63 OUT GPIO_CONFIG *GpioData 64 ); 65 66 /** 67 This procedure will configure multiple GPIO settings 68 69 @param[in] GpioPad GPIO Pad 70 @param[in] GpioData GPIO data structure 71 72 @retval EFI_SUCCESS The function completed successfully 73 @retval EFI_INVALID_PARAMETER Invalid GpioPad 74 **/ 75 EFI_STATUS 76 GpioSetPadConfig ( 77 IN GPIO_PAD GpioPad, 78 IN GPIO_CONFIG *GpioData 79 ); 80 81 // 82 // Functions for setting/getting single GpioPad properties 83 // 84 85 /** 86 This procedure will set GPIO output level 87 88 @param[in] GpioPad GPIO pad 89 @param[in] Value Output value 90 0: OutputLow, 1: OutputHigh 91 92 @retval EFI_SUCCESS The function completed successfully 93 @retval EFI_INVALID_PARAMETER Invalid GpioPad 94 **/ 95 EFI_STATUS 96 GpioSetOutputValue ( 97 IN GPIO_PAD GpioPad, 98 IN UINT32 Value 99 ); 100 101 /** 102 This procedure will get GPIO output level 103 104 @param[in] GpioPad GPIO pad 105 @param[out] OutputVal GPIO Output value 106 0: OutputLow, 1: OutputHigh 107 108 @retval EFI_SUCCESS The function completed successfully 109 @retval EFI_INVALID_PARAMETER Invalid GpioPad 110 **/ 111 EFI_STATUS 112 GpioGetOutputValue ( 113 IN GPIO_PAD GpioPad, 114 OUT UINT32 *OutputVal 115 ); 116 117 /** 118 This procedure will get GPIO input level 119 120 @param[in] GpioPad GPIO pad 121 @param[out] InputVal GPIO Input value 122 0: InputLow, 1: InputHigh 123 124 @retval EFI_SUCCESS The function completed successfully 125 @retval EFI_INVALID_PARAMETER Invalid GpioPad 126 **/ 127 EFI_STATUS 128 GpioGetInputValue ( 129 IN GPIO_PAD GpioPad, 130 OUT UINT32 *InputVal 131 ); 132 133 /** 134 This procedure will get GPIO IOxAPIC interrupt number 135 136 @param[in] GpioPad GPIO pad 137 @param[out] IrqNum IRQ number 138 139 @retval EFI_SUCCESS The function completed successfully 140 @retval EFI_INVALID_PARAMETER Invalid GpioPad 141 **/ 142 EFI_STATUS 143 GpioGetPadIoApicIrqNumber ( 144 IN GPIO_PAD GpioPad, 145 OUT UINT32 *IrqNum 146 ); 147 148 /** 149 This procedure will configure GPIO input inversion 150 151 @param[in] GpioPad GPIO pad 152 @param[in] Value Value for GPIO input inversion 153 0: No input inversion, 1: Invert input 154 155 @retval EFI_SUCCESS The function completed successfully 156 @retval EFI_INVALID_PARAMETER Invalid GpioPad 157 **/ 158 EFI_STATUS 159 GpioSetInputInversion ( 160 IN GPIO_PAD GpioPad, 161 IN UINT32 Value 162 ); 163 164 /** 165 This procedure will get GPIO pad input inversion value 166 167 @param[in] GpioPad GPIO pad 168 @param[out] InvertState GPIO inversion state 169 0: No input inversion, 1: Inverted input 170 171 @retval EFI_SUCCESS The function completed successfully 172 @retval EFI_INVALID_PARAMETER Invalid GpioPad 173 **/ 174 EFI_STATUS 175 GpioGetInputInversion ( 176 IN GPIO_PAD GpioPad, 177 OUT UINT32 *InvertState 178 ); 179 180 /** 181 This procedure will set GPIO interrupt settings 182 183 @param[in] GpioPad GPIO pad 184 @param[in] Value Value of Level/Edge 185 use GPIO_INT_CONFIG as argument 186 187 @retval EFI_SUCCESS The function completed successfully 188 @retval EFI_INVALID_PARAMETER Invalid GpioPad 189 **/ 190 EFI_STATUS 191 GpioSetPadInterruptConfig ( 192 IN GPIO_PAD GpioPad, 193 IN GPIO_INT_CONFIG Value 194 ); 195 196 /** 197 This procedure will set GPIO electrical settings 198 199 @param[in] GpioPad GPIO pad 200 @param[in] Value Value of termination 201 use GPIO_ELECTRICAL_CONFIG as argument 202 203 @retval EFI_SUCCESS The function completed successfully 204 @retval EFI_INVALID_PARAMETER Invalid GpioPad 205 **/ 206 EFI_STATUS 207 GpioSetPadElectricalConfig ( 208 IN GPIO_PAD GpioPad, 209 IN GPIO_ELECTRICAL_CONFIG Value 210 ); 211 212 /** 213 This procedure will set GPIO Reset settings 214 215 @param[in] GpioPad GPIO pad 216 @param[in] Value Value for Pad Reset Configuration 217 use GPIO_RESET_CONFIG as argument 218 219 @retval EFI_SUCCESS The function completed successfully 220 @retval EFI_INVALID_PARAMETER Invalid GpioPad 221 **/ 222 EFI_STATUS 223 GpioSetPadResetConfig ( 224 IN GPIO_PAD GpioPad, 225 IN GPIO_RESET_CONFIG Value 226 ); 227 228 /** 229 This procedure will get GPIO Reset settings 230 231 @param[in] GpioPad GPIO pad 232 @param[in] Value Value of Pad Reset Configuration 233 based on GPIO_RESET_CONFIG 234 235 @retval EFI_SUCCESS The function completed successfully 236 @retval EFI_INVALID_PARAMETER Invalid GpioPad 237 **/ 238 EFI_STATUS 239 GpioGetPadResetConfig ( 240 IN GPIO_PAD GpioPad, 241 IN GPIO_RESET_CONFIG *Value 242 ); 243 244 /** 245 This procedure will get Gpio Pad Host Software Ownership 246 247 @param[in] GpioPad GPIO pad 248 @param[out] PadHostSwOwn Value of Host Software Pad Owner 249 0: ACPI Mode, 1: GPIO Driver mode 250 251 @retval EFI_SUCCESS The function completed successfully 252 @retval EFI_INVALID_PARAMETER Invalid GpioPad 253 **/ 254 EFI_STATUS 255 GpioGetHostSwOwnershipForPad ( 256 IN GPIO_PAD GpioPad, 257 OUT UINT32 *PadHostSwOwn 258 ); 259 260 /** 261 This procedure will set Gpio Pad Host Software Ownership 262 263 @param[in] GpioPad GPIO pad 264 @param[in] PadHostSwOwn Pad Host Software Owner 265 0: ACPI Mode, 1: GPIO Driver mode 266 267 @retval EFI_SUCCESS The function completed successfully 268 @retval EFI_INVALID_PARAMETER Invalid GpioPad 269 **/ 270 EFI_STATUS 271 GpioSetHostSwOwnershipForPad ( 272 IN GPIO_PAD GpioPad, 273 IN UINT32 PadHostSwOwn 274 ); 275 276 /// 277 /// Possible values of Pad Ownership 278 /// If Pad is not under Host ownership then GPIO registers 279 /// are not accessible by host (e.g. BIOS) and reading them 280 /// will return 0xFFs. 281 /// 282 typedef enum { 283 GpioPadOwnHost = 0x0, 284 GpioPadOwnCsme = 0x1, 285 GpioPadOwnIsh = 0x2, 286 } GPIO_PAD_OWN; 287 288 /** 289 This procedure will get Gpio Pad Ownership 290 291 @param[in] GpioPad GPIO pad 292 @param[out] PadOwnVal Value of Pad Ownership 293 294 @retval EFI_SUCCESS The function completed successfully 295 @retval EFI_INVALID_PARAMETER Invalid GpioPad 296 **/ 297 EFI_STATUS 298 GpioGetPadOwnership ( 299 IN GPIO_PAD GpioPad, 300 OUT GPIO_PAD_OWN *PadOwnVal 301 ); 302 303 /** 304 This procedure will check state of Pad Config Lock for pads within one group 305 306 @param[in] Group GPIO group 307 @param[in] DwNum PadCfgLock register number for current group. 308 For group which has less then 32 pads per group DwNum must be 0. 309 @param[out] PadCfgLockRegVal Value of PadCfgLock register 310 Bit position - PadNumber 311 Bit value - 0: NotLocked, 1: Locked 312 313 @retval EFI_SUCCESS The function completed successfully 314 @retval EFI_INVALID_PARAMETER Invalid group or DwNum parameter number 315 **/ 316 EFI_STATUS 317 GpioGetPadCfgLockForGroupDw ( 318 IN GPIO_GROUP Group, 319 IN UINT32 DwNum, 320 OUT UINT32 *PadCfgLockRegVal 321 ); 322 323 /** 324 This procedure will check state of Pad Config Lock for selected pad 325 326 @param[in] GpioPad GPIO pad 327 @param[out] PadCfgLock PadCfgLock for selected pad 328 0: NotLocked, 1: Locked 329 330 @retval EFI_SUCCESS The function completed successfully 331 @retval EFI_INVALID_PARAMETER Invalid GpioPad 332 **/ 333 EFI_STATUS 334 GpioGetPadCfgLock ( 335 IN GPIO_PAD GpioPad, 336 OUT UINT32 *PadCfgLock 337 ); 338 339 /** 340 This procedure will check state of Pad Config Tx Lock for pads within one group 341 342 @param[in] Group GPIO group 343 @param[in] DwNum PadCfgLockTx register number for current group. 344 For group which has less then 32 pads per group DwNum must be 0. 345 @param[out] PadCfgLockTxRegVal Value of PadCfgLockTx register 346 Bit position - PadNumber 347 Bit value - 0: NotLockedTx, 1: LockedTx 348 349 @retval EFI_SUCCESS The function completed successfully 350 @retval EFI_INVALID_PARAMETER Invalid group or DwNum parameter number 351 **/ 352 EFI_STATUS 353 GpioGetPadCfgLockTxForGroupDw ( 354 IN GPIO_GROUP Group, 355 IN UINT32 DwNum, 356 OUT UINT32 *PadCfgLockTxRegVal 357 ); 358 359 /** 360 This procedure will check state of Pad Config Tx Lock for selected pad 361 362 @param[in] GpioPad GPIO pad 363 @param[out] PadCfgLock PadCfgLockTx for selected pad 364 0: NotLockedTx, 1: LockedTx 365 366 @retval EFI_SUCCESS The function completed successfully 367 @retval EFI_INVALID_PARAMETER Invalid GpioPad 368 **/ 369 EFI_STATUS 370 GpioGetPadCfgLockTx ( 371 IN GPIO_PAD GpioPad, 372 OUT UINT32 *PadCfgLockTx 373 ); 374 375 /** 376 This procedure will clear PadCfgLock for selected pads within one group. 377 Unlocking a pad will cause an SMI (if enabled) 378 379 @param[in] Group GPIO group 380 @param[in] DwNum PadCfgLock register number for current group. 381 For group which has less then 32 pads per group DwNum must be 0. 382 @param[in] PadsToUnlock Bitmask for pads which are going to be unlocked, 383 Bit position - PadNumber 384 Bit value - 0: DoNotUnlock, 1: Unlock 385 386 @retval EFI_SUCCESS The function completed successfully 387 @retval EFI_INVALID_PARAMETER Invalid group or pad number 388 **/ 389 EFI_STATUS 390 GpioUnlockPadCfgForGroupDw ( 391 IN GPIO_GROUP Group, 392 IN UINT32 DwNum, 393 IN UINT32 PadsToUnlock 394 ); 395 396 /** 397 This procedure will clear PadCfgLock for selected pad. 398 Unlocking a pad will cause an SMI (if enabled) 399 400 @param[in] GpioPad GPIO pad 401 402 @retval EFI_SUCCESS The function completed successfully 403 @retval EFI_INVALID_PARAMETER Invalid GpioPad 404 **/ 405 EFI_STATUS 406 GpioUnlockPadCfg ( 407 IN GPIO_PAD GpioPad 408 ); 409 410 /** 411 This procedure will set PadCfgLock for selected pads within one group 412 413 @param[in] Group GPIO group 414 @param[in] DwNum PadCfgLock register number for current group. 415 For group which has less then 32 pads per group DwNum must be 0. 416 @param[in] PadsToLock Bitmask for pads which are going to be locked, 417 Bit position - PadNumber 418 Bit value - 0: DoNotLock, 1: Lock 419 420 @retval EFI_SUCCESS The function completed successfully 421 @retval EFI_INVALID_PARAMETER Invalid group or DwNum parameter number 422 **/ 423 EFI_STATUS 424 GpioLockPadCfgForGroupDw ( 425 IN GPIO_GROUP Group, 426 IN UINT32 DwNum, 427 IN UINT32 PadsToLock 428 ); 429 430 /** 431 This procedure will set PadCfgLock for selected pad 432 433 @param[in] GpioPad GPIO pad 434 435 @retval EFI_SUCCESS The function completed successfully 436 @retval EFI_INVALID_PARAMETER Invalid GpioPad 437 **/ 438 EFI_STATUS 439 GpioLockPadCfg ( 440 IN GPIO_PAD GpioPad 441 ); 442 443 /** 444 This procedure will clear PadCfgLockTx for selected pads within one group. 445 Unlocking a pad will cause an SMI (if enabled) 446 447 @param[in] Group GPIO group 448 @param[in] DwNum PadCfgLockTx register number for current group. 449 For group which has less then 32 pads per group DwNum must be 0. 450 @param[in] PadsToUnlockTx Bitmask for pads which are going to be unlocked, 451 Bit position - PadNumber 452 Bit value - 0: DoNotUnLockTx, 1: LockTx 453 454 @retval EFI_SUCCESS The function completed successfully 455 @retval EFI_INVALID_PARAMETER Invalid group or pad number 456 **/ 457 EFI_STATUS 458 GpioUnlockPadCfgTxForGroupDw ( 459 IN GPIO_GROUP Group, 460 IN UINT32 DwNum, 461 IN UINT32 PadsToUnlockTx 462 ); 463 464 /** 465 This procedure will clear PadCfgLockTx for selected pad. 466 Unlocking a pad will cause an SMI (if enabled) 467 468 @param[in] GpioPad GPIO pad 469 470 @retval EFI_SUCCESS The function completed successfully 471 @retval EFI_INVALID_PARAMETER Invalid GpioPad 472 **/ 473 EFI_STATUS 474 GpioUnlockPadCfgTx ( 475 IN GPIO_PAD GpioPad 476 ); 477 478 /** 479 This procedure will set PadCfgLockTx for selected pads within one group 480 481 @param[in] Group GPIO group 482 @param[in] DwNum PadCfgLock register number for current group. 483 For group which has less then 32 pads per group DwNum must be 0. 484 @param[in] PadsToLockTx Bitmask for pads which are going to be locked, 485 Bit position - PadNumber 486 Bit value - 0: DoNotLockTx, 1: LockTx 487 488 @retval EFI_SUCCESS The function completed successfully 489 @retval EFI_INVALID_PARAMETER Invalid group or DwNum parameter number 490 **/ 491 EFI_STATUS 492 GpioLockPadCfgTxForGroupDw ( 493 IN GPIO_GROUP Group, 494 IN UINT32 DwNum, 495 IN UINT32 PadsToLockTx 496 ); 497 498 /** 499 This procedure will set PadCfgLockTx for selected pad 500 501 @param[in] GpioPad GPIO pad 502 503 @retval EFI_SUCCESS The function completed successfully 504 @retval EFI_INVALID_PARAMETER Invalid GpioPad 505 **/ 506 EFI_STATUS 507 GpioLockPadCfgTx ( 508 IN GPIO_PAD GpioPad 509 ); 510 511 /** 512 This procedure will get Group to GPE mapping. 513 It will assume that only first 32 pads can be mapped to GPE. 514 To handle cases where groups have more than 32 pads and higher part of group 515 can be mapped please refer to GpioGetGroupDwToGpeDwX() 516 517 @param[out] GroupToGpeDw0 GPIO group to be mapped to GPE_DW0 518 @param[out] GroupToGpeDw1 GPIO group to be mapped to GPE_DW1 519 @param[out] GroupToGpeDw2 GPIO group to be mapped to GPE_DW2 520 521 @retval EFI_SUCCESS The function completed successfully 522 @retval EFI_INVALID_PARAMETER Invalid group or pad number 523 **/ 524 EFI_STATUS 525 GpioGetGroupToGpeDwX ( 526 IN GPIO_GROUP *GroupToGpeDw0, 527 IN GPIO_GROUP *GroupToGpeDw1, 528 IN GPIO_GROUP *GroupToGpeDw2 529 ); 530 531 /** 532 This procedure will get Group to GPE mapping. If group has more than 32 bits 533 it is possible to map only single DW of pins (e.g. 0-31, 32-63) because 534 ACPI GPE_DWx register is 32 bits large. 535 536 @param[out] GroupToGpeDw0 GPIO group mapped to GPE_DW0 537 @param[out] GroupDwForGpeDw0 DW of pins mapped to GPE_DW0 538 @param[out] GroupToGpeDw1 GPIO group mapped to GPE_DW1 539 @param[out] GroupDwForGpeDw1 DW of pins mapped to GPE_DW1 540 @param[out] GroupToGpeDw2 GPIO group mapped to GPE_DW2 541 @param[out] GroupDwForGpeDw2 DW of pins mapped to GPE_DW2 542 543 @retval EFI_SUCCESS The function completed successfully 544 @retval EFI_INVALID_PARAMETER Invalid group or pad number 545 **/ 546 EFI_STATUS 547 GpioGetGroupDwToGpeDwX ( 548 OUT GPIO_GROUP *GroupToGpeDw0, 549 OUT UINT32 *GroupDwForGpeDw0, 550 OUT GPIO_GROUP *GroupToGpeDw1, 551 OUT UINT32 *GroupDwForGpeDw1, 552 OUT GPIO_GROUP *GroupToGpeDw2, 553 OUT UINT32 *GroupDwForGpeDw2 554 ); 555 556 /** 557 This procedure will get GPE number for provided GpioPad. 558 PCH allows to configure mapping between GPIO groups and related GPE (GpioSetGroupToGpeDwX()) 559 what results in the fact that certain Pad can cause different General Purpose Event. Only three 560 GPIO groups can be mapped to cause unique GPE (1-tier), all others groups will be under one common 561 event (GPE_111 for 2-tier). 562 563 1-tier: 564 Returned GpeNumber is in range <0,95>. GpioGetGpeNumber() can be used 565 to determine what _LXX ACPI method would be called on event on selected GPIO pad 566 567 2-tier: 568 Returned GpeNumber is 0x6F (111). All GPIO pads which are not mapped to 1-tier GPE 569 will be under one master GPE_111 which is linked to _L6F ACPI method. If it is needed to determine 570 what Pad from 2-tier has caused the event, _L6F method should check GPI_GPE_STS and GPI_GPE_EN 571 registers for all GPIO groups not mapped to 1-tier GPE. 572 573 @param[in] GpioPad GPIO pad 574 @param[out] GpeNumber GPE number 575 576 @retval EFI_SUCCESS The function completed successfully 577 @retval EFI_INVALID_PARAMETER Invalid GpioPad 578 **/ 579 EFI_STATUS 580 GpioGetGpeNumber ( 581 IN GPIO_PAD GpioPad, 582 OUT UINT32 *GpeNumber 583 ); 584 585 /** 586 This procedure is used to clear SMI STS for a specified Pad 587 588 @param[in] GpioPad GPIO pad 589 590 @retval EFI_SUCCESS The function completed successfully 591 @retval EFI_INVALID_PARAMETER Invalid GpioPad 592 **/ 593 EFI_STATUS 594 GpioClearGpiSmiSts ( 595 IN GPIO_PAD GpioPad 596 ); 597 598 /** 599 This procedure is used by Smi Dispatcher and will clear 600 all GPI SMI Status bits 601 602 @retval EFI_SUCCESS The function completed successfully 603 **/ 604 EFI_STATUS 605 GpioClearAllGpiSmiSts ( 606 VOID 607 ); 608 609 /** 610 This procedure is used to disable all GPI SMI 611 612 @retval EFI_SUCCESS The function completed successfully 613 **/ 614 EFI_STATUS 615 GpioDisableAllGpiSmi ( 616 VOID 617 ); 618 619 /** 620 This procedure is used to register GPI SMI dispatch function. 621 622 @param[in] GpioPad GPIO pad 623 @param[out] GpiNum GPI number 624 625 @retval EFI_SUCCESS The function completed successfully 626 @retval EFI_INVALID_PARAMETER Invalid GpioPad 627 **/ 628 EFI_STATUS 629 GpioGetGpiSmiNum ( 630 IN GPIO_PAD GpioPad, 631 OUT UINTN *GpiNum 632 ); 633 634 /** 635 This procedure is used to check GPIO inputs belongs to 2 tier or 1 tier architecture 636 637 @param[in] GpioPad GPIO pad 638 639 @retval Data 0 means 1-tier, 1 means 2-tier 640 **/ 641 BOOLEAN 642 GpioCheckFor2Tier ( 643 IN GPIO_PAD GpioPad 644 ); 645 646 /** 647 This procedure is used to clear GPE STS for a specified GpioPad 648 649 @param[in] GpioPad GPIO pad 650 651 @retval EFI_SUCCESS The function completed successfully 652 @retval EFI_INVALID_PARAMETER Invalid GpioPad 653 **/ 654 EFI_STATUS 655 GpioClearGpiGpeSts ( 656 IN GPIO_PAD GpioPad 657 ); 658 659 /** 660 This procedure is used to read GPE STS for a specified Pad 661 662 @param[in] GpioPad GPIO pad 663 @param[out] GpeSts Gpe status for given pad 664 The GpeSts is true if the status register is set for given Pad number 665 666 @retval EFI_SUCCESS The function completed successfully 667 @retval EFI_INVALID_PARAMETER Invalid GpioPad 668 **/ 669 EFI_STATUS 670 GpioGetGpiGpeSts ( 671 IN GPIO_PAD GpioPad, 672 OUT BOOLEAN *GpeSts 673 ); 674 675 /** 676 This procedure is used to get SMI STS for a specified Pad 677 678 @param[in] GpioPad GPIO pad 679 @param[out] SmiSts Smi status for given pad 680 The SmiSts is true if the status register is set for given Pad number 681 682 @retval EFI_SUCCESS The function completed successfully 683 @retval EFI_INVALID_PARAMETER Invalid GpioPad 684 **/ 685 EFI_STATUS 686 GpioGetGpiSmiSts ( 687 IN GPIO_PAD GpioPad, 688 OUT BOOLEAN *SmiSts 689 ); 690 691 /** 692 Generates GPIO name from GpioPad 693 694 @param[in] GpioPad GpioPad 695 @param[out] GpioNameBuffer Caller allocated buffer for GPIO name of GPIO_NAME_LENGTH_MAX size 696 @param[in] GpioNameBufferSize Size of the buffer 697 698 @retval CHAR8* Pointer to the GPIO name 699 **/ 700 CHAR8* 701 GpioGetPadName ( 702 IN GPIO_PAD GpioPad, 703 OUT CHAR8* GpioNameBuffer, 704 IN UINT32 GpioNameBufferSize 705 ); 706 707 /** 708 Generates GPIO group name from GroupIndex 709 710 @param[in] GroupIndex Gpio GroupIndex 711 712 @retval CHAR8* Pointer to the GPIO group name 713 **/ 714 CONST 715 CHAR8* 716 GpioGetGroupName ( 717 IN UINT32 GroupIndex 718 ); 719 720 #endif // _GPIO_LIB_H_ 721