• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
27 struct bus;
28 
29 struct 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