me8100.c
changeset 18 d1686272f84d
parent 15 b9baa645576a
child 22 7b722739e329
equal deleted inserted replaced
17:b51d4c6816e7 18:d1686272f84d
   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