From 81889760da0baa1da7a6342d28811d8a358a6469 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Mon, 28 May 2001 00:26:37 +0000 Subject: [PATCH] patches have been merged --- patches/comedi-rtl-irq-tm.patch | 270 -------------------------------- patches/patch-pcmad | 37 ----- patches/pcmad.c | 180 --------------------- 3 files changed, 487 deletions(-) delete mode 100644 patches/comedi-rtl-irq-tm.patch delete mode 100644 patches/patch-pcmad delete mode 100644 patches/pcmad.c diff --git a/patches/comedi-rtl-irq-tm.patch b/patches/comedi-rtl-irq-tm.patch deleted file mode 100644 index 4d442267..00000000 --- a/patches/comedi-rtl-irq-tm.patch +++ /dev/null @@ -1,270 +0,0 @@ -diff -Nur comedi-cvs/comedi/Makefile comedi/comedi/Makefile ---- comedi-cvs/comedi/Makefile Tue Jan 16 20:26:13 2001 -+++ comedi/comedi/Makefile Fri Mar 2 00:17:56 2001 -@@ -1,7 +1,7 @@ - - - SUB_DIRS := drivers --ALL_SUB_DIRS := kcomedilib drivers realtime -+ALL_SUB_DIRS := kcomedilib drivers realtime rt_pend_tq - MOD_SUB_DIRS := drivers - MOD_IN_SUB_DIRS := - -@@ -13,8 +13,8 @@ - endif - - ifeq ($(CONFIG_COMEDI_RT),y) -- MOD_SUB_DIRS += realtime -- SUB_DIRS += realtime -+ MOD_SUB_DIRS += realtime rt_pend_tq -+ SUB_DIRS += realtime rt_pend_tq - endif - - MOD_LIST_NAME := MISC_MODULES -diff -Nur comedi-cvs/comedi/rt.c comedi/comedi/rt.c ---- comedi-cvs/comedi/rt.c Mon Feb 5 03:06:46 2001 -+++ comedi/comedi/rt.c Fri Mar 2 00:52:35 2001 -@@ -36,6 +36,8 @@ - #include - #include - -+#include "rt_pend_tq.h" -+ - #ifdef CONFIG_COMEDI_RTAI - #include - -@@ -152,17 +154,19 @@ - RT_spin_unlock_irq(&dev->spinlock); - } - --void comedi_rt_pend_wakeup(wait_queue_head_t *q) --{ -- --} -- - #ifdef HAVE_RT_PEND_TQ - void wake_up_int_handler(int arg1, void * arg2) - { - wake_up_interruptible((wait_queue_head_t*)arg2); - } - #endif -+ -+void comedi_rt_pend_wakeup(wait_queue_head_t *q) -+{ -+#ifdef HAVE_RT_PEND_TQ -+ rt_pend_call(wake_up_int_handler,0,q); -+#endif -+} - - - /* RTAI section */ -diff -Nur comedi-cvs/comedi/rt_pend_tq/Makefile comedi/comedi/rt_pend_tq/Makefile ---- comedi-cvs/comedi/rt_pend_tq/Makefile Thu Jan 1 01:00:00 1970 -+++ comedi/comedi/rt_pend_tq/Makefile Fri Mar 2 00:37:55 2001 -@@ -0,0 +1,42 @@ -+ -+ALL_SUB_DIRS := -+MOD_SUB_DIRS := -+SUB_DIRS := -+MOD_LIST_NAME := MISC_MODULES -+ -+EXTRA_CFLAGS := -I ../ -+ -+export-objs := -+ -+obj-y := -+obj-m := -+obj-n := -+obj- := -+ -+obj-$(CONFIG_COMEDI_RT) += rt_pend_tq.o -+ -+obj-m += $(obj-y) -+ -+#L_OBJS := $(sort $(filter-out $(export-objs), $(obj-y))) -+#LX_OBJS := $(sort $(filter $(export-objs), $(obj-y))) -+#MI_OBJS := $(sort $(filter-out $(export-objs), $(obj-y))) -+#MIX_OBJS := $(sort $(filter $(export-objs), $(obj-y))) -+M_OBJS := $(sort $(filter-out $(export-objs), $(obj-m))) -+MX_OBJS := $(sort $(filter $(export-objs), $(obj-m))) -+ -+ -+ -+include $(TOPDIR)/Rules.make -+ -+ifdef CONFIG_COMEDI_RTL -+rt_pend_tq.o : rt_pend_tq_rtl.c -+ -+endif -+ -+ifdef CONFIG_COMEDI_RTAI -+rt_pend_tq.o : rt_pend_tq_rtai.c -+ -+endif -+ -+ -+ -diff -Nur comedi-cvs/comedi/rt_pend_tq/rt_pend_tq.c comedi/comedi/rt_pend_tq/rt_pend_tq.c ---- comedi-cvs/comedi/rt_pend_tq/rt_pend_tq.c Thu Jan 1 01:00:00 1970 -+++ comedi/comedi/rt_pend_tq/rt_pend_tq.c Fri Mar 2 00:19:06 2001 -@@ -0,0 +1,9 @@ -+#include -+ -+#ifdef CONFIG_COMEDI_RTAI -+#include "rt_pend_tq_rtai.c" -+#else -+#ifdef CONFIG_COMEDI_RTL -+#include "rt_pend_tq_rtl.c" -+#endif -+#endif -diff -Nur comedi-cvs/comedi/rt_pend_tq/rt_pend_tq.h comedi/comedi/rt_pend_tq/rt_pend_tq.h ---- comedi-cvs/comedi/rt_pend_tq/rt_pend_tq.h Thu Jan 1 01:00:00 1970 -+++ comedi/comedi/rt_pend_tq/rt_pend_tq.h Thu Jan 25 16:09:29 2001 -@@ -0,0 +1,9 @@ -+#define RT_PEND_TQ_SIZE 16 -+struct rt_pend_tq { -+ void (*func)(int arg1, void * arg2); -+ int arg1; -+ void *arg2; -+} ; -+extern int rt_pend_call(void (*func)(int arg1, void * arg2), int arg1, void * arg2); -+extern int rt_pend_tq_init(void); -+extern void rt_pend_tq_cleanup(void); -diff -Nur comedi-cvs/comedi/rt_pend_tq/rt_pend_tq_rtai.c comedi/comedi/rt_pend_tq/rt_pend_tq_rtai.c ---- comedi-cvs/comedi/rt_pend_tq/rt_pend_tq_rtai.c Thu Jan 1 01:00:00 1970 -+++ comedi/comedi/rt_pend_tq/rt_pend_tq_rtai.c Thu Jan 25 16:09:29 2001 -@@ -0,0 +1,51 @@ -+#include -+#include -+#include "rt_pend_tq.h" -+#include -+ -+volatile static struct rt_pend_tq rt_pend_tq[RT_PEND_TQ_SIZE]; -+volatile static struct rt_pend_tq * volatile rt_pend_head= rt_pend_tq, -+ * volatile rt_pend_tail = rt_pend_tq; -+int rt_pend_tq_irq=0; -+ -+// WARNING: following code not checked against race conditions yet. -+#define INC_CIRCULAR_PTR(ptr,begin,size) do {if(++(ptr)>=(begin)+(size)) (ptr)=(begin); } while(0) -+#define DEC_CIRCULAR_PTR(ptr,begin,size) do {if(--(ptr)<(begin)) (ptr)=(begin)+(size)-1; } while(0) -+ -+int rt_pend_call(void (*func)(int arg1, void * arg2), int arg1, void * arg2) -+{ -+ if(func==NULL) -+ return -EINVAL; -+ if(rt_pend_tq_irq<=0) -+ return -ENODEV; -+ INC_CIRCULAR_PTR(rt_pend_head,rt_pend_tq,RT_PEND_TQ_SIZE); -+ if(rt_pend_head==rt_pend_tail) { -+ // overflow, we just refuse to take this request -+ DEC_CIRCULAR_PTR(rt_pend_head,rt_pend_tq,RT_PEND_TQ_SIZE); -+ return -EAGAIN; -+ } -+ rt_pend_head->func=func; -+ rt_pend_head->arg1=arg1; -+ rt_pend_head->arg2=arg2; -+ rt_pend_linux_srq(rt_pend_tq_irq); -+ return 0; -+} -+ -+void rt_pend_irq_handler() -+{ -+ while(rt_pend_head!=rt_pend_tail) { -+ INC_CIRCULAR_PTR(rt_pend_tail,rt_pend_tq,RT_PEND_TQ_SIZE); -+ rt_pend_tail->func(rt_pend_tail->arg1,rt_pend_tail->arg2); -+ } -+} -+ -+int rt_pend_tq_init() -+{ -+ rt_pend_head=rt_pend_tail=rt_pend_tq; -+ return rt_pend_tq_irq=rt_request_srq(0,rt_pend_irq_handler,NULL); -+} -+ -+void rt_pend_tq_cleanup() -+{ -+ free_irq(rt_pend_tq_irq,NULL); -+} -diff -Nur comedi-cvs/comedi/rt_pend_tq/rt_pend_tq_rtl.c comedi/comedi/rt_pend_tq/rt_pend_tq_rtl.c ---- comedi-cvs/comedi/rt_pend_tq/rt_pend_tq_rtl.c Thu Jan 1 01:00:00 1970 -+++ comedi/comedi/rt_pend_tq/rt_pend_tq_rtl.c Fri Mar 2 00:54:09 2001 -@@ -0,0 +1,61 @@ -+#include -+#include -+#include -+#include "rt_pend_tq.h" -+#include -+ -+volatile static struct rt_pend_tq rt_pend_tq[RT_PEND_TQ_SIZE]; -+volatile static struct rt_pend_tq * volatile rt_pend_head= rt_pend_tq, -+ * volatile rt_pend_tail = rt_pend_tq; -+int rt_pend_tq_irq=0; -+ -+// WARNING: following code not checked against race conditions yet. -+#define INC_CIRCULAR_PTR(ptr,begin,size) do {if(++(ptr)>=(begin)+(size)) (ptr)=(begin); } while(0) -+#define DEC_CIRCULAR_PTR(ptr,begin,size) do {if(--(ptr)<(begin)) (ptr)=(begin)+(size)-1; } while(0) -+ -+int rt_pend_call(void (*func)(int arg1, void * arg2), int arg1, void * arg2) -+{ -+ if(func==NULL) -+ return -EINVAL; -+ if(rt_pend_tq_irq<=0) -+ return -ENODEV; -+// FIXME: grab RT spinlock/cli -+ INC_CIRCULAR_PTR(rt_pend_head,rt_pend_tq,RT_PEND_TQ_SIZE); -+ if(rt_pend_head==rt_pend_tail) { -+ // overflow, we just refuse to take this request -+ DEC_CIRCULAR_PTR(rt_pend_head,rt_pend_tq,RT_PEND_TQ_SIZE); -+// FIXME: release RT spinlock/restore -+ return -EAGAIN; -+ } -+// FIXME: release RT spinlock/restore -+ rt_pend_head->func=func; -+ rt_pend_head->arg1=arg1; -+ rt_pend_head->arg2=arg2; -+ rtl_global_pend_irq(rt_pend_tq_irq); -+ return 0; -+} -+ -+void rt_pend_irq_handler(int irq, void *dev, struct pt_regs * regs) -+{ -+ while(rt_pend_head!=rt_pend_tail) { -+ INC_CIRCULAR_PTR(rt_pend_tail,rt_pend_tq,RT_PEND_TQ_SIZE); -+ rt_pend_tail->func(rt_pend_tail->arg1,rt_pend_tail->arg2); -+ } -+} -+ -+int init_module(void) -+{ -+ rt_pend_head=rt_pend_tail=rt_pend_tq; -+ rt_pend_tq_irq=rtl_get_soft_irq(rt_pend_irq_handler,"rt_pend_irq"); -+ if(rt_pend_tq_irq>0) -+ printk("rt_pend_tq: RT bottom half scheduler initialized OK\n"); -+ else -+ printk("rt_pend_tq: rtl_get_soft_irq failed\n"); -+ return 0; -+} -+ -+void cleanup_module(void) -+{ -+ printk("rt_pend_tq: unloading\n"); -+ free_irq(rt_pend_tq_irq,NULL); -+} -diff -Nur comedi-cvs/include/linux/rtl.h comedi/include/linux/rtl.h ---- comedi-cvs/include/linux/rtl.h Thu Jan 1 01:00:00 1970 -+++ comedi/include/linux/rtl.h Fri Mar 2 00:23:59 2001 -@@ -0,0 +1,14 @@ -+/* -+ * linux/rtl.h compatibility header -+ */ -+ -+#ifndef _COMPAT_RTL_H -+#define _COMPAT_RTL_H -+ -+#include_next -+ -+#endif /* _COMPAT_RTL_H */ -+ -+ -+ -+ diff --git a/patches/patch-pcmad b/patches/patch-pcmad deleted file mode 100644 index 119ef460..00000000 --- a/patches/patch-pcmad +++ /dev/null @@ -1,37 +0,0 @@ -? patch -? comedi/drivers/patch -? comedi/drivers/pcmad.c -? comedi/drivers/diff_ni-E.c -? include/comedi -? include/modbuild -Index: comedi/Config.in -=================================================================== -RCS file: /d/ds/cvsroot/comedi/comedi/Config.in,v -retrieving revision 1.20 -diff -u -r1.20 Config.in ---- comedi/Config.in 2000/08/09 20:44:20 1.20 -+++ comedi/Config.in 2000/09/03 01:54:35 -@@ -87,6 +87,7 @@ - if [ "$CONFIG_PCI" = "y" ];then - dep_tristate 'IOtech DaqBoard/2000' CONFIG_COMEDI_DAQBOARD2000 $CONFIG_COMEDI - fi -+dep_tristate 'Winsystems PCM-A/D' CONFIG_COMEDI_PCMAD $CONFIG_COMEDI - dep_tristate 'Skeleton driver' CONFIG_COMEDI_SKEL $CONFIG_COMEDI - - if [ "$CONFIG_COMEDI_RT" = "y" ];then -Index: comedi/drivers/Makefile -=================================================================== -RCS file: /d/ds/cvsroot/comedi/comedi/drivers/Makefile,v -retrieving revision 1.14 -diff -u -r1.14 Makefile ---- comedi/drivers/Makefile 2000/07/24 19:43:29 1.14 -+++ comedi/drivers/Makefile 2000/09/03 01:54:36 -@@ -39,6 +39,8 @@ - - obj-$(CONFIG_COMEDI_II_PCI20KC) += ii_pci20kc.o - -+obj-$(CONFIG_COMEDI_PCMAD) += pcmad.o -+ - obj-$(CONFIG_COMEDI_MULTIQ3) += multiq3.o - - obj-$(CONFIG_COMEDI_NI_ATMIO) += ni_atmio.o diff --git a/patches/pcmad.c b/patches/pcmad.c deleted file mode 100644 index 21cd6ba5..00000000 --- a/patches/pcmad.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - module/pcmad - hardware driver for Winsystems PCM-A/D12 and PCM-A/D16 - - COMEDI - Linux Control and Measurement Device Interface - Copyright (C) 2000 David A. Schleef - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define PCMAD_SIZE 4 - -#define PCMAD_STATUS 0 -#define PCMAD_LSB 1 -#define PCMAD_MSB 2 -#define PCMAD_CONVERT 1 - -static int pcmad_attach(comedi_device *dev,comedi_devconfig *it); -static int pcmad_detach(comedi_device *dev); -static int pcmad_recognize(char *name); -comedi_driver driver_pcmad={ - driver_name: "pcmad", - module: THIS_MODULE, - attach: pcmad_attach, - detach: pcmad_detach, - recognize: pcmad_recognize, -}; - -struct pcmad_board_struct{ - char *name; - int n_ai_bits; -}; -struct pcmad_board_struct pcmad_boards[]={ - { - name: "pcmad12", - n_ai_bits: 12, - }, - { - name: "pcmad16", - n_ai_bits: 16, - }, -}; -#define this_board ((struct pcmad_board_struct *)(dev->board_ptr)) -static int n_pcmad_boards=(sizeof(pcmad_boards)/sizeof(pcmad_boards[0])); - -struct pcmad_priv_struct{ - int differential; - int twos_comp; -}; -#define devpriv ((struct pcmad_priv_struct *)dev->private) - - -#define TIMEOUT 100 - -static int pcmad_ai_mode0(comedi_device *dev,comedi_subdevice *s,comedi_trig *it) -{ - int i,msb,lsb; - int chan; - int data; - - chan=CR_CHAN(it->chanlist[0]); - - outb(chan,dev->iobase+PCMAD_CONVERT); - - for(i=0;iiobase+PCMAD_STATUS)&0x3) == 0x3) - break; - } - lsb=inb(dev->iobase+PCMAD_LSB); - msb=inb(dev->iobase+PCMAD_MSB); - - data=(msb<<8)|(lsb); - - if(devpriv->twos_comp){ - data ^= (1<<(this_board->n_ai_bits-1)); - } - it->data[0]=data; - - return 1; -} - -static int pcmad_recognize(char *name) -{ - int i; - - for(i=0;iiobase=it->options[0]; - printk("comedi%d: pcmad: 0x%04x ",dev->minor,dev->iobase); - if(check_region(dev->iobase,PCMAD_SIZE)<0){ - printk("I/O port conflict\n"); - return -EIO; - } - request_region(dev->iobase,PCMAD_SIZE,"pcmad"); - dev->iobase=dev->iobase; - dev->iosize=PCMAD_SIZE; - - dev->n_subdevices=1; - if((ret=alloc_subdevices(dev))<0) - return ret; - if((ret=alloc_private(dev,sizeof(struct pcmad_priv_struct)))<0) - return ret; - - dev->board_ptr = pcmad_boards+dev->board; - - s=dev->subdevices+0; - s->type=COMEDI_SUBD_AI; - s->subdev_flags=SDF_READABLE; - s->n_chan=16; /* XXX */ - s->len_chanlist=1; - s->trig[0]=pcmad_ai_mode0; - s->maxdata=(1<n_ai_bits)-1; - s->range_table=&range_unknown; - - return 0; -} - - -static int pcmad_detach(comedi_device *dev) -{ - printk("comedi%d: pcmad: remove\n",dev->minor); - - if(dev->irq){ - free_irq(dev->irq,dev); - } - release_region(dev->iobase,dev->iosize); - - return 0; -} - - -COMEDI_INITCLEANUP(driver_pcmad); - -- 2.26.2