openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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_*/