123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- /**
- *
- * Copyright (C) 2018, Marvell International Ltd. and its affiliates
- *
- * SPDX-License-Identifier: BSD-2-Clause-Patent
- *
- **/
- #ifndef __ARMADA_BOARD_DESC_LIB_H__
- #define __ARMADA_BOARD_DESC_LIB_H__
- #include <Library/ArmadaSoCDescLib.h>
- #include <Library/MvGpioLib.h>
- //
- // General purpose routine for per-board initalization
- //
- EFI_STATUS
- EFIAPI
- ArmadaBoardInit (
- VOID
- );
- //
- // COMPHY controllers per-board description
- //
- typedef struct {
- MV_SOC_COMPHY_DESC *SoC;
- UINTN ComPhyDevCount;
- } MV_BOARD_COMPHY_DESC;
- //
- // GPIO devices per-board description
- //
- typedef struct {
- UINTN ChipId;
- UINTN I2cAddress;
- UINTN I2cBus;
- } MV_GPIO_EXPANDER;
- typedef struct {
- GPIO_CONTROLLER *SoCGpio;
- UINTN GpioDeviceCount;
- MV_GPIO_EXPANDER *GpioExpanders;
- UINTN GpioExpanderCount;
- } MV_BOARD_GPIO_DESCRIPTION;
- EFI_STATUS
- EFIAPI
- ArmadaBoardGpioExpanderGet (
- IN OUT MV_GPIO_EXPANDER **GpioExpanders,
- IN OUT UINTN *GpioExpanderCount
- );
- //
- // I2C devices per-board description
- //
- typedef struct {
- MV_SOC_I2C_DESC *SoC;
- UINTN I2cDevCount;
- } MV_BOARD_I2C_DESC;
- //
- // MDIO devices per-board description
- //
- typedef struct {
- MV_SOC_MDIO_DESC *SoC;
- UINTN MdioDevCount;
- } MV_BOARD_MDIO_DESC;
- //
- // NonDiscoverableDevices per-board description
- //
- //
- // AHCI devices per-board description
- //
- typedef struct {
- MV_SOC_AHCI_DESC *SoC;
- UINTN AhciDevCount;
- } MV_BOARD_AHCI_DESC;
- //
- // SDMMC devices per-board description
- //
- typedef enum {
- RemovableSlot,
- EmbeddedSlot,
- SharedBusSlot,
- UnknownSlot
- } MV_SDMMC_SLOT_TYPE;
- typedef struct {
- MV_SOC_SDMMC_DESC *SoC;
- UINTN SdMmcDevCount;
- BOOLEAN Xenon1v8Enabled;
- BOOLEAN Xenon8BitBusEnabled;
- BOOLEAN XenonSlowModeEnabled;
- UINT8 XenonTuningStepDivisor;
- MV_SDMMC_SLOT_TYPE SlotType;
- } MV_BOARD_SDMMC_DESC;
- EFI_STATUS
- EFIAPI
- ArmadaBoardDescSdMmcGet (
- OUT UINTN *SdMmcDevCount,
- OUT MV_BOARD_SDMMC_DESC **SdMmcDesc
- );
- //
- // XHCI devices per-board description
- //
- typedef struct {
- MV_SOC_XHCI_DESC *SoC;
- UINTN XhciDevCount;
- } MV_BOARD_XHCI_DESC;
- //
- // PCIE controllers description
- //
- typedef struct {
- EFI_PHYSICAL_ADDRESS PcieDbiAddress;
- EFI_PHYSICAL_ADDRESS ConfigSpaceAddress;
- UINT64 ConfigSpaceSize;
- BOOLEAN HaveResetGpio;
- MV_GPIO_PIN PcieResetGpio;
- UINT64 PcieBusMin;
- UINT64 PcieBusMax;
- UINT64 PcieIoTranslation;
- UINT64 PcieIoWinBase;
- UINT64 PcieIoWinSize;
- UINT64 PcieMmio32Translation;
- UINT64 PcieMmio32WinBase;
- UINT64 PcieMmio32WinSize;
- UINT64 PcieMmio64Translation;
- UINT64 PcieMmio64WinBase;
- UINT64 PcieMmio64WinSize;
- } MV_PCIE_CONTROLLER;
- typedef struct {
- MV_PCIE_CONTROLLER CONST *PcieControllers;
- UINTN PcieControllerCount;
- } MV_BOARD_PCIE_DESCRIPTION;
- /**
- Return the number and description of PCIE controllers used on the platform.
- @param[in out] **PcieControllers Array containing PCIE controllers'
- description.
- @param[in out] *PcieControllerCount Amount of used PCIE controllers.
- @retval EFI_SUCCESS The data were obtained successfully.
- @retval EFI_NOT_FOUND None of the controllers is used.
- @retval other Return error status.
- **/
- EFI_STATUS
- EFIAPI
- ArmadaBoardPcieControllerGet (
- IN OUT MV_PCIE_CONTROLLER CONST **PcieControllers,
- IN OUT UINTN *PcieControllerCount
- );
- //
- // PP2 NIC devices per-board description
- //
- typedef struct {
- MV_SOC_PP2_DESC *SoC;
- UINT8 Pp2DevCount;
- } MV_BOARD_PP2_DESC;
- //
- // UTMI PHY devices per-board description
- //
- typedef struct {
- MV_SOC_UTMI_DESC *SoC;
- UINTN UtmiDevCount;
- UINTN UtmiPortType;
- } MV_BOARD_UTMI_DESC;
- #endif /* __ARMADA_SOC_DESC_LIB_H__ */
|