]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciPowerManagement.c
Coding style modification.
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Pci / PciBusDxe / PciPowerManagement.c
1 /**@file
2
3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 **/
13
14 #include "pcibus.h"
15
16 EFI_STATUS
17 ResetPowerManagementFeature (
18 IN PCI_IO_DEVICE *PciIoDevice
19 )
20 /**
21
22 Routine Description:
23
24 This function is intended to turn off PWE assertion and
25 put the device to D0 state if the device supports
26 PCI Power Management.
27
28 Arguments:
29
30 Returns:
31
32 None
33
34 **/
35 // TODO: PciIoDevice - add argument and description to function comment
36 // TODO: EFI_UNSUPPORTED - add return value to function comment
37 // TODO: EFI_SUCCESS - add return value to function comment
38 {
39 EFI_STATUS Status;
40 UINT8 PowerManagementRegBlock;
41 UINT16 PMCSR;
42
43 PowerManagementRegBlock = 0;
44
45 Status = LocateCapabilityRegBlock (
46 PciIoDevice,
47 EFI_PCI_CAPABILITY_ID_PMI,
48 &PowerManagementRegBlock,
49 NULL
50 );
51
52 if (EFI_ERROR (Status)) {
53 return EFI_UNSUPPORTED;
54 }
55
56 //
57 // Turn off the PWE assertion and put the device into D0 State
58 //
59 PMCSR = 0x8000;
60
61 //
62 // Write PMCSR
63 //
64 PciIoWrite (
65 &PciIoDevice->PciIo,
66 EfiPciIoWidthUint16,
67 PowerManagementRegBlock + 4,
68 1,
69 &PMCSR
70 );
71
72 return EFI_SUCCESS;
73 }