1 /***************************************************************************
2  * Copyright (c) 2005-2009, Broadcom Corporation.
3  *
4  *  Name: crystalhd_lnx . c
5  *
6  *  Description:
7  *		BCM70012 Linux driver
8  *
9  *  HISTORY:
10  *
11  **********************************************************************
12  * This file is part of the crystalhd device driver.
13  *
14  * This driver is free software; you can redistribute it and/or modify
15  * it under the terms of the GNU General Public License as published by
16  * the Free Software Foundation, version 2 of the License.
17  *
18  * This driver is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this driver.  If not, see <http://www.gnu.org/licenses/>.
25  **********************************************************************/
26 
27 #ifndef _CRYSTALHD_LNX_H_
28 #define _CRYSTALHD_LNX_H_
29 
30 #include <linux/module.h>
31 #include <linux/kernel.h>
32 #include <linux/errno.h>
33 #include <linux/string.h>
34 #include <linux/mm.h>
35 #include <linux/tty.h>
36 #include <linux/slab.h>
37 #include <linux/delay.h>
38 #include <linux/fb.h>
39 #include <linux/pci.h>
40 #include <linux/init.h>
41 #include <linux/interrupt.h>
42 #include <linux/pagemap.h>
43 #include <linux/vmalloc.h>
44 
45 #include <linux/io.h>
46 #include <asm/irq.h>
47 #include <asm/pgtable.h>
48 #include <asm/system.h>
49 #include <linux/uaccess.h>
50 
51 #include "crystalhd_cmds.h"
52 
53 #define CRYSTAL_HD_NAME		"Broadcom Crystal HD Decoder (BCM70012) Driver"
54 
55 
56 /* OS specific PCI information structure and adapter information. */
57 struct crystalhd_adp {
58 	/* Hardware borad/PCI specifics */
59 	char			name[32];
60 	struct pci_dev		*pdev;
61 
62 	unsigned long		pci_mem_start;
63 	uint32_t		pci_mem_len;
64 	void			*addr;
65 
66 	unsigned long		pci_i2o_start;
67 	uint32_t		pci_i2o_len;
68 	void			*i2o_addr;
69 
70 	unsigned int		drv_data;
71 	unsigned int		dmabits;	/* 32 | 64 */
72 	unsigned int		registered;
73 	unsigned int		present;
74 	unsigned int		msi;
75 
76 	spinlock_t		lock;
77 
78 	/* API Related */
79 	int		chd_dec_major;
80 	unsigned int		cfg_users;
81 
82 	struct crystalhd_ioctl_data	*idata_free_head;	/* ioctl data pool */
83 	struct crystalhd_elem		*elem_pool_head;	/* Queue element pool */
84 
85 	struct crystalhd_cmd	cmds;
86 
87 	struct crystalhd_dio_req	*ua_map_free_head;
88 	struct pci_pool		*fill_byte_pool;
89 };
90 
91 
92 struct crystalhd_adp *chd_get_adp(void);
93 void chd_set_log_level(struct crystalhd_adp *adp, char *arg);
94 
95 #endif
96 
97