hc
2024-03-26 e0728245c89800c2038c23308f2d88969d5b41c8
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*******************************************************************************
Copyright (C) 2018 Marvell International Ltd.
 
SPDX-License-Identifier: BSD-2-Clause-Patent
 
*******************************************************************************/
#ifndef __MARVELL_BOARD_DESC_PROTOCOL_H__
#define __MARVELL_BOARD_DESC_PROTOCOL_H__
 
#include <Library/ArmadaSoCDescLib.h>
#include <Library/ArmadaBoardDescLib.h>
 
extern EFI_GUID gMarvellBoardDescProtocolGuid;
 
typedef struct _MARVELL_BOARD_DESC_PROTOCOL MARVELL_BOARD_DESC_PROTOCOL;
 
typedef
EFI_STATUS
(EFIAPI *MV_BOARD_DESC_COMPHY_GET) (
  IN MARVELL_BOARD_DESC_PROTOCOL  *This,
  IN OUT MV_BOARD_COMPHY_DESC    **ComPhyDesc
  );
 
typedef
EFI_STATUS
(EFIAPI *MV_BOARD_GPIO_DESCRIPTION_GET) (
  IN MARVELL_BOARD_DESC_PROTOCOL    *This,
  IN OUT MV_BOARD_GPIO_DESCRIPTION **GpioDescription
  );
 
typedef
EFI_STATUS
(EFIAPI *MV_BOARD_DESC_I2C_GET) (
  IN MARVELL_BOARD_DESC_PROTOCOL  *This,
  IN OUT MV_BOARD_I2C_DESC       **I2cDesc
  );
 
typedef
EFI_STATUS
(EFIAPI *MV_BOARD_DESC_MDIO_GET) (
  IN MARVELL_BOARD_DESC_PROTOCOL  *This,
  IN OUT MV_BOARD_MDIO_DESC      **MdioDesc
  );
 
typedef
EFI_STATUS
(EFIAPI *MV_BOARD_DESC_AHCI_GET) (
  IN MARVELL_BOARD_DESC_PROTOCOL  *This,
  IN OUT MV_BOARD_AHCI_DESC      **AhciDesc
  );
 
typedef
EFI_STATUS
(EFIAPI *MV_BOARD_DESC_SDMMC_GET) (
  IN MARVELL_BOARD_DESC_PROTOCOL  *This,
  IN OUT MV_BOARD_SDMMC_DESC     **SdMmcDesc
  );
 
typedef
EFI_STATUS
(EFIAPI *MV_BOARD_DESC_XHCI_GET) (
  IN MARVELL_BOARD_DESC_PROTOCOL  *This,
  IN OUT MV_BOARD_XHCI_DESC      **XhciDesc
  );
 
/**
  Return the description of PCIE controllers used on the platform.
 
  @param[in out]  *This                 Pointer to board description protocol.
  @param[in out] **PcieDescription      Array containing PCIE controllers'
                                        description.
 
  @retval EFI_SUCCESS                   The data were obtained successfully.
  @retval EFI_NOT_FOUND                 None of the controllers is used.
  @retval EFI_INVALID_PARAMETER         Description wrongly defined.
  @retval EFI_OUT_OF_RESOURCES          Lack of resources.
  @retval Other                         Return error status.
 
**/
typedef
EFI_STATUS
(EFIAPI *MV_BOARD_PCIE_DESCRIPTION_GET) (
  IN MARVELL_BOARD_DESC_PROTOCOL          *This,
  IN OUT MV_BOARD_PCIE_DESCRIPTION CONST **PcieDescription
  );
 
typedef
EFI_STATUS
(EFIAPI *MV_BOARD_DESC_PP2_GET) (
  IN MARVELL_BOARD_DESC_PROTOCOL  *This,
  IN OUT MV_BOARD_PP2_DESC       **Pp2Desc
  );
 
typedef
EFI_STATUS
(EFIAPI *MV_BOARD_DESC_UTMI_GET) (
  IN MARVELL_BOARD_DESC_PROTOCOL  *This,
  IN OUT MV_BOARD_UTMI_DESC      **UtmiDesc
  );
 
typedef
VOID
(EFIAPI *MV_BOARD_DESC_FREE) (
  IN VOID                         *BoardDesc
  );
 
struct _MARVELL_BOARD_DESC_PROTOCOL {
  MV_BOARD_DESC_AHCI_GET         BoardDescAhciGet;
  MV_BOARD_DESC_COMPHY_GET       BoardDescComPhyGet;
  MV_BOARD_DESC_I2C_GET          BoardDescI2cGet;
  MV_BOARD_DESC_MDIO_GET         BoardDescMdioGet;
  MV_BOARD_DESC_PP2_GET          BoardDescPp2Get;
  MV_BOARD_DESC_SDMMC_GET        BoardDescSdMmcGet;
  MV_BOARD_DESC_UTMI_GET         BoardDescUtmiGet;
  MV_BOARD_DESC_XHCI_GET         BoardDescXhciGet;
  MV_BOARD_DESC_FREE             BoardDescFree;
  MV_BOARD_GPIO_DESCRIPTION_GET  GpioDescriptionGet;
  MV_BOARD_PCIE_DESCRIPTION_GET  PcieDescriptionGet;
};
 
#endif // __MARVELL_BOARD_DESC_PROTOCOL_H__