1a4cc719bSEmanuele Giuseppe Esposito /* 2a4cc719bSEmanuele Giuseppe Esposito * libqos driver framework 3a4cc719bSEmanuele Giuseppe Esposito * 4a4cc719bSEmanuele Giuseppe Esposito * Copyright (c) 2018 Emanuele Giuseppe Esposito <e.emanuelegiuseppe@gmail.com> 5a4cc719bSEmanuele Giuseppe Esposito * 6a4cc719bSEmanuele Giuseppe Esposito * This library is free software; you can redistribute it and/or 7a4cc719bSEmanuele Giuseppe Esposito * modify it under the terms of the GNU Lesser General Public 8*dc0ad02dSThomas Huth * License version 2.1 as published by the Free Software Foundation. 9a4cc719bSEmanuele Giuseppe Esposito * 10a4cc719bSEmanuele Giuseppe Esposito * This library is distributed in the hope that it will be useful, 11a4cc719bSEmanuele Giuseppe Esposito * but WITHOUT ANY WARRANTY; without even the implied warranty of 12a4cc719bSEmanuele Giuseppe Esposito * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13a4cc719bSEmanuele Giuseppe Esposito * Lesser General Public License for more details. 14a4cc719bSEmanuele Giuseppe Esposito * 15a4cc719bSEmanuele Giuseppe Esposito * You should have received a copy of the GNU Lesser General Public 16a4cc719bSEmanuele Giuseppe Esposito * License along with this library; if not, see <http://www.gnu.org/licenses/> 17a4cc719bSEmanuele Giuseppe Esposito */ 18a4cc719bSEmanuele Giuseppe Esposito 19a8b991b5SMarkus Armbruster #ifndef QGRAPH_E1000E_H 20a8b991b5SMarkus Armbruster #define QGRAPH_E1000E_H 21a4cc719bSEmanuele Giuseppe Esposito 22a4cc719bSEmanuele Giuseppe Esposito #include "libqos/qgraph.h" 23a4cc719bSEmanuele Giuseppe Esposito #include "pci.h" 24a4cc719bSEmanuele Giuseppe Esposito 25a4cc719bSEmanuele Giuseppe Esposito #define E1000E_RX0_MSG_ID (0) 26a4cc719bSEmanuele Giuseppe Esposito #define E1000E_TX0_MSG_ID (1) 27a4cc719bSEmanuele Giuseppe Esposito #define E1000E_OTHER_MSG_ID (2) 28a4cc719bSEmanuele Giuseppe Esposito 29a4cc719bSEmanuele Giuseppe Esposito #define E1000E_TDLEN (0x3808) 30a4cc719bSEmanuele Giuseppe Esposito #define E1000E_TDT (0x3818) 31a4cc719bSEmanuele Giuseppe Esposito #define E1000E_RDLEN (0x2808) 32a4cc719bSEmanuele Giuseppe Esposito #define E1000E_RDT (0x2818) 33a4cc719bSEmanuele Giuseppe Esposito 34a4cc719bSEmanuele Giuseppe Esposito typedef struct QE1000E QE1000E; 35a4cc719bSEmanuele Giuseppe Esposito typedef struct QE1000E_PCI QE1000E_PCI; 36a4cc719bSEmanuele Giuseppe Esposito 37a4cc719bSEmanuele Giuseppe Esposito struct QE1000E { 38a4cc719bSEmanuele Giuseppe Esposito uint64_t tx_ring; 39a4cc719bSEmanuele Giuseppe Esposito uint64_t rx_ring; 40a4cc719bSEmanuele Giuseppe Esposito }; 41a4cc719bSEmanuele Giuseppe Esposito 42a4cc719bSEmanuele Giuseppe Esposito struct QE1000E_PCI { 43a4cc719bSEmanuele Giuseppe Esposito QOSGraphObject obj; 44a4cc719bSEmanuele Giuseppe Esposito QPCIDevice pci_dev; 45a4cc719bSEmanuele Giuseppe Esposito QPCIBar mac_regs; 46a4cc719bSEmanuele Giuseppe Esposito QE1000E e1000e; 47a4cc719bSEmanuele Giuseppe Esposito }; 48a4cc719bSEmanuele Giuseppe Esposito 49a4cc719bSEmanuele Giuseppe Esposito void e1000e_wait_isr(QE1000E *d, uint16_t msg_id); 50a4cc719bSEmanuele Giuseppe Esposito void e1000e_tx_ring_push(QE1000E *d, void *descr); 51a4cc719bSEmanuele Giuseppe Esposito void e1000e_rx_ring_push(QE1000E *d, void *descr); 52a4cc719bSEmanuele Giuseppe Esposito 53a4cc719bSEmanuele Giuseppe Esposito #endif 54