Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
bc_dts_glob_lnx.h
Go to the documentation of this file.
1 /********************************************************************
2  * Copyright(c) 2006-2009 Broadcom Corporation.
3  *
4  * Name: bc_dts_glob_lnx.h
5  *
6  * Description: Wrapper to Windows dts_glob.h for Link-Linux usage.
7  * The idea is to define additional Linux related defs
8  * in this file to avoid changes to existing Windows
9  * glob file.
10  *
11  * AU
12  *
13  * HISTORY:
14  *
15  ********************************************************************
16  * This header is free software: you can redistribute it and/or modify
17  * it under the terms of the GNU Lesser General Public License as published
18  * by the Free Software Foundation, either version 2.1 of the License.
19  *
20  * This header is distributed in the hope that it will be useful,
21  * but WITHOUT ANY WARRANTY; without even the implied warranty of
22  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23  * GNU Lesser General Public License for more details.
24  * You should have received a copy of the GNU Lesser General Public License
25  * along with this header. If not, see <http://www.gnu.org/licenses/>.
26  *******************************************************************/
27 
28 #ifndef _BC_DTS_GLOB_LNX_H_
29 #define _BC_DTS_GLOB_LNX_H_
30 
31 #ifdef __LINUX_USER__
32 #include <stdio.h>
33 #include <stdlib.h>
34 #include <unistd.h>
35 #include <fcntl.h>
36 #include <ctype.h>
37 #include <string.h>
38 #include <errno.h>
39 #include <netdb.h>
40 #include <sys/time.h>
41 #include <time.h>
42 #include <arpa/inet.h>
43 #include <linux/param.h>
44 #include <linux/ioctl.h>
45 #include <sys/select.h>
46 
47 #define DRVIFLIB_INT_API
48 
49 #endif
50 
51 #include "crystalhd.h"
52 
53 #define CRYSTALHD_API_NAME "crystalhd"
54 #define CRYSTALHD_API_DEV_NAME "/dev/crystalhd"
55 
56 /*
57  * These are SW stack tunable parameters shared
58  * between the driver and the application.
59  */
61  BC_MAX_FW_CMD_BUFF_SZ = 0x40, /* FW passthrough cmd/rsp buffer size */
62  PCI_CFG_SIZE = 256, /* PCI config size buffer */
63  BC_IOCTL_DATA_POOL_SIZE = 8, /* BC_IOCTL_DATA Pool size */
64  BC_LINK_MAX_OPENS = 3, /* Maximum simultaneous opens*/
65  BC_LINK_MAX_SGLS = 1024, /* Maximum SG elements 4M/4K */
66  BC_TX_LIST_CNT = 2, /* Max Tx DMA Rings */
67  BC_RX_LIST_CNT = 8, /* Max Rx DMA Rings*/
68  BC_PROC_OUTPUT_TIMEOUT = 3000, /* Milliseconds */
70 };
71 
75 };
76 
81 };
82 
83 /* FW Passthrough command structure */
87 };
88 
89 struct BC_FW_CMD {
94 };
95 
96 struct BC_HW_TYPE {
101 };
102 
103 struct BC_PCI_CFG {
107 };
108 
113 };
114 
120 };
121 
125 };
126 
127 struct BC_DTS_STATS {
132 
133  /* Stats from App */
142 
143  /* Stats from Driver */
155 
156 };
157 
164  uint32_t DramOffset; /* For debug use only */
165 };
166 
175 };
176 
184 };
185 
191 };
192 
196 };
197 
198 struct BC_CLOCK {
201 };
202 
207  union {
210  struct BC_FW_CMD fwCmd;
222  } u;
223  struct _BC_IOCTL_DATA *next;
224 };
225 
227  DRV_CMD_VERSION = 0, /* Get SW version */
228  DRV_CMD_GET_HWTYPE, /* Get HW version and type Dozer/Tank */
229  DRV_CMD_REG_RD, /* Read Device Register */
230  DRV_CMD_REG_WR, /* Write Device Register */
231  DRV_CMD_FPGA_RD, /* Read FPGA Register */
232  DRV_CMD_FPGA_WR, /* Wrtie FPGA Reister */
233  DRV_CMD_MEM_RD, /* Read Device Memory */
234  DRV_CMD_MEM_WR, /* Write Device Memory */
235  DRV_CMD_RD_PCI_CFG, /* Read PCI Config Space */
236  DRV_CMD_WR_PCI_CFG, /* Write the PCI Configuration Space*/
237  DRV_CMD_FW_DOWNLOAD, /* Download Firmware */
238  DRV_ISSUE_FW_CMD, /* Issue FW Cmd (pass through mode) */
239  DRV_CMD_PROC_INPUT, /* Process Input Sample */
240  DRV_CMD_ADD_RXBUFFS, /* Add Rx side buffers to driver pool */
241  DRV_CMD_FETCH_RXBUFF, /* Get Rx DMAed buffer */
242  DRV_CMD_START_RX_CAP, /* Start Rx Buffer Capture */
243  DRV_CMD_FLUSH_RX_CAP, /* Stop the capture for now...we will enhance this later*/
244  DRV_CMD_GET_DRV_STAT, /* Get Driver Internal Statistics */
245  DRV_CMD_RST_DRV_STAT, /* Reset Driver Internal Statistics */
246  DRV_CMD_NOTIFY_MODE, /* Notify the Mode to driver in which the application is Operating*/
247  DRV_CMD_CHANGE_CLOCK, /* Change the core clock to either save power or improve performance */
248 
249  /* MUST be the last one.. */
250  DRV_CMD_END, /* End of the List.. */
251 };
252 
253 #define BC_IOC_BASE 'b'
254 #define BC_IOC_VOID _IOC_NONE
255 #define BC_IOC_IOWR(nr, type) _IOWR(BC_IOC_BASE, nr, type)
256 #define BC_IOCTL_MB struct BC_IOCTL_DATA
257 
258 #define BCM_IOC_GET_VERSION BC_IOC_IOWR(DRV_CMD_VERSION, BC_IOCTL_MB)
259 #define BCM_IOC_GET_HWTYPE BC_IOC_IOWR(DRV_CMD_GET_HWTYPE, BC_IOCTL_MB)
260 #define BCM_IOC_REG_RD BC_IOC_IOWR(DRV_CMD_REG_RD, BC_IOCTL_MB)
261 #define BCM_IOC_REG_WR BC_IOC_IOWR(DRV_CMD_REG_WR, BC_IOCTL_MB)
262 #define BCM_IOC_MEM_RD BC_IOC_IOWR(DRV_CMD_MEM_RD, BC_IOCTL_MB)
263 #define BCM_IOC_MEM_WR BC_IOC_IOWR(DRV_CMD_MEM_WR, BC_IOCTL_MB)
264 #define BCM_IOC_FPGA_RD BC_IOC_IOWR(DRV_CMD_FPGA_RD, BC_IOCTL_MB)
265 #define BCM_IOC_FPGA_WR BC_IOC_IOWR(DRV_CMD_FPGA_WR, BC_IOCTL_MB)
266 #define BCM_IOC_RD_PCI_CFG BC_IOC_IOWR(DRV_CMD_RD_PCI_CFG, BC_IOCTL_MB)
267 #define BCM_IOC_WR_PCI_CFG BC_IOC_IOWR(DRV_CMD_WR_PCI_CFG, BC_IOCTL_MB)
268 #define BCM_IOC_PROC_INPUT BC_IOC_IOWR(DRV_CMD_PROC_INPUT, BC_IOCTL_MB)
269 #define BCM_IOC_ADD_RXBUFFS BC_IOC_IOWR(DRV_CMD_ADD_RXBUFFS, BC_IOCTL_MB)
270 #define BCM_IOC_FETCH_RXBUFF BC_IOC_IOWR(DRV_CMD_FETCH_RXBUFF, BC_IOCTL_MB)
271 #define BCM_IOC_FW_CMD BC_IOC_IOWR(DRV_ISSUE_FW_CMD, BC_IOCTL_MB)
272 #define BCM_IOC_START_RX_CAP BC_IOC_IOWR(DRV_CMD_START_RX_CAP, BC_IOCTL_MB)
273 #define BCM_IOC_FLUSH_RX_CAP BC_IOC_IOWR(DRV_CMD_FLUSH_RX_CAP, BC_IOCTL_MB)
274 #define BCM_IOC_GET_DRV_STAT BC_IOC_IOWR(DRV_CMD_GET_DRV_STAT, BC_IOCTL_MB)
275 #define BCM_IOC_RST_DRV_STAT BC_IOC_IOWR(DRV_CMD_RST_DRV_STAT, BC_IOCTL_MB)
276 #define BCM_IOC_NOTIFY_MODE BC_IOC_IOWR(DRV_CMD_NOTIFY_MODE, BC_IOCTL_MB)
277 #define BCM_IOC_FW_DOWNLOAD BC_IOC_IOWR(DRV_CMD_FW_DOWNLOAD, BC_IOCTL_MB)
278 #define BCM_IOC_CHG_CLK BC_IOC_IOWR(DRV_CMD_CHANGE_CLOCK, BC_IOCTL_MB)
279 #define BCM_IOC_END BC_IOC_VOID
280 
281 /* Wrapper for main IOCTL data */
283  struct BC_IOCTL_DATA udata; /* IOCTL from App..*/
284  uint32_t u_id; /* Driver specific user ID */
285  uint32_t cmd; /* Cmd ID for driver's use. */
286  void *add_cdata; /* Additional command specific data..*/
287  uint32_t add_cdata_sz; /* Additional command specific data size */
288  struct crystalhd_ioctl_data *next; /* List/Fifo management */
289 };
290 
295 };
296 
297 #endif