1*76668754SAndrew Boyer /* SPDX-License-Identifier: BSD-3-Clause 2a5205992SAndrew Boyer * Copyright 2018-2022 Advanced Micro Devices, Inc. 35ef51809SAlfredo Cardigliano */ 45ef51809SAlfredo Cardigliano 5e40303ebSSunil Kumar Kori #include <stdbool.h> 6e40303ebSSunil Kumar Kori 75ef51809SAlfredo Cardigliano #include "ionic_mac_api.h" 85ef51809SAlfredo Cardigliano 95ef51809SAlfredo Cardigliano int32_t ionic_init_mac(struct ionic_hw * hw)105ef51809SAlfredo Cardiglianoionic_init_mac(struct ionic_hw *hw) 115ef51809SAlfredo Cardigliano { 125ef51809SAlfredo Cardigliano int err = 0; 135ef51809SAlfredo Cardigliano 145ef51809SAlfredo Cardigliano IONIC_PRINT_CALL(); 155ef51809SAlfredo Cardigliano 165ef51809SAlfredo Cardigliano /* 175ef51809SAlfredo Cardigliano * Set the mac type 185ef51809SAlfredo Cardigliano */ 195ef51809SAlfredo Cardigliano ionic_set_mac_type(hw); 205ef51809SAlfredo Cardigliano 215ef51809SAlfredo Cardigliano switch (hw->mac.type) { 225ef51809SAlfredo Cardigliano case IONIC_MAC_CAPRI: 235ef51809SAlfredo Cardigliano break; 245ef51809SAlfredo Cardigliano default: 255ef51809SAlfredo Cardigliano err = -EINVAL; 265ef51809SAlfredo Cardigliano break; 275ef51809SAlfredo Cardigliano } 285ef51809SAlfredo Cardigliano 295ef51809SAlfredo Cardigliano return err; 305ef51809SAlfredo Cardigliano } 315ef51809SAlfredo Cardigliano 325ef51809SAlfredo Cardigliano int32_t ionic_set_mac_type(struct ionic_hw * hw)335ef51809SAlfredo Cardiglianoionic_set_mac_type(struct ionic_hw *hw) 345ef51809SAlfredo Cardigliano { 355ef51809SAlfredo Cardigliano int err = 0; 365ef51809SAlfredo Cardigliano 375ef51809SAlfredo Cardigliano IONIC_PRINT_CALL(); 385ef51809SAlfredo Cardigliano 395ef51809SAlfredo Cardigliano if (hw->vendor_id != IONIC_PENSANDO_VENDOR_ID) { 405ef51809SAlfredo Cardigliano IONIC_PRINT(ERR, "Unsupported vendor id: %" PRIx32 "", 415ef51809SAlfredo Cardigliano hw->vendor_id); 425ef51809SAlfredo Cardigliano return -EINVAL; 435ef51809SAlfredo Cardigliano } 445ef51809SAlfredo Cardigliano 455ef51809SAlfredo Cardigliano switch (hw->device_id) { 465ef51809SAlfredo Cardigliano case IONIC_DEV_ID_ETH_PF: 475ef51809SAlfredo Cardigliano case IONIC_DEV_ID_ETH_VF: 485ef51809SAlfredo Cardigliano case IONIC_DEV_ID_ETH_MGMT: 495ef51809SAlfredo Cardigliano hw->mac.type = IONIC_MAC_CAPRI; 505ef51809SAlfredo Cardigliano break; 515ef51809SAlfredo Cardigliano default: 525ef51809SAlfredo Cardigliano err = -EINVAL; 535ef51809SAlfredo Cardigliano IONIC_PRINT(ERR, "Unsupported device id: %" PRIx32 "", 545ef51809SAlfredo Cardigliano hw->device_id); 555ef51809SAlfredo Cardigliano break; 565ef51809SAlfredo Cardigliano } 575ef51809SAlfredo Cardigliano 585ef51809SAlfredo Cardigliano IONIC_PRINT(INFO, "Mac: %d (%d)", 595ef51809SAlfredo Cardigliano hw->mac.type, err); 605ef51809SAlfredo Cardigliano 615ef51809SAlfredo Cardigliano return err; 625ef51809SAlfredo Cardigliano } 63