pcl725.c

来自「rtlinux-3.2-pre3.tar.bz2 rtlinux3.2-pre3」· C语言 代码 · 共 112 行

C
112
字号
/* * 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 + =
减小字号Ctrl + -
显示快捷键?