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