/******************************************************************************* 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 #include 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__