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

pmNull.c (19946B)


      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 #include <soc/types.h>
     11 #include <soc/error.h>
     12 #include <soc/drv.h>
     13 #include <soc/portmod/portmod_internal.h>
     14 #include <soc/portmod/portmod.h>
     15 #include <soc/portmod/portmod_dispatch.h>
     16 
     17 
     18         
     19 #ifdef _ERR_MSG_MODULE_NAME 
     20 #error "_ERR_MSG_MODULE_NAME redefined" 
     21 #endif
     22 #define _ERR_MSG_MODULE_NAME BSL_LS_SOC_PORT
     23 
     24 #ifdef PORTMOD_PMNULL_SUPPORT
     25 
     26 typedef struct pm_null_saved_data_s
     27 {
     28     int higig_mode[SOC_MAX_NUM_PORTS];
     29     int higig2_mode[SOC_MAX_NUM_PORTS];
     30 } pm_null_saved_data_t;
     31 
     32 static pm_null_saved_data_t *saved_data[SOC_MAX_NUM_DEVICES];
     33 
     34 
     35 int pmNull_pm_interface_type_is_supported(int unit, soc_port_if_t interface, int* is_supported)
     36 {
     37         
     38     SOC_INIT_FUNC_DEFS;
     39 
     40     *is_supported =  (interface == SOC_PORT_IF_NULL)? 1 : 0;
     41     
     42     SOC_FUNC_RETURN; 
     43     
     44 }
     45 
     46 /*
     47  * Functions:
     48  *    _pm_null_port_ability_get
     49  *
     50  * Purpose:
     51  *    Some dummy routines for null and no
     52  *      connection PHY drivers.
     53  */
     54 
     55 static int
     56 _pm_null_port_ability_get(int unit, soc_port_t port,
     57                             soc_port_ability_t *ability)
     58 {
     59 
     60     int max_speed = SOC_INFO(unit).port_speed_max[port];
     61 
     62     if ( max_speed == 0) {
     63         if (IS_GE_PORT(unit,port)) {
     64              max_speed = 1000;
     65         } else if (IS_FE_PORT(unit,port)) {
     66              max_speed = 100;
     67         }
     68     }
     69 
     70     switch (max_speed) {
     71     case 127000:
     72         ability->speed_full_duplex |= SOC_PA_SPEED_127GB;
     73         /* fall through */
     74     case 120000:
     75         ability->speed_full_duplex |= SOC_PA_SPEED_120GB;
     76         /* fall through */
     77     case 106000:
     78         ability->speed_full_duplex |= SOC_PA_SPEED_106GB;
     79         /* fall through */
     80     case 100000:
     81         ability->speed_full_duplex |= SOC_PA_SPEED_100GB;
     82         /* fall through */
     83     case 53000:
     84         ability->speed_full_duplex |= SOC_PA_SPEED_53GB;
     85         /* fall through */
     86     case 50000:
     87         ability->speed_full_duplex |= SOC_PA_SPEED_50GB;
     88         /* fall through */
     89     case 42000:
     90         ability->speed_full_duplex |= SOC_PA_SPEED_42GB;
     91         /* fall through */
     92     case 40000:
     93         ability->speed_full_duplex |= SOC_PA_SPEED_40GB;
     94         /* fall through */
     95     case 32000:
     96         ability->speed_full_duplex |= SOC_PA_SPEED_32GB;
     97         /* fall through */
     98     case 30000:
     99         ability->speed_full_duplex |= SOC_PA_SPEED_30GB;
    100         /* fall through */
    101     case 27000:
    102         ability->speed_full_duplex |= SOC_PA_SPEED_27GB;
    103         /* fall through */
    104     case 25000:
    105         ability->speed_full_duplex |= SOC_PA_SPEED_25GB;
    106         /* fall through */
    107     case 24000:
    108         ability->speed_full_duplex |= SOC_PA_SPEED_24GB;
    109         /* fall through */
    110     case 21000:
    111         ability->speed_full_duplex |= SOC_PA_SPEED_21GB;
    112         /* fall through */
    113     case 20000:
    114         ability->speed_full_duplex |= SOC_PA_SPEED_20GB;
    115         /* fall through */
    116     case 16000:
    117         ability->speed_full_duplex |= SOC_PA_SPEED_16GB;
    118         /* fall through */
    119     case 15000:
    120         ability->speed_full_duplex |= SOC_PA_SPEED_15GB;
    121         /* fall through */
    122     case 13000:
    123         ability->speed_full_duplex |= SOC_PA_SPEED_13GB;
    124         /* fall through */
    125     case 12500:
    126         ability->speed_full_duplex |= SOC_PA_SPEED_12P5GB;
    127         /* fall through */
    128     case 12000:
    129         ability->speed_full_duplex |= SOC_PA_SPEED_12GB;
    130         /* fall through */
    131     case 11000:
    132         ability->speed_full_duplex |= SOC_PA_SPEED_11GB;
    133         /* fall through */
    134     case 10000:
    135         ability->speed_full_duplex |= SOC_PA_SPEED_10GB;
    136         /* fall through */
    137     case 6000:
    138         ability->speed_full_duplex |= SOC_PA_SPEED_6000MB;
    139         /* fall through */
    140     case 5000:
    141         ability->speed_full_duplex |= SOC_PA_SPEED_5000MB;
    142         /* fall through */
    143     case 3000:
    144         ability->speed_full_duplex |= SOC_PA_SPEED_3000MB;
    145         /* fall through */
    146     case 2500:
    147         ability->speed_full_duplex |= SOC_PA_SPEED_2500MB;
    148         /* fall through */
    149     case 1000:
    150         ability->speed_full_duplex |= SOC_PA_SPEED_1000MB;
    151         /* fall through */
    152     case 100:
    153         ability->speed_full_duplex |= SOC_PA_SPEED_100MB;
    154         /* fall through */
    155     case 10:
    156         ability->speed_full_duplex |= SOC_PA_SPEED_10MB;
    157         /* fall through */
    158     default:
    159         break;
    160     }
    161 
    162     ability->speed_half_duplex = 0x0;
    163 
    164     if (IS_HG_PORT(unit, port) || IS_XE_PORT(unit, port) ||
    165         IS_CE_PORT(unit, port)) {
    166         ability->interface = SOC_PA_INTF_XGMII;
    167     } else if (IS_GE_PORT(unit, port)) {
    168         ability->interface = SOC_PA_INTF_MII | SOC_PA_INTF_GMII;
    169     } else {
    170         ability->interface = SOC_PA_INTF_MII;
    171     }
    172 
    173     ability->loopback = SOC_PA_LB_NONE | SOC_PA_LB_MAC | SOC_PA_LB_PHY;
    174 
    175     return SOC_E_NONE;
    176 }
    177 
    178 int pmNull_pm_init(int unit, const portmod_pm_create_info_internal_t* pm_add_info, int wb_buffer_index, pm_info_t pm_info)
    179 {
    180         
    181     SOC_INIT_FUNC_DEFS;
    182     
    183     pm_info->type         = pm_add_info->type;
    184     pm_info->unit         = unit;
    185     pm_info->wb_buffer_id = wb_buffer_index;
    186 
    187     /* initialize saved_data */
    188     if (unit < SOC_MAX_NUM_DEVICES) {
    189         if (NULL == saved_data[unit]) {
    190             saved_data[unit] = sal_alloc(sizeof(*saved_data[unit]),
    191                                          "pmNull saved data");
    192             if (NULL == saved_data[unit]) {
    193                 return SOC_E_MEMORY;
    194             }
    195             sal_memset(saved_data[unit], 0, sizeof(*saved_data[unit]));
    196         }
    197 
    198     }
    199 
    200     SOC_FUNC_RETURN; 
    201 }
    202 
    203 
    204 int pmNull_pm_destroy(int unit, pm_info_t pm_info)
    205 {
    206         
    207     SOC_INIT_FUNC_DEFS;
    208     
    209     /* Place your code here */
    210     sal_free(saved_data[unit]);
    211     saved_data[unit] = NULL;
    212         
    213     SOC_FUNC_RETURN; 
    214     
    215 }
    216 
    217 
    218 int pmNull_port_attach(int unit, int port, pm_info_t pm_info, const portmod_port_add_info_t* add_info)
    219 {
    220         
    221     SOC_INIT_FUNC_DEFS;
    222     
    223     /* Place your code here */
    224 
    225         
    226     SOC_FUNC_RETURN; 
    227     
    228 }
    229 
    230 
    231 int pmNull_pm_core_info_get(int unit, pm_info_t pm_info, int phyn, portmod_pm_core_info_t* core_info)
    232 {
    233         
    234     SOC_INIT_FUNC_DEFS;
    235     
    236     /* Place your code here */
    237 
    238         
    239     SOC_FUNC_RETURN; 
    240     
    241 }
    242 
    243 
    244 int pmNull_port_detach(int unit, int port, pm_info_t pm_info)
    245 {
    246         
    247     SOC_INIT_FUNC_DEFS;
    248     
    249     /* Place your code here */
    250 
    251         
    252     SOC_FUNC_RETURN; 
    253     
    254 }
    255 
    256 
    257 int pmNull_port_enable_set(int unit, int port, pm_info_t pm_info, int flags, int enable)
    258 {
    259         
    260     SOC_INIT_FUNC_DEFS;
    261     
    262     /* Place your code here */
    263 
    264         
    265     SOC_FUNC_RETURN; 
    266     
    267 }
    268 
    269 int pmNull_port_enable_get(int unit, int port, pm_info_t pm_info, int flags, int* enable)
    270 {
    271         
    272     SOC_INIT_FUNC_DEFS;
    273    
    274     *enable = 0; 
    275 
    276         
    277     SOC_FUNC_RETURN; 
    278     
    279 }
    280 
    281 int pmNull_port_modid_set (int unit, int port, pm_info_t pm_info, int value)
    282 {
    283     SOC_INIT_FUNC_DEFS;
    284 
    285     SOC_FUNC_RETURN; 
    286 }
    287 
    288 int pmNull_port_higig2_mode_set (int unit, int port, pm_info_t pm_info, int mode)
    289 {
    290     SOC_INIT_FUNC_DEFS;
    291 
    292     saved_data[unit]->higig2_mode[port] = mode; 
    293     SOC_FUNC_RETURN; 
    294 }
    295 
    296 int pmNull_port_higig2_mode_get (int unit, int port, pm_info_t pm_info, int *mode)
    297 {
    298     SOC_INIT_FUNC_DEFS;
    299 
    300     *mode = saved_data[unit]->higig2_mode[port]; 
    301     SOC_FUNC_RETURN; 
    302 }
    303 
    304 int pmNull_port_higig_mode_set (int unit, int port, pm_info_t pm_info, int mode)
    305 {
    306     SOC_INIT_FUNC_DEFS;
    307 
    308     saved_data[unit]->higig_mode[port] = mode; 
    309     SOC_FUNC_RETURN; 
    310 }
    311 
    312 int pmNull_port_higig_mode_get (int unit, int port, pm_info_t pm_info, int *mode)
    313 {
    314     SOC_INIT_FUNC_DEFS;
    315 
    316     *mode = saved_data[unit]->higig_mode[port]; 
    317     SOC_FUNC_RETURN; 
    318 }
    319 
    320 int pmNull_port_encap_set (int unit, int port, pm_info_t pm_info, 
    321                                 int flags, portmod_encap_t encap)
    322 {
    323     return SOC_E_NONE;
    324 }
    325 
    326 int pmNull_port_encap_get (int unit, int port, pm_info_t pm_info, 
    327                             int *flags, portmod_encap_t *encap)
    328 {
    329     return SOC_E_NONE;
    330 }
    331 
    332 int pmNull_port_interface_config_set(int unit, int port, pm_info_t pm_info, const portmod_port_interface_config_t* config, int phy_init_flags)
    333 {
    334         
    335     SOC_INIT_FUNC_DEFS;
    336     
    337     /* Place your code here */
    338 
    339         
    340     SOC_FUNC_RETURN; 
    341     
    342 }
    343 
    344 int pmNull_port_interface_config_get(int unit, int port, pm_info_t pm_info, portmod_port_interface_config_t* config, int phy_init_flags)
    345 {
    346         
    347     SOC_INIT_FUNC_DEFS;
    348     
    349     /* Place your code here */
    350 
    351         
    352 
    353     SOC_FUNC_RETURN; 
    354 }
    355 
    356 int pmNull_port_default_interface_get(int unit, int port, pm_info_t pm_info, const portmod_port_interface_config_t* config, soc_port_if_t* interface)
    357 {
    358     *interface = SOC_PORT_IF_NULL;
    359     return SOC_E_NONE;
    360 }
    361 
    362 int pmNull_port_loopback_set(int unit, int port, pm_info_t pm_info, portmod_loopback_mode_t loopback_type, int enable)
    363 {
    364         
    365     SOC_INIT_FUNC_DEFS;
    366     
    367     /* Place your code here */
    368 
    369         
    370 
    371     SOC_FUNC_RETURN; 
    372     
    373 }
    374 
    375 int pmNull_port_loopback_get(int unit, int port, pm_info_t pm_info, portmod_loopback_mode_t loopback_type, int* enable)
    376 {
    377         
    378     SOC_INIT_FUNC_DEFS;
    379     
    380     /* Place your code here */
    381 
    382         
    383 
    384     SOC_FUNC_RETURN; 
    385     
    386 }
    387 
    388 
    389 /* Port RX MAC ENABLE set/get*/
    390 int pmNull_port_rx_mac_enable_set(int unit, int port,
    391                                   pm_info_t pm_info, int enable)
    392 {
    393     SOC_INIT_FUNC_DEFS;
    394 
    395     SOC_FUNC_RETURN;
    396 }
    397 
    398 
    399 int pmNull_port_rx_mac_enable_get(int unit, int port,
    400                                   pm_info_t pm_info, int* enable)
    401 {
    402     SOC_INIT_FUNC_DEFS;
    403 
    404     *enable = 0;
    405 
    406     SOC_FUNC_RETURN;
    407 }
    408 
    409 
    410 int pmNull_port_core_access_get(int unit, int port, pm_info_t pm_info, int phyn, int max_cores, phymod_core_access_t* core_access_arr, int* nof_cores, int* is_most_ext)
    411 {
    412         
    413     SOC_INIT_FUNC_DEFS;
    414     
    415     /* Place your code here */
    416     *nof_cores = 0;
    417 
    418     if (NULL != is_most_ext) *is_most_ext = 1;
    419 
    420     SOC_FUNC_RETURN; 
    421     
    422 }
    423 
    424 
    425 int pmNull_port_phy_lane_access_get(int unit, int port, pm_info_t pm_info, const portmod_access_get_params_t* params, int max_phys, phymod_phy_access_t* access, int* nof_phys, int* is_most_ext)
    426 {
    427         
    428     SOC_INIT_FUNC_DEFS;
    429     
    430     /* Place your code here */
    431     /* This code changes are required to handle phy_acess_get from portmod_common.c call during flex port */
    432     *nof_phys = 0;
    433 
    434     if (NULL != is_most_ext) *is_most_ext = 1;
    435 
    436     SOC_FUNC_RETURN; 
    437 }
    438 
    439 int pmNull_port_link_get(int unit, int port, pm_info_t pm_info, int flags,  int* link)
    440 {
    441     SOC_INIT_FUNC_DEFS;
    442     
    443     *link = 0; 
    444 
    445     SOC_FUNC_RETURN; 
    446 }
    447 
    448 int pmNull_port_mac_reset_check(int unit, int port, pm_info_t pm_info,
    449                                 int enable, int* reset)
    450 {
    451     SOC_INIT_FUNC_DEFS;
    452 
    453     *reset = 0;
    454 
    455     SOC_FUNC_RETURN;
    456 }
    457 
    458 /*!
    459  * pmNull_port_duplex_set
    460  *
    461  * @brief duplex set.
    462  *
    463  * @param [in]  unit            - unit id
    464  * @param [in]  port            - logical port
    465  * @param [in]  enable        -
    466  */
    467 int pmNull_port_duplex_set(int unit, int port, pm_info_t pm_info,int enable)
    468 {
    469     return (0);
    470 }
    471 
    472 
    473 /*!
    474  * pmNull_port_duplex_get
    475  *
    476  * @brief duplex get.
    477  *
    478  * @param [in]  unit            - unit id
    479  * @param [in]  port            - logical port
    480  * @param [in]  vlan_tag        -
    481  */
    482 int pmNull_port_duplex_get(int unit, int port, pm_info_t pm_info, int* enable)
    483 {
    484     *enable=1;
    485     return (0);
    486 }
    487 
    488 int pmNull_port_autoneg_status_get (int unit, int port, pm_info_t pm_info,
    489                                     phymod_autoneg_status_t* an_status)
    490 {
    491     an_status->enabled = 0;
    492     return (0);
    493 }
    494 
    495 int pmNull_port_lag_failover_status_toggle (int unit, soc_port_t port, pm_info_t pm_info)
    496 {
    497     return (0);
    498 }
    499 
    500 int pmNull_port_vlan_tag_set(int unit, int port, pm_info_t pm_info, portmod_vlan_tag_t* vlan_tag)
    501 {
    502     return (0);
    503 }
    504 
    505 int pmNull_port_vlan_tag_get(int unit, int port, pm_info_t pm_info, portmod_vlan_tag_t* vlan_tag)
    506 {
    507     return (0);
    508 }
    509 
    510 int pmNull_port_eee_set(int unit, int port, pm_info_t pm_info,const portmod_eee_t* eee)
    511 {
    512     return (0);
    513 }
    514 
    515 int pmNull_port_eee_get(int unit, int port, pm_info_t pm_info, portmod_eee_t* eee)
    516 {
    517     return (0);
    518 }
    519 
    520 int pmNull_port_ref_clk_get(int unit, soc_port_t port, pm_info_t pm_info, int *ref_clk)
    521 {
    522     return (SOC_E_NONE);
    523 }
    524 
    525 int pmNull_port_cntmaxsize_set(int unit, int port, pm_info_t pm_info, int val)
    526 {
    527     return (SOC_E_NONE);
    528 }
    529 
    530 int pmNull_port_cntmaxsize_get(int unit, int port, pm_info_t pm_info, int *val)
    531 {
    532     return (SOC_E_NONE);
    533 }
    534 
    535 int pmNull_port_autoneg_get (int unit, int port, pm_info_t pm_info, uint32 phy_flags,
    536                              phymod_autoneg_control_t* an)
    537 {
    538     an->enable = 0;
    539     return (SOC_E_NONE);
    540 }
    541 
    542 int pmNull_port_autoneg_set (int unit, int port, pm_info_t pm_info, uint32 phy_flags,
    543                              const phymod_autoneg_control_t* an)
    544 {
    545     return (SOC_E_NONE);
    546 }
    547 
    548 int pmNull_port_ability_advert_get(int unit, int port, pm_info_t pm_info, uint32 phy_flags,
    549                                  portmod_port_ability_t* ability)
    550 {
    551     return (SOC_E_NONE);
    552 }
    553 
    554 int pmNull_port_ability_advert_set(int unit, int port, pm_info_t pm_info, uint32 phy_flags,
    555                                  portmod_port_ability_t* ability)
    556 {
    557     return (SOC_E_NONE);
    558 }
    559 
    560 int pmNull_port_pause_control_set(int unit, int port, pm_info_t pm_info, 
    561                                   const portmod_pause_control_t* control)
    562 {
    563     return (SOC_E_NONE);
    564 }
    565 
    566 int pmNull_port_pause_control_get(int unit, int port, pm_info_t pm_info, 
    567                                   portmod_pause_control_t* control)
    568 {
    569     return (SOC_E_NONE);
    570 }
    571 
    572 int pmNull_port_tx_mac_sa_set(int unit, int port, pm_info_t pm_info, sal_mac_addr_t mac_addr)
    573 {
    574     return (SOC_E_NONE);
    575 }
    576 
    577 
    578 int pmNull_port_tx_mac_sa_get(int unit, int port, pm_info_t pm_info, sal_mac_addr_t mac_addr)
    579 {
    580     return (SOC_E_NONE);
    581 }
    582 
    583 int pmNull_port_ability_local_get (int unit, int port, pm_info_t pm_info, int phy_flags, 
    584                                    portmod_port_ability_t* ability)
    585 {
    586     return(_pm_null_port_ability_get(unit, port, ability));
    587 }
    588 
    589 int pmNull_port_max_packet_size_set (int unit, int port,
    590                                      pm_info_t pm_info, int value)
    591 {
    592     return (SOC_E_NONE);
    593 }
    594 
    595 int pmNull_port_max_packet_size_get (int unit, int port,
    596                                      pm_info_t pm_info, int* value)
    597 {
    598     *value = 0x3fe8; 
    599     return (SOC_E_NONE);
    600 }
    601 
    602 int pmNull_port_local_fault_status_get(int unit, int port,
    603                                        pm_info_t pm_info, int* value)
    604 {
    605     *value=0;
    606     return (SOC_E_NONE);
    607 }
    608 
    609 int pmNull_port_local_fault_control_set(int unit, int port, pm_info_t pm_info,
    610                     const portmod_local_fault_control_t* control)
    611 {
    612     return (SOC_E_NONE);
    613 }
    614 
    615 int pmNull_port_local_fault_control_get(int unit, int port, pm_info_t pm_info,
    616                     portmod_local_fault_control_t* control)
    617 {
    618     control->enable = 0;
    619     control->drop_tx_on_fault = 0;
    620     return (SOC_E_NONE);
    621 }
    622 
    623 int pmNull_port_remote_fault_status_get(int unit, int port,
    624                                         pm_info_t pm_info, int* value)
    625 {
    626     *value=0;
    627     return (SOC_E_NONE);
    628 }
    629 
    630 int pmNull_port_remote_fault_control_set(int unit, int port, pm_info_t pm_info,
    631                     const portmod_remote_fault_control_t* control)
    632 {
    633     return (SOC_E_NONE);
    634 }
    635 
    636 int pmNull_port_remote_fault_control_get(int unit, int port, pm_info_t pm_info,
    637                     portmod_remote_fault_control_t* control)
    638 {
    639     control->enable = 0;
    640     control->drop_tx_on_fault = 0;
    641     return (SOC_E_NONE);
    642 }
    643 
    644 int pmNull_port_check_legacy_phy (int unit, int port, pm_info_t pm_info, int *legacy_phy)
    645 {
    646     *legacy_phy = 0;
    647     return (SOC_E_NONE);
    648 }
    649 
    650 int pmNull_port_failover_mode_set(int unit, int port, pm_info_t pm_info, phymod_failover_mode_t failover)
    651 {
    652     return (SOC_E_NONE);
    653 }
    654 
    655 int pmNull_port_failover_mode_get(int unit, int port, pm_info_t pm_info, phymod_failover_mode_t* failover)
    656 {
    657     return (SOC_E_NONE);
    658 }
    659 
    660 int pmNull_port_tx_average_ipg_set (int unit, int port, pm_info_t pm_info, int value)
    661 {
    662     return (SOC_E_NONE);
    663 }
    664 
    665 int pmNull_port_tx_average_ipg_get (int unit, int port, pm_info_t pm_info, int* value)
    666 {
    667     return (SOC_E_NONE);
    668 }
    669 
    670 int pmNull_port_phy_link_up_event(int unit, int port, pm_info_t pm_info)
    671 {
    672     return (SOC_E_NONE);
    673 }
    674 
    675 int pmNull_port_phy_link_down_event(int unit, int port, pm_info_t pm_info)
    676 {
    677     return (SOC_E_NONE);
    678 }
    679 
    680 int pmNull_port_speed_get(int unit, int port, pm_info_t pm_info, int* speed)
    681 {
    682     return (SOC_E_NONE);
    683 }
    684 
    685 int pmNull_port_warmboot_db_restore(int unit, int port, pm_info_t pm_info,
    686                          const portmod_port_interface_config_t *f_intf_config,
    687                          const portmod_port_init_config_t      *f_init_config,
    688                          const phymod_operation_mode_t phy_op_mode)
    689 {
    690     return (SOC_E_NONE);
    691 }
    692 
    693 int pmNull_port_medium_config_set(int unit, int port, pm_info_t pm_info, soc_port_medium_t medium, soc_phy_config_t* config)
    694 {
    695     return (SOC_E_NONE);
    696 }
    697 
    698 int pmNull_port_medium_config_get(int unit, int port, pm_info_t pm_info, soc_port_medium_t medium, soc_phy_config_t* config)
    699 {
    700     return (SOC_E_NONE);
    701 }
    702 
    703 int pmNull_port_medium_get(int unit, int port, pm_info_t pm_info, soc_port_medium_t* medium)
    704 {
    705     return (SOC_E_NONE);
    706 }
    707 
    708 int pmNull_port_drain_cell_get(int unit, int port,
    709            pm_info_t pm_info, portmod_drain_cells_t *drain_cells)
    710 {
    711     return SOC_E_NONE;
    712 }
    713 
    714 int pmNull_port_drain_cell_stop (int unit, int port,
    715            pm_info_t pm_info, const portmod_drain_cells_t *drain_cells)
    716 {
    717     return (SOC_E_NONE);
    718 }
    719 
    720 int pmNull_port_drain_cell_start(int unit, int port, pm_info_t pm_info)
    721 {
    722     return SOC_E_NONE;
    723 }
    724 
    725 int pmNull_port_egress_queue_drain_get(int unit, int port,
    726                    pm_info_t pm_info, uint64 *ctrl, int *rx)
    727 {
    728     return SOC_E_NONE;
    729 }
    730 
    731 int pmNull_port_mac_reset_set(int unit, int port,
    732                    pm_info_t pm_info, int val)
    733 {
    734     return SOC_E_NONE;
    735 }
    736 
    737 int pmNull_port_mac_reset_get(int unit, int port, pm_info_t pm_info, int* val)
    738 {
    739     *val = 0;
    740     return SOC_E_NONE;
    741 }
    742 
    743 int pmNull_port_txfifo_cell_cnt_get(int unit, int port,
    744                        pm_info_t pm_info, uint32* fval)
    745 {
    746      *fval =0;
    747       return SOC_E_NONE;
    748 }
    749 
    750 int pmNull_port_soft_reset_toggle(int unit, int port, pm_info_t pm_info, int idx)
    751 {
    752     return SOC_E_NONE;
    753 }
    754 
    755 int pmNull_port_drain_cells_rx_enable (int unit, int port,
    756                    pm_info_t pm_info, int rx_en)
    757 {
    758     return SOC_E_NONE;
    759 }
    760 
    761 int pmNull_port_egress_queue_drain_rx_en(int unit, int port,
    762                    pm_info_t pm_info, int rx_en)
    763 {
    764     return SOC_E_NONE;
    765 }
    766 
    767 int pmNull_port_mac_ctrl_set(int unit, int port,
    768                    pm_info_t pm_info, uint64 ctrl)
    769 {
    770     return SOC_E_NONE;
    771 }
    772 
    773 int pmNull_port_flow_control_set (int unit, int port, pm_info_t pm_info,
    774                                   int merge_mode_en, int parallel_fc_en)
    775 {
    776     return SOC_E_NONE;
    777 }
    778 
    779 int pmNull_port_mode_set(int unit, soc_port_t port,
    780                      pm_info_t pm_info, const portmod_port_mode_info_t *mode)
    781 {
    782     return SOC_E_NONE;
    783 }
    784 
    785 int pmNull_port_mode_get(int unit, soc_port_t port,
    786                      pm_info_t pm_info, portmod_port_mode_info_t *mode)
    787 {
    788     return SOC_E_NONE;
    789 }
    790 
    791 int pmNull_port_speed_config_set(int unit, int port, pm_info_t pm_info,
    792                                  const portmod_speed_config_t* speed_config)
    793 {
    794     return SOC_E_NONE;
    795 }
    796 
    797 int pmNull_port_speed_config_get(int unit, int port, pm_info_t pm_info,
    798                                  portmod_speed_config_t* speed_config)
    799 {
    800     return SOC_E_NONE;
    801 }
    802 
    803 int pmNull_port_speed_ability_local_get(int unit, int port, pm_info_t pm_info,
    804                                         int max_num_abilities,
    805                                         portmod_port_speed_ability_t* abilities,
    806                                         int* num_abilities)
    807 {
    808     return SOC_E_NONE;
    809 }
    810 #endif /* PORTMOD_PMNULL_SUPPORT */
    811 
    812 #undef _ERR_MSG_MODULE_NAME