xref: /dpdk/drivers/net/ionic/ionic.h (revision 5ef518098ec6cbed87e84fe3b2d748aa6fda52c1)
1*5ef51809SAlfredo Cardigliano /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2*5ef51809SAlfredo Cardigliano  * Copyright(c) 2018-2019 Pensando Systems, Inc. All rights reserved.
3*5ef51809SAlfredo Cardigliano  */
4*5ef51809SAlfredo Cardigliano 
5*5ef51809SAlfredo Cardigliano #ifndef _IONIC_H_
6*5ef51809SAlfredo Cardigliano #define _IONIC_H_
7*5ef51809SAlfredo Cardigliano 
8*5ef51809SAlfredo Cardigliano #include <stdint.h>
9*5ef51809SAlfredo Cardigliano #include <inttypes.h>
10*5ef51809SAlfredo Cardigliano 
11*5ef51809SAlfredo Cardigliano #include "ionic_dev.h"
12*5ef51809SAlfredo Cardigliano #include "ionic_if.h"
13*5ef51809SAlfredo Cardigliano #include "ionic_osdep.h"
14*5ef51809SAlfredo Cardigliano 
15*5ef51809SAlfredo Cardigliano #define IONIC_DRV_NAME			"ionic"
16*5ef51809SAlfredo Cardigliano #define IONIC_DRV_DESCRIPTION		"Pensando Ethernet NIC Driver"
17*5ef51809SAlfredo Cardigliano #define IONIC_DRV_VERSION		"0.11.0-49"
18*5ef51809SAlfredo Cardigliano 
19*5ef51809SAlfredo Cardigliano /* Vendor ID */
20*5ef51809SAlfredo Cardigliano #define IONIC_PENSANDO_VENDOR_ID	0x1dd8
21*5ef51809SAlfredo Cardigliano 
22*5ef51809SAlfredo Cardigliano /* Device IDs */
23*5ef51809SAlfredo Cardigliano #define IONIC_DEV_ID_ETH_PF		0x1002
24*5ef51809SAlfredo Cardigliano #define IONIC_DEV_ID_ETH_VF		0x1003
25*5ef51809SAlfredo Cardigliano #define IONIC_DEV_ID_ETH_MGMT		0x1004
26*5ef51809SAlfredo Cardigliano 
27*5ef51809SAlfredo Cardigliano enum ionic_mac_type {
28*5ef51809SAlfredo Cardigliano 	IONIC_MAC_UNKNOWN = 0,
29*5ef51809SAlfredo Cardigliano 	IONIC_MAC_CAPRI,
30*5ef51809SAlfredo Cardigliano 	IONIC_NUM_MACS
31*5ef51809SAlfredo Cardigliano };
32*5ef51809SAlfredo Cardigliano 
33*5ef51809SAlfredo Cardigliano struct ionic_mac_info {
34*5ef51809SAlfredo Cardigliano 	enum ionic_mac_type type;
35*5ef51809SAlfredo Cardigliano };
36*5ef51809SAlfredo Cardigliano 
37*5ef51809SAlfredo Cardigliano struct ionic_hw {
38*5ef51809SAlfredo Cardigliano 	struct ionic_mac_info mac;
39*5ef51809SAlfredo Cardigliano 	uint16_t device_id;
40*5ef51809SAlfredo Cardigliano 	uint16_t vendor_id;
41*5ef51809SAlfredo Cardigliano };
42*5ef51809SAlfredo Cardigliano 
43*5ef51809SAlfredo Cardigliano /*
44*5ef51809SAlfredo Cardigliano  * Structure to store private data for each driver instance (for each adapter).
45*5ef51809SAlfredo Cardigliano  */
46*5ef51809SAlfredo Cardigliano struct ionic_adapter {
47*5ef51809SAlfredo Cardigliano 	struct ionic_hw hw;
48*5ef51809SAlfredo Cardigliano 	struct ionic_dev idev;
49*5ef51809SAlfredo Cardigliano 	struct ionic_dev_bar bars[IONIC_BARS_MAX];
50*5ef51809SAlfredo Cardigliano 	struct ionic_identity	ident;
51*5ef51809SAlfredo Cardigliano 	uint32_t num_bars;
52*5ef51809SAlfredo Cardigliano 	bool is_mgmt_nic;
53*5ef51809SAlfredo Cardigliano 	struct rte_pci_device *pci_dev;
54*5ef51809SAlfredo Cardigliano 	LIST_ENTRY(ionic_adapter) pci_adapters;
55*5ef51809SAlfredo Cardigliano };
56*5ef51809SAlfredo Cardigliano 
57*5ef51809SAlfredo Cardigliano int ionic_dev_cmd_wait_check(struct ionic_dev *idev, unsigned long max_wait);
58*5ef51809SAlfredo Cardigliano int ionic_setup(struct ionic_adapter *adapter);
59*5ef51809SAlfredo Cardigliano 
60*5ef51809SAlfredo Cardigliano int ionic_identify(struct ionic_adapter *adapter);
61*5ef51809SAlfredo Cardigliano int ionic_init(struct ionic_adapter *adapter);
62*5ef51809SAlfredo Cardigliano int ionic_reset(struct ionic_adapter *adapter);
63*5ef51809SAlfredo Cardigliano 
64*5ef51809SAlfredo Cardigliano #endif /* _IONIC_H_ */
65