12 #include <linux/version.h>
13 #include <linux/device.h>
14 #include <linux/module.h>
15 #include <linux/platform_device.h>
16 #include <linux/uio_driver.h>
18 #include <linux/interrupt.h>
19 #include <linux/pci.h>
20 #include <linux/msi.h>
21 #include <linux/delay.h>
22 #ifdef CONFIG_GENERIC_GPIO
23 # include <linux/gpio.h>
25 #ifdef CONFIG_PARPORT_NOT_PC
26 # include <linux/parport.h>
28 #include <linux/aer.h>
43 # define LAS0BRD_ENDIAN 0x01000000
47 # define INTCSR_INT1_Enable 0x01
48 # define INTCSR_INT1_Polarity 0x02
49 # define INTCSR_INT1_Status 0x04
50 # define INTCSR_INT2_Enable 0x08
51 # define INTCSR_INT2_Polarity 0x10
52 # define INTCSR_INT2_Status 0x20
53 # define INTCSR_PCI_Enable 0x40
54 # define INTCSR_SW_INTR 0x80
57 # define GPIOC_pin0_fn 1
58 # define GPIOC_pin0_dir 2
59 # define GPIOC_pin0_data 4
60 # define GPIOC_pin_fn(N) (GPIOC_pin0_fn<<(3*(N)))
61 # define GPIOC_pin_dir(N) (GPIOC_pin0_dir<<(3*(N)))
62 # define GPIOC_pin_data(N) (GPIOC_pin0_data<<(3*(N)))
66 # define GPIOC_num_pins 4
74 #define BIGEND9056 0x0C
75 # define BIGEND9056_BIG (1<<2)
77 #define INTCSR9056 0x68
78 # define INTCSR9056_PCI_Enable (1<<8)
80 # define INTCSR9056_DBL_Enable (1<<9)
81 # define INTCSR9056_ABT_Enable (1<<10)
82 # define INTCSR9056_LCL_Enable (1<<11)
83 # define INTCSR9056_DBL_Status (1<<13)
84 # define INTCSR9056_ABT_Status (1<<14)
85 # define INTCSR9056_LCL_Status (1<<15)
87 # define INTCSR9056_LBL_Enable (1<<17)
88 # define INTCSR9056_DM0_Enable (1<<18)
89 # define INTCSR9056_DM1_Enable (1<<19)
90 # define INTCSR9056_LBL_Status (1<<20)
91 # define INTCSR9056_DM0_Status (1<<21)
92 # define INTCSR9056_DM1_Status (1<<22)
94 # define INTCSR9056_Status (INTCSR9056_DBL_Status| \
95 INTCSR9056_ABT_Status|INTCSR9056_LCL_Status|INTCSR9056_LBL_Status| \
96 INTCSR9056_DM0_Status|INTCSR9056_DM1_Status)
102 #define CTRLMain 0x004
103 # define CTRL_BeEnd 0x02000000
104 # define CTRL_LeEnd 0x00000040
106 #define IRQFlag 0x008
107 # define IRQ_LinkChg 0x40
108 # define IRQ_BufFull 0x20
109 # define IRQ_HWMapped 0x10
110 # define IRQ_Event 0x08
111 # define IRQ_Heartbeat 0x04
112 # define IRQ_FIFOFull 0x02
113 # define IRQ_RXErr 0x01
115 #define IRQEnable 0x00c
117 # define IRQ_Enable 0x80000000
119 # define IRQ_PCIee 0x40000000
121 #define IRQ_Enable_ALL (IRQ_Enable|IRQ_PCIee)
131 #define FPGAVER_EVR300 0x17
133 #define FPGAVersion 0x02c
134 # define FPGAVer_FF 0xff000000
140 struct pci_dev *pdev;
141 unsigned int mrftype;
142 unsigned int irqmode;
143 unsigned int intrcount;
144 unsigned int usemie:1;
145 unsigned int msienabled:1;
147 #if defined(CONFIG_GENERIC_GPIO) || defined(CONFIG_PARPORT_NOT_PC)
150 #ifdef CONFIG_GENERIC_GPIO
151 struct gpio_chip gpio;
154 #ifdef CONFIG_PARPORT_NOT_PC
155 unsigned int ppenable;
156 const struct ppcable *cable;
157 struct parport *port;
161 #ifdef CONFIG_PARPORT_NOT_PC
162 void mrf_pp_setup(
struct mrf_priv* dev);
163 void mrf_pp_cleanup(
struct mrf_priv* priv);
165 #ifdef CONFIG_GENERIC_GPIO
166 void mrf_gpio_setup(
struct mrf_priv *priv);
167 void mrf_gpio_cleanup(
struct mrf_priv *priv);