1*2d9fd380Sjfb8856606 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) 2*2d9fd380Sjfb8856606 * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved. 3*2d9fd380Sjfb8856606 */ 4*2d9fd380Sjfb8856606 5*2d9fd380Sjfb8856606 #include <stdbool.h> 6*2d9fd380Sjfb8856606 7*2d9fd380Sjfb8856606 #include "ionic_mac_api.h" 8*2d9fd380Sjfb8856606 9*2d9fd380Sjfb8856606 int32_t ionic_init_mac(struct ionic_hw * hw)10*2d9fd380Sjfb8856606ionic_init_mac(struct ionic_hw *hw) 11*2d9fd380Sjfb8856606 { 12*2d9fd380Sjfb8856606 int err = 0; 13*2d9fd380Sjfb8856606 14*2d9fd380Sjfb8856606 IONIC_PRINT_CALL(); 15*2d9fd380Sjfb8856606 16*2d9fd380Sjfb8856606 /* 17*2d9fd380Sjfb8856606 * Set the mac type 18*2d9fd380Sjfb8856606 */ 19*2d9fd380Sjfb8856606 ionic_set_mac_type(hw); 20*2d9fd380Sjfb8856606 21*2d9fd380Sjfb8856606 switch (hw->mac.type) { 22*2d9fd380Sjfb8856606 case IONIC_MAC_CAPRI: 23*2d9fd380Sjfb8856606 break; 24*2d9fd380Sjfb8856606 default: 25*2d9fd380Sjfb8856606 err = -EINVAL; 26*2d9fd380Sjfb8856606 break; 27*2d9fd380Sjfb8856606 } 28*2d9fd380Sjfb8856606 29*2d9fd380Sjfb8856606 return err; 30*2d9fd380Sjfb8856606 } 31*2d9fd380Sjfb8856606 32*2d9fd380Sjfb8856606 int32_t ionic_set_mac_type(struct ionic_hw * hw)33*2d9fd380Sjfb8856606ionic_set_mac_type(struct ionic_hw *hw) 34*2d9fd380Sjfb8856606 { 35*2d9fd380Sjfb8856606 int err = 0; 36*2d9fd380Sjfb8856606 37*2d9fd380Sjfb8856606 IONIC_PRINT_CALL(); 38*2d9fd380Sjfb8856606 39*2d9fd380Sjfb8856606 if (hw->vendor_id != IONIC_PENSANDO_VENDOR_ID) { 40*2d9fd380Sjfb8856606 IONIC_PRINT(ERR, "Unsupported vendor id: %" PRIx32 "", 41*2d9fd380Sjfb8856606 hw->vendor_id); 42*2d9fd380Sjfb8856606 return -EINVAL; 43*2d9fd380Sjfb8856606 } 44*2d9fd380Sjfb8856606 45*2d9fd380Sjfb8856606 switch (hw->device_id) { 46*2d9fd380Sjfb8856606 case IONIC_DEV_ID_ETH_PF: 47*2d9fd380Sjfb8856606 case IONIC_DEV_ID_ETH_VF: 48*2d9fd380Sjfb8856606 case IONIC_DEV_ID_ETH_MGMT: 49*2d9fd380Sjfb8856606 hw->mac.type = IONIC_MAC_CAPRI; 50*2d9fd380Sjfb8856606 break; 51*2d9fd380Sjfb8856606 default: 52*2d9fd380Sjfb8856606 err = -EINVAL; 53*2d9fd380Sjfb8856606 IONIC_PRINT(ERR, "Unsupported device id: %" PRIx32 "", 54*2d9fd380Sjfb8856606 hw->device_id); 55*2d9fd380Sjfb8856606 break; 56*2d9fd380Sjfb8856606 } 57*2d9fd380Sjfb8856606 58*2d9fd380Sjfb8856606 IONIC_PRINT(INFO, "Mac: %d (%d)", 59*2d9fd380Sjfb8856606 hw->mac.type, err); 60*2d9fd380Sjfb8856606 61*2d9fd380Sjfb8856606 return err; 62*2d9fd380Sjfb8856606 } 63*2d9fd380Sjfb8856606 64