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