summaryrefslogtreecommitdiff
path: root/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/SmmControl/Pei/SmmControlDriver.h
blob: d08b87628505f93602de16d996074cf30344cc55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/** @file
  Header file for SMM Control Driver.

  Copyright (c) 2012 - 2016, Intel Corporation. All rights reserved.<BR>

  This program and the accompanying materials
  are licensed and made available under the terms and conditions of the BSD License
  which accompanies this distribution.  The full text of the license may be found at
  http://opensource.org/licenses/bsd-license.php.

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#ifndef _EFI_PEI_SMM_CONTROL_DRIVER_H_
#define _EFI_PEI_SMM_CONTROL_DRIVER_H_

///
/// Driver private data
///
#include <PiPei.h>
#include "Ppi/SmmControl.h"
#include <Library/DebugLib.h>
#include <Library/IoLib.h>
#include <ScAccess.h>

///
/// Prototypes
///
/**
  This is the constructor for the SMM Control ppi

  @param[in] FfsHeader            FfsHeader.
  @param[in] PeiServices          General purpose services available to every PEIM.

  @retval    EFI_STATUS           Results of the installation of the SMM Control Ppi

**/
EFI_STATUS
EFIAPI
SmmControlPeiDriverEntryInit (
  IN    EFI_PEI_FILE_HANDLE       FfsHeader,
  IN    CONST EFI_PEI_SERVICES    **PeiServices
  );

/**
  This routine generates an SMI.

  @param[in]      PeiServices             General purpose services available to every PEIM.
  @param[in]      This                    The EFI SMM Control ppi instance.
  @param[in, out] ArgumentBuffer          The buffer of argument.
  @param[in, out] ArgumentBufferSize      The size of the argument buffer.
  @param[in]      Periodic                Periodic or not
  @param[in]      ActivationInterval      Interval of periodic SMI.

  @retval         EFI Status              Describing the result of the operation.
  @retval         EFI_INVALID_PARAMETER   Some parameter value passed is not supported.

**/
EFI_STATUS
EFIAPI
PeiActivate (
  IN       EFI_PEI_SERVICES               **PeiServices,
  IN       PEI_SMM_CONTROL_PPI            *This,
  IN OUT  INT8                            *ArgumentBuffer OPTIONAL,
  IN OUT  UINTN                           *ArgumentBufferSize OPTIONAL,
  IN      BOOLEAN                         Periodic OPTIONAL,
  IN      UINTN                           ActivationInterval OPTIONAL
  );

/**
  This routine clears an SMI.

  @param[in] PeiServices             General purpose services available to every PEIM.
  @param[in] This                    The EFI SMM Control ppi instance.
  @param[in] Periodic                Periodic or not.

  @retval    EFI Status              Describing the result of the operation.
  @retval    EFI_INVALID_PARAMETER   Some parameter value passed is not supported.

**/
EFI_STATUS
EFIAPI
PeiDeactivate (
  IN EFI_PEI_SERVICES             **PeiServices,
  IN PEI_SMM_CONTROL_PPI          *This,
  IN  BOOLEAN                     Periodic OPTIONAL
  );

#endif