Home | History | Annotate | Download | only in Dxe
      1 /** @file
      2 PciHostBridge driver module, part of QNC module.
      3 
      4 Provides the basic interfaces to abstract a PCI Host Bridge Resource Allocation.
      5 
      6 Copyright (c) 2013-2015 Intel Corporation.
      7 
      8 This program and the accompanying materials
      9 are licensed and made available under the terms and conditions of the BSD License
     10 which accompanies this distribution.  The full text of the license may be found at
     11 http://opensource.org/licenses/bsd-license.php
     12 
     13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     14 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     15 
     16 **/
     17 #include "CommonHeader.h"
     18 #include "QNCInit.h"
     19 
     20 UINT32  mS3ParameterRootPortDownstream = 0;
     21 EFI_QNC_S3_DISPATCH_ITEM  mS3DispatchItem = {
     22     QncS3ItemTypeInitPcieRootPortDownstream,
     23     &mS3ParameterRootPortDownstream
     24   };
     25 
     26 EFI_STATUS
     27 QncInitRootPorts (
     28   )
     29 /*++
     30 
     31 Routine Description:
     32 
     33   Perform Initialization of the Downstream Root Ports
     34 
     35 Arguments:
     36 
     37 Returns:
     38 
     39   EFI_SUCCESS             The function completed successfully
     40 
     41 --*/
     42 {
     43   EFI_STATUS                   Status;
     44   EFI_QNC_S3_SUPPORT_PROTOCOL  *QncS3Support;
     45   VOID                         *Context;
     46   VOID                         *S3DispatchEntryPoint;
     47 
     48   Status = PciExpressInit ();
     49   ASSERT_EFI_ERROR (Status);
     50 
     51   //
     52   // Get the QNC S3 Support Protocol
     53   //
     54   Status = gBS->LocateProtocol (
     55                   &gEfiQncS3SupportProtocolGuid,
     56                   NULL,
     57                   (VOID **) &QncS3Support
     58                   );
     59   ASSERT_EFI_ERROR (Status);
     60   if (EFI_ERROR (Status)) {
     61     return Status;
     62   }
     63 
     64   //
     65   // Get the QNC S3 Support Protocol
     66   //
     67   Status = QncS3Support->SetDispatchItem (
     68                           QncS3Support,
     69                           &mS3DispatchItem,
     70                           &S3DispatchEntryPoint,
     71                           &Context
     72                           );
     73   ASSERT_EFI_ERROR (Status);
     74 
     75   //
     76   // Save the script dispatch item in the Boot Script
     77   //
     78   Status = S3BootScriptSaveDispatch2 (S3DispatchEntryPoint, Context);
     79   ASSERT_EFI_ERROR (Status);
     80 
     81   return Status;
     82 }
     83