Merge tag 'drm-misc-fixes-2017-10-05' of git://anongit.freedesktop.org/git/drm-misc...
[linux-block.git] / drivers / net / wireless / quantenna / qtnfmac / pearl / pcie_bus_priv.h
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         u8 msi_enabled;
38         int mps;
39
40         struct workqueue_struct *workqueue;
41         struct tasklet_struct reclaim_tq;
42
43         void __iomem *sysctl_bar;
44         void __iomem *epmem_bar;
45         void __iomem *dmareg_bar;
46
47         struct qtnf_shm_ipc shm_ipc_ep_in;
48         struct qtnf_shm_ipc shm_ipc_ep_out;
49
50         struct qtnf_pcie_bda __iomem *bda;
51         void __iomem *pcie_reg_base;
52
53         u16 tx_bd_num;
54         u16 rx_bd_num;
55
56         struct sk_buff **tx_skb;
57         struct sk_buff **rx_skb;
58
59         struct qtnf_tx_bd *tx_bd_vbase;
60         dma_addr_t tx_bd_pbase;
61
62         struct qtnf_rx_bd *rx_bd_vbase;
63         dma_addr_t rx_bd_pbase;
64
65         dma_addr_t bd_table_paddr;
66         void *bd_table_vaddr;
67         u32 bd_table_len;
68
69         u32 rx_bd_w_index;
70         u32 rx_bd_r_index;
71
72         u32 tx_bd_w_index;
73         u32 tx_bd_r_index;
74
75         u32 pcie_irq_mask;
76
77         /* diagnostics stats */
78         u32 pcie_irq_count;
79         u32 pcie_irq_rx_count;
80         u32 pcie_irq_tx_count;
81         u32 pcie_irq_uf_count;
82         u32 tx_full_count;
83         u32 tx_done_count;
84         u32 tx_reclaim_done;
85         u32 tx_reclaim_req;
86 };
87
88 #endif /* _QTN_FMAC_PCIE_H_ */