1/* 2 * Copyright (c) 2015-2016 Quantenna Communications, Inc. 3 * All rights reserved. 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 */ 16 17#ifndef _QTN_FMAC_PCIE_H_ 18#define _QTN_FMAC_PCIE_H_ 19 20#include <linux/dma-mapping.h> 21#include <linux/io.h> 22 23#include "pcie_regs_pearl.h" 24#include "pcie_ipc.h" 25#include "shm_ipc.h" 26 27struct bus; 28 29struct qtnf_pcie_bus_priv { 30 struct pci_dev *pdev; 31 32 /* lock for irq configuration changes */ 33 spinlock_t irq_lock; 34 35 /* lock for tx reclaim operations */ 36 spinlock_t tx_reclaim_lock; 37 /* lock for tx0 operations */ 38 spinlock_t tx0_lock; 39 u8 msi_enabled; 40 u8 tx_stopped; 41 int mps; 42 43 struct workqueue_struct *workqueue; 44 struct tasklet_struct reclaim_tq; 45 46 void __iomem *sysctl_bar; 47 void __iomem *epmem_bar; 48 void __iomem *dmareg_bar; 49 50 struct qtnf_shm_ipc shm_ipc_ep_in; 51 struct qtnf_shm_ipc shm_ipc_ep_out; 52 53 struct qtnf_pcie_bda __iomem *bda; 54 void __iomem *pcie_reg_base; 55 56 u16 tx_bd_num; 57 u16 rx_bd_num; 58 59 struct sk_buff **tx_skb; 60 struct sk_buff **rx_skb; 61 62 struct qtnf_tx_bd *tx_bd_vbase; 63 dma_addr_t tx_bd_pbase; 64 65 struct qtnf_rx_bd *rx_bd_vbase; 66 dma_addr_t rx_bd_pbase; 67 68 dma_addr_t bd_table_paddr; 69 void *bd_table_vaddr; 70 u32 bd_table_len; 71 72 u32 rx_bd_w_index; 73 u32 rx_bd_r_index; 74 75 u32 tx_bd_w_index; 76 u32 tx_bd_r_index; 77 78 u32 pcie_irq_mask; 79 80 /* diagnostics stats */ 81 u32 pcie_irq_count; 82 u32 pcie_irq_rx_count; 83 u32 pcie_irq_tx_count; 84 u32 pcie_irq_uf_count; 85 u32 tx_full_count; 86 u32 tx_done_count; 87 u32 tx_reclaim_done; 88 u32 tx_reclaim_req; 89}; 90 91#endif /* _QTN_FMAC_PCIE_H_ */ 92