pm8x50_internal.h (4701B)
1 /* 2 * 3 * 4 * 5 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 6 * 7 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 8 */ 9 10 #ifndef _PM8x50_INTERNAL_H__H_ 11 #define _PM8x50_INTERNAL_H__H_ 12 13 #ifdef PORTMOD_PM8X50_SUPPORT 14 15 /*! 16 * @brief Flags of available VCOs 17 */ 18 #define PM8x50_VCO_ILKN_20P625G 0x1 /**< ILKN 20.625G */ 19 #define PM8x50_VCO_ETH_20P625G 0x2 /**< Ethernet 20.625G */ 20 #define PM8x50_VCO_ILKN_25G 0x4 /**< ILKN 25G */ 21 #define PM8x50_VCO_ETH_25P781G 0x8 /**< Ethernet 25.781G */ 22 #define PM8x50_VCO_ILKN_25P781G 0x10 /**< ILKN 25.781G */ 23 #define PM8x50_VCO_ETH_26P562G 0x20 /**< Ethernet 26.562G */ 24 #define PM8x50_VCO_ILKN_26P562G 0x40 /**< ILKN 26.562G */ 25 #define PM8x50_VCO_ILKN_27P343G 0x80 /**< ILKN 27.343G */ 26 #define PM8x50_VCO_ILKN_28P125G 0x100 /**< ILKN 28.125G */ 27 #define PM8x50_VCO_ETH_25G 0x200 /**< Ethernet 25G */ 28 29 #define PM8x50_VCO_ILKN_20P625G_SET(flags) ((flags) |= PM8x50_VCO_ILKN_20P625G) 30 #define PM8x50_VCO_ETH_20P625G_SET(flags) ((flags) |= PM8x50_VCO_ETH_20P625G) 31 #define PM8x50_VCO_ILKN_25G_SET(flags) ((flags) |= PM8x50_VCO_ILKN_25G) 32 #define PM8x50_VCO_ETH_25P781G_SET(flags) ((flags) |= PM8x50_VCO_ETH_25P781G) 33 #define PM8x50_VCO_ILKN_25P781G_SET(flags) ((flags) |= PM8x50_VCO_ILKN_25P781G) 34 #define PM8x50_VCO_ETH_26P562G_SET(flags) ((flags) |= PM8x50_VCO_ETH_26P562G) 35 #define PM8x50_VCO_ILKN_26P562G_SET(flags) ((flags) |= PM8x50_VCO_ILKN_26P562G) 36 #define PM8x50_VCO_ILKN_27P343G_SET(flags) ((flags) |= PM8x50_VCO_ILKN_27P343G) 37 #define PM8x50_VCO_ILKN_28P125G_SET(flags) ((flags) |= PM8x50_VCO_ILKN_28P125G) 38 #define PM8x50_VCO_ETH_25G_SET(flags) ((flags) |= PM8x50_VCO_ETH_25G) 39 40 #define PM8x50_VCO_ILKN_20P625G_CLR(flags) ((flags) &= ~PM8x50_VCO_ILKN_20P625G) 41 #define PM8x50_VCO_ETH_20P625G_CLR(flags) ((flags) &= ~PM8x50_VCO_ETH_20P625G) 42 #define PM8x50_VCO_ILKN_25G_CLR(flags) ((flags) &= ~PM8x50_VCO_ILKN_25G) 43 #define PM8x50_VCO_ETH_25P781G_CLR(flags) ((flags) &= ~PM8x50_VCO_ETH_25P781G) 44 #define PM8x50_VCO_ILKN_25P781G_CLR(flags) ((flags) &= ~PM8x50_VCO_ILKN_25P781G) 45 #define PM8x50_VCO_ETH_26P562G_CLR(flags) ((flags) &= ~PM8x50_VCO_ETH_26P562G) 46 #define PM8x50_VCO_ILKN_26P562G_CLR(flags) ((flags) &= ~PM8x50_VCO_ILKN_26P562G) 47 #define PM8x50_VCO_ILKN_27P343G_CLR(flags) ((flags) &= ~PM8x50_VCO_ILKN_27P343G) 48 #define PM8x50_VCO_ILKN_28P125G_CLR(flags) ((flags) &= ~PM8x50_VCO_ILKN_28P125G) 49 #define PM8x50_VCO_ETH_25G_CLR(flags) ((flags) &= ~PM8x50_VCO_ETH_25G) 50 51 #define PM8x50_VCO_ILKN_20P625G_GET(flags) ((flags) & PM8x50_VCO_ILKN_20P625G ? 1 : 0) 52 #define PM8x50_VCO_ETH_20P625G_GET(flags) ((flags) & PM8x50_VCO_ETH_20P625G ? 1 : 0) 53 #define PM8x50_VCO_ILKN_25G_GET(flags) ((flags) & PM8x50_VCO_ILKN_25G ? 1 : 0) 54 #define PM8x50_VCO_ETH_25P781G_GET(flags) ((flags) & PM8x50_VCO_ETH_25P781G ? 1 : 0) 55 #define PM8x50_VCO_ILKN_25P781G_GET(flags) ((flags) & PM8x50_VCO_ILKN_25P781G ? 1 : 0) 56 #define PM8x50_VCO_ETH_26P562G_GET(flags) ((flags) & PM8x50_VCO_ETH_26P562G ? 1 : 0) 57 #define PM8x50_VCO_ILKN_26P562G_GET(flags) ((flags) & PM8x50_VCO_ILKN_26P562G ? 1 : 0) 58 #define PM8x50_VCO_ILKN_27P343G_GET(flags) ((flags) & PM8x50_VCO_ILKN_27P343G ? 1 : 0) 59 #define PM8x50_VCO_ILKN_28P125G_GET(flags) ((flags) & PM8x50_VCO_ILKN_28P125G ? 1 : 0) 60 #define PM8x50_VCO_ETH_25G_GET(flags) ((flags) & PM8x50_VCO_ETH_25G ? 1 : 0) 61 62 /*! 63 * @brief Flags for PM8x50 version. 64 */ 65 #define PM8X50_PM_VERSION_F_REV0_16NM 0x1 /**< PM8X50, revision 0, 16nm */ 66 67 #define PM8X50_PM_VERSION_F_REV0_16NM_SET(flags) ((flags) |= PM8X50_PM_VERSION_F_REV0_16NM) 68 #define PM8X50_PM_VERSION_F_REV0_16NM_CLR(flags) ((flags) &= ~PM8X50_PM_VERSION_F_REV0_16NM) 69 #define PM8X50_PM_VERSION_F_REV0_16NM_GET(flags) ((flags) & PM8X50_PM_VERSION_F_REV0_16NM ? 1 : 0) 70 71 /*! 72 * @brief Flags for Ethernet TVCO value. 73 */ 74 #define PM8X50_TVCO_SUPPORT_20P625G 0x1 /**< Support TVCO running at 20.625G in Ethernet mode. */ 75 76 #define PM8X50_TVCO_SUPPORT_20P625G_SET(flags) ((flags) |= PM8X50_TVCO_SUPPORT_20P625G) 77 #define PM8X50_TVCO_SUPPORT_20P625G_CLR(flags) ((flags) &= ~PM8X50_TVCO_SUPPORT_20P625G) 78 #define PM8X50_TVCO_SUPPORT_20P625G_GET(flags) ((flags) & PM8X50_TVCO_SUPPORT_20P625G ? 1: 0) 79 80 /* VCOs bitmap type */ 81 typedef uint16_t pm8x50_vcos_bmp_t; 82 83 /* Function gets current TVCO, OVCO and tries to accommodate input VCO requests */ 84 int pm8x50_vcos_request_allocate(int unit, 85 uint32 flags, 86 const pm8x50_vcos_bmp_t required_vcos_bmp, 87 portmod_vco_type_t *current_tvco, 88 portmod_vco_type_t *current_ovco); 89 90 #endif /* PORTMOD_PM8X50_SUPPORT */ 91 92 #endif /*_PM8x50_INTERNAL_H__H_*/