132 unsigned int , unsigned long ); |
132 unsigned int , unsigned long ); |
133 static int me8100_fasync(int, struct file *, int); |
133 static int me8100_fasync(int, struct file *, int); |
134 static void me8100_isr(int, void *, struct pt_regs *); |
134 static void me8100_isr(int, void *, struct pt_regs *); |
135 static ssize_t me8100_read(struct file *, char *, size_t, loff_t *); |
135 static ssize_t me8100_read(struct file *, char *, size_t, loff_t *); |
136 static ssize_t me8100_write(struct file *, const char *, size_t, loff_t *); |
136 static ssize_t me8100_write(struct file *, const char *, size_t, loff_t *); |
|
137 static unsigned int me8100_poll(struct file *, struct poll_table_struct *); |
137 |
138 |
138 static int me8100_init_board(me8100_info_type *, struct pci_dev *); |
139 static int me8100_init_board(me8100_info_type *, struct pci_dev *); |
139 static int me8100_reset_board(me8100_info_type *); |
140 static int me8100_reset_board(me8100_info_type *); |
140 |
141 |
141 static int me8100_read_id_a(unsigned short *, me8100_info_type *); |
142 static int me8100_read_id_a(unsigned short *, me8100_info_type *); |
183 #endif |
184 #endif |
184 llseek: NULL, /* lseek() */ |
185 llseek: NULL, /* lseek() */ |
185 read: me8100_read, /* read() */ |
186 read: me8100_read, /* read() */ |
186 write: me8100_write, /* write() */ |
187 write: me8100_write, /* write() */ |
187 readdir: NULL, /* readdir() */ |
188 readdir: NULL, /* readdir() */ |
188 poll: NULL, /* poll() */ |
189 poll: me8100_poll, /* poll() */ |
189 ioctl: me8100_ioctl, /* ioctl() */ |
190 ioctl: me8100_ioctl, /* ioctl() */ |
190 mmap: NULL, /* mmap() */ |
191 mmap: NULL, /* mmap() */ |
191 open: me8100_open, /* open() */ |
192 open: me8100_open, /* open() */ |
192 flush: NULL, /* flush() */ |
193 flush: NULL, /* flush() */ |
193 release: me8100_release, /* release() */ |
194 release: me8100_release, /* release() */ |
2287 outw(val, info_vec[DEVICE(minor)].subinfo[SUBDEVICE(minor)].regbase + ME8100_DO_REG); |
2288 outw(val, info_vec[DEVICE(minor)].subinfo[SUBDEVICE(minor)].regbase + ME8100_DO_REG); |
2288 |
2289 |
2289 return len; |
2290 return len; |
2290 } |
2291 } |
2291 |
2292 |
|
2293 static unsigned int me8100_poll(struct file *file_ptr, struct poll_table_struct *wait) |
|
2294 { |
|
2295 int minor = MINOR(file_ptr->f_dentry->d_inode->i_rdev); |
|
2296 me8100_info_type *info = &info_vec[DEVICE(minor)]; |
|
2297 struct me8100_subinfo *subinfo = &info->subinfo[SUBDEVICE(minor)]; |
|
2298 struct me8100_private_data *priv = file_ptr->private_data; |
|
2299 |
|
2300 PDEBUG("*** me8100_poll()\n"); |
|
2301 poll_wait(file_ptr, &subinfo->readq, wait); |
|
2302 PDEBUG("*** me8100_poll()\n"); |
|
2303 |
|
2304 if (priv->last_read >= subinfo->int_seen) return 0; |
|
2305 return POLLIN | POLLRDNORM; |
|
2306 |
|
2307 } |
|
2308 |
2292 /* |
2309 /* |
2293 vim:sts=2 sw=2 aw ai sm: |
2310 vim:sts=2 sw=2 aw ai sm: |
2294 */ |
2311 */ |
2295 |
2312 |