xref: /dpdk/drivers/net/ionic/ionic_mac_api.c (revision 766687540cda3ae3732c4c5d8a37d6de6e8d4161)
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 Cardigliano ionic_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 Cardigliano ionic_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