📄 pcl725.c
字号:
/* * Driver for PCL725 and clones * David A. Schleef *//*Driver: pcl725.oDescription: Advantech PCL-725 (& compatibles)Author: dsStatus: unknownDevices: [Advantech] PCL-725 (pcl725)*/#include <linux/comedidev.h>#include <linux/ioport.h>#define PCL725_SIZE 2#define PCL725_DO 0#define PCL725_DI 1static int pcl725_attach(comedi_device *dev,comedi_devconfig *it);static int pcl725_detach(comedi_device *dev);static comedi_driver driver_pcl725={ driver_name: "pcl725", module: THIS_MODULE, attach: pcl725_attach, detach: pcl725_detach,};COMEDI_INITCLEANUP(driver_pcl725);static int pcl725_do_insn(comedi_device *dev,comedi_subdevice *s, comedi_insn *insn,lsampl_t *data){ if(insn->n!=2)return -EINVAL; if(data[0]){ s->state &= ~data[0]; s->state |= (data[0]&data[1]); outb(s->state,dev->iobase+PCL725_DO); } data[1]=s->state; return 2;}static int pcl725_di_insn(comedi_device *dev,comedi_subdevice *s, comedi_insn *insn,lsampl_t *data){ if(insn->n!=2)return -EINVAL; data[1]=inb(dev->iobase+PCL725_DI); return 2;}static int pcl725_attach(comedi_device *dev,comedi_devconfig *it){ comedi_subdevice *s; int iobase; iobase=it->options[0]; printk("comedi%d: pcl725: 0x%04x ",dev->minor,iobase); if(check_region(iobase,PCL725_SIZE)<0){ printk("I/O port conflict\n"); return -EIO; } request_region(iobase,PCL725_SIZE,"pcl725"); dev->board_name="pcl725"; dev->iobase=iobase; dev->irq=0; if(alloc_subdevices(dev, 2)<0) return -ENOMEM; s=dev->subdevices+0; /* do */ s->type=COMEDI_SUBD_DO; s->subdev_flags=SDF_WRITABLE; s->maxdata=1; s->n_chan=8; s->insn_bits = pcl725_do_insn; s->range_table=&range_digital; s=dev->subdevices+1; /* di */ s->type=COMEDI_SUBD_DI; s->subdev_flags=SDF_READABLE; s->maxdata=1; s->n_chan=8; s->insn_bits = pcl725_di_insn; s->range_table=&range_digital; printk("\n"); return 0;}static int pcl725_detach(comedi_device *dev){ printk("comedi%d: pcl725: remove\n",dev->minor); if(dev->iobase)release_region(dev->iobase,PCL725_SIZE); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -