/******************************************************************************** Copyright (C) 2016 Marvell International Ltd. SPDX-License-Identifier: BSD-2-Clause-Patent *******************************************************************************/ #ifndef __COMPHY_H__ #define __COMPHY_H__ #include #include #include #include #include #include #include #include #include #include #include #include "ComPhySipSvc.h" #define MAX_LANE_OPTIONS 10 /***** Parsing PCD *****/ #define GET_LANE_TYPE(id) PcdGetPtr(PcdChip##id##ComPhyTypes) #define GET_LANE_SPEED(id) PcdGetPtr(PcdChip##id##ComPhySpeeds) #define GET_LANE_INV(id) PcdGetPtr(PcdChip##id##ComPhyInvFlags) #define GetComPhyPcd(lane_struct, id) { \ lane_struct[id].Type = (UINT8 *)GET_LANE_TYPE(id); \ lane_struct[id].SpeedValue = (UINT8 *)GET_LANE_SPEED(id); \ lane_struct[id].InvFlag = (UINT8 *)GET_LANE_SPEED(id); \ } #define COMPHY_TYPE_UNCONNECTED 0 #define COMPHY_TYPE_PCIE0 1 #define COMPHY_TYPE_PCIE1 2 #define COMPHY_TYPE_PCIE2 3 #define COMPHY_TYPE_PCIE3 4 #define COMPHY_TYPE_SATA0 5 #define COMPHY_TYPE_SATA1 6 #define COMPHY_TYPE_SATA2 7 #define COMPHY_TYPE_SATA3 8 #define COMPHY_TYPE_SGMII0 9 #define COMPHY_TYPE_SGMII1 10 #define COMPHY_TYPE_SGMII2 11 #define COMPHY_TYPE_SGMII3 12 #define COMPHY_TYPE_QSGMII 13 #define COMPHY_TYPE_USB3_HOST0 14 #define COMPHY_TYPE_USB3_HOST1 15 #define COMPHY_TYPE_USB3_DEVICE 16 #define COMPHY_TYPE_XAUI0 17 #define COMPHY_TYPE_XAUI1 18 #define COMPHY_TYPE_XAUI2 19 #define COMPHY_TYPE_XAUI3 20 #define COMPHY_TYPE_RXAUI0 21 #define COMPHY_TYPE_RXAUI1 22 #define COMPHY_TYPE_SFI 23 #define COMPHY_TYPE_MAX 24 #define COMPHY_TYPE_INVALID 0xff /***** SATA registers *****/ #define SATA3_VENDOR_ADDRESS 0xA0 #define SATA3_VENDOR_ADDR_OFSSET 0 #define SATA3_VENDOR_ADDR_MASK (0xFFFFFFFF << SATA3_VENDOR_ADDR_OFSSET) #define SATA3_VENDOR_DATA 0xA4 #define SATA_CONTROL_REG 0x0 #define SATA3_CTRL_SATA0_PD_OFFSET 6 #define SATA3_CTRL_SATA0_PD_MASK (1 << SATA3_CTRL_SATA0_PD_OFFSET) #define SATA3_CTRL_SATA1_PD_OFFSET 14 #define SATA3_CTRL_SATA1_PD_MASK (1 << SATA3_CTRL_SATA1_PD_OFFSET) #define SATA3_CTRL_SATA1_ENABLE_OFFSET 22 #define SATA3_CTRL_SATA1_ENABLE_MASK (1 << SATA3_CTRL_SATA1_ENABLE_OFFSET) #define SATA3_CTRL_SATA_SSU_OFFSET 23 #define SATA3_CTRL_SATA_SSU_MASK (1 << SATA3_CTRL_SATA_SSU_OFFSET) #define SATA_MBUS_SIZE_SELECT_REG 0x4 #define SATA_MBUS_REGRET_EN_OFFSET 7 #define SATA_MBUS_REGRET_EN_MASK (0x1 << SATA_MBUS_REGRET_EN_OFFSET) /***************************/ typedef struct _CHIP_COMPHY_CONFIG CHIP_COMPHY_CONFIG; typedef struct { UINT32 Type; UINT32 MuxValue; } COMPHY_MUX_OPTIONS; typedef struct { UINT8 Type; UINT8 Speed; UINT8 Invert; } COMPHY_MAP; typedef struct { UINT8 *Type; UINT8 *SpeedValue; UINT8 *InvFlag; } PCD_LANE_MAP; typedef VOID (*COMPHY_CHIP_INIT) ( IN CHIP_COMPHY_CONFIG *PtrChipCfg ); struct _CHIP_COMPHY_CONFIG { MV_COMPHY_CHIP_TYPE ChipType; COMPHY_MAP MapData[MAX_LANE_OPTIONS]; EFI_PHYSICAL_ADDRESS ComPhyBaseAddr; EFI_PHYSICAL_ADDRESS Hpipe3BaseAddr; COMPHY_CHIP_INIT Init; UINT32 LanesCount; UINT32 MuxBitCount; UINT8 ChipId; }; VOID ComPhyCp110Init ( IN CHIP_COMPHY_CONFIG * First ); VOID RegSet ( IN EFI_PHYSICAL_ADDRESS Addr, IN UINT32 Data, IN UINT32 Mask ); VOID RegSetSilent ( IN EFI_PHYSICAL_ADDRESS Addr, IN UINT32 Data, IN UINT32 Mask ); #endif // __COMPHY_H__