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