/******************************************************************************** Copyright (C) 2016 Marvell International Ltd. SPDX-License-Identifier: BSD-2-Clause-Patent *******************************************************************************/ #ifndef __MV_PHY_H__ #define __MV_PHY_H__ #define MARVELL_PHY_PROTOCOL_GUID { 0x32f48a43, 0x37e3, 0x4acf, { 0x93, 0xc4, 0x3e, 0x57, 0xa7, 0xb0, 0xfb, 0xdc }} typedef struct _MARVELL_PHY_PROTOCOL MARVELL_PHY_PROTOCOL; typedef enum { PHY_CONNECTION_RGMII, PHY_CONNECTION_RGMII_ID, PHY_CONNECTION_RGMII_TXID, PHY_CONNECTION_RGMII_RXID, PHY_CONNECTION_SGMII, PHY_CONNECTION_RTBI, PHY_CONNECTION_XAUI, PHY_CONNECTION_RXAUI, PHY_CONNECTION_SFI } PHY_CONNECTION; typedef enum { NO_SPEED, SPEED_10, SPEED_100, SPEED_1000, SPEED_2500, SPEED_10000 } PHY_SPEED; typedef struct { UINT32 Addr; UINT8 MdioIndex; BOOLEAN LinkUp; BOOLEAN FullDuplex; BOOLEAN AutoNegotiation; PHY_SPEED Speed; PHY_CONNECTION Connection; } PHY_DEVICE; /* * Before calling MARVELL_PHY_STATUS driver should request PHY_DEVICE structure by * calling MARVELL_PHY_INIT. Pointer to that needs to be provided as an argument to * MARVELL_PHY_STATUS. */ typedef EFI_STATUS (EFIAPI *MARVELL_PHY_STATUS) ( IN CONST MARVELL_PHY_PROTOCOL *This, IN OUT PHY_DEVICE *PhyDev ); /* * MARVELL_PHY_INIT allocates PhyDev and provides driver with pointer via **PhyDev. * After it becomes unnecessary, PhyDev should be freed by a driver (or it will * get freed at ExitBootServices). */ typedef EFI_STATUS (EFIAPI *MARVELL_PHY_INIT) ( IN CONST MARVELL_PHY_PROTOCOL *This, IN UINT32 PhyAddr, IN PHY_CONNECTION PhyConnection, IN OUT PHY_DEVICE **PhyDev ); struct _MARVELL_PHY_PROTOCOL { MARVELL_PHY_STATUS Status; MARVELL_PHY_INIT Init; }; extern EFI_GUID gMarvellPhyProtocolGuid; #endif