comedi: Move "comedi_8254.h" to <linux/comedi/comedi_8254.h>
authorIan Abbott <abbotti@mev.co.uk>
Wed, 17 Nov 2021 12:06:02 +0000 (12:06 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 26 Nov 2021 15:48:59 +0000 (16:48 +0100)
Some of the header files in "drivers/comedi/drivers/" are common enough
to be useful to out-of-tree comedi driver modules.  Using them for
out-of-tree module builds is hampered by the headers being outside the
"include/" directory so it is desirable to move them.

There are about a couple of dozen or so Comedi device drivers that use
the "comedi_8254" module to add timers based on the venerable 8254
Programmable Interval Timer chip.  The macros and declarations to use
that module are in the "comedi_8254.h" header file in the comedi
"drivers" directory.  Move it into "include/linux/comedi/".

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Link: https://lore.kernel.org/r/20211117120604.117740-5-abbotti@mev.co.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
29 files changed:
drivers/comedi/drivers/adl_pci9111.c
drivers/comedi/drivers/adl_pci9118.c
drivers/comedi/drivers/adv_pci1710.c
drivers/comedi/drivers/adv_pci_dio.c
drivers/comedi/drivers/aio_aio12_8.c
drivers/comedi/drivers/amplc_dio200_common.c
drivers/comedi/drivers/amplc_pci224.c
drivers/comedi/drivers/amplc_pci230.c
drivers/comedi/drivers/cb_das16_cs.c
drivers/comedi/drivers/cb_pcidas.c
drivers/comedi/drivers/cb_pcimdas.c
drivers/comedi/drivers/comedi_8254.c
drivers/comedi/drivers/comedi_8254.h [deleted file]
drivers/comedi/drivers/das08.c
drivers/comedi/drivers/das16.c
drivers/comedi/drivers/das16m1.c
drivers/comedi/drivers/das1800.c
drivers/comedi/drivers/das6402.c
drivers/comedi/drivers/das800.c
drivers/comedi/drivers/me4000.c
drivers/comedi/drivers/ni_at_a2150.c
drivers/comedi/drivers/ni_at_ao.c
drivers/comedi/drivers/ni_labpc_common.c
drivers/comedi/drivers/pcl711.c
drivers/comedi/drivers/pcl812.c
drivers/comedi/drivers/pcl816.c
drivers/comedi/drivers/pcl818.c
drivers/comedi/drivers/rtd520.c
include/linux/comedi/comedi_8254.h [new file with mode: 0644]

index 65454f3..c50f942 100644 (file)
@@ -43,9 +43,9 @@
 #include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/comedi/comedi_pci.h>
+#include <linux/comedi/comedi_8254.h>
 
 #include "plx9052.h"
-#include "comedi_8254.h"
 
 #define PCI9111_FIFO_HALF_SIZE 512
 
index 248cec3..9a816c7 100644 (file)
@@ -79,9 +79,9 @@
 #include <linux/interrupt.h>
 #include <linux/io.h>
 #include <linux/comedi/comedi_pci.h>
+#include <linux/comedi/comedi_8254.h>
 
 #include "amcc_s5933.h"
-#include "comedi_8254.h"
 
 /*
  * PCI BAR2 Register map (dev->iobase)
index 47a800d..4f26399 100644 (file)
@@ -31,8 +31,8 @@
 #include <linux/module.h>
 #include <linux/interrupt.h>
 #include <linux/comedi/comedi_pci.h>
+#include <linux/comedi/comedi_8254.h>
 
-#include "comedi_8254.h"
 #include "amcc_s5933.h"
 
 /*
index 1ec602f..efa3e46 100644 (file)
@@ -25,8 +25,7 @@
 #include <linux/delay.h>
 #include <linux/comedi/comedi_pci.h>
 #include <linux/comedi/comedi_8255.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 /*
  * Register offset definitions
index cd797dc..30b8a32 100644 (file)
@@ -24,8 +24,7 @@
 #include <linux/module.h>
 #include <linux/comedi/comedidev.h>
 #include <linux/comedi/comedi_8255.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 /*
  * Register map
index 26b4049..ff651f2 100644 (file)
@@ -14,9 +14,9 @@
 #include <linux/interrupt.h>
 #include <linux/comedi/comedidev.h>
 #include <linux/comedi/comedi_8255.h>  /* only for register defines */
+#include <linux/comedi/comedi_8254.h>
 
 #include "amplc_dio200.h"
-#include "comedi_8254.h"
 
 /* 200 series registers */
 #define DIO200_IO_SIZE         0x20
index 3cf1b7f..5a04e55 100644 (file)
@@ -97,8 +97,7 @@
 #include <linux/interrupt.h>
 #include <linux/slab.h>
 #include <linux/comedi/comedi_pci.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 /*
  * PCI224/234 i/o space 1 (PCIBAR2) registers.
index 93f7057..92ba8b8 100644 (file)
 #include <linux/interrupt.h>
 #include <linux/comedi/comedi_pci.h>
 #include <linux/comedi/comedi_8255.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 /*
  * PCI230 PCI configuration register information
index 190d73a..8e0d2fa 100644 (file)
@@ -28,8 +28,7 @@
 #include <linux/interrupt.h>
 #include <linux/delay.h>
 #include <linux/comedi/comedi_pcmcia.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 /*
  * Register I/O map
index 75ff02b..0c7576b 100644 (file)
@@ -56,8 +56,8 @@
 #include <linux/interrupt.h>
 #include <linux/comedi/comedi_pci.h>
 #include <linux/comedi/comedi_8255.h>
+#include <linux/comedi/comedi_8254.h>
 
-#include "comedi_8254.h"
 #include "amcc_s5933.h"
 
 #define AI_BUFFER_SIZE         1024    /* max ai fifo size */
index 7bc0805..8bdb007 100644 (file)
@@ -36,8 +36,8 @@
 #include <linux/interrupt.h>
 #include <linux/comedi/comedi_pci.h>
 #include <linux/comedi/comedi_8255.h>
+#include <linux/comedi/comedi_8254.h>
 
-#include "comedi_8254.h"
 #include "plx9052.h"
 
 /*
index fac8156..b4185c1 100644 (file)
 #include <linux/slab.h>
 #include <linux/io.h>
 #include <linux/comedi/comedidev.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 static unsigned int __i8254_read(struct comedi_8254 *i8254, unsigned int reg)
 {
diff --git a/drivers/comedi/drivers/comedi_8254.h b/drivers/comedi/drivers/comedi_8254.h
deleted file mode 100644 (file)
index d826441..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * comedi_8254.h
- * Generic 8254 timer/counter support
- * Copyright (C) 2014 H Hartley Sweeten <hsweeten@visionengravers.com>
- *
- * COMEDI - Linux Control and Measurement Device Interface
- * Copyright (C) 2000 David A. Schleef <ds@schleef.org>
- */
-
-#ifndef _COMEDI_8254_H
-#define _COMEDI_8254_H
-
-#include <linux/types.h>
-
-struct comedi_device;
-struct comedi_insn;
-struct comedi_subdevice;
-
-/*
- * Common oscillator base values in nanoseconds
- */
-#define I8254_OSC_BASE_10MHZ   100
-#define I8254_OSC_BASE_5MHZ    200
-#define I8254_OSC_BASE_4MHZ    250
-#define I8254_OSC_BASE_2MHZ    500
-#define I8254_OSC_BASE_1MHZ    1000
-#define I8254_OSC_BASE_100KHZ  10000
-#define I8254_OSC_BASE_10KHZ   100000
-#define I8254_OSC_BASE_1KHZ    1000000
-
-/*
- * I/O access size used to read/write registers
- */
-#define I8254_IO8              1
-#define I8254_IO16             2
-#define I8254_IO32             4
-
-/*
- * Register map for generic 8254 timer (I8254_IO8 with 0 regshift)
- */
-#define I8254_COUNTER0_REG             0x00
-#define I8254_COUNTER1_REG             0x01
-#define I8254_COUNTER2_REG             0x02
-#define I8254_CTRL_REG                 0x03
-#define I8254_CTRL_SEL_CTR(x)          ((x) << 6)
-#define I8254_CTRL_READBACK(x)         (I8254_CTRL_SEL_CTR(3) | BIT(x))
-#define I8254_CTRL_READBACK_COUNT      I8254_CTRL_READBACK(4)
-#define I8254_CTRL_READBACK_STATUS     I8254_CTRL_READBACK(5)
-#define I8254_CTRL_READBACK_SEL_CTR(x) (2 << (x))
-#define I8254_CTRL_RW(x)               (((x) & 0x3) << 4)
-#define I8254_CTRL_LATCH               I8254_CTRL_RW(0)
-#define I8254_CTRL_LSB_ONLY            I8254_CTRL_RW(1)
-#define I8254_CTRL_MSB_ONLY            I8254_CTRL_RW(2)
-#define I8254_CTRL_LSB_MSB             I8254_CTRL_RW(3)
-
-/* counter maps zero to 0x10000 */
-#define I8254_MAX_COUNT                        0x10000
-
-/**
- * struct comedi_8254 - private data used by this module
- * @iobase:            PIO base address of the registers (in/out)
- * @mmio:              MMIO base address of the registers (read/write)
- * @iosize:            I/O size used to access the registers (b/w/l)
- * @regshift:          register gap shift
- * @osc_base:          cascaded oscillator speed in ns
- * @divisor:           divisor for single counter
- * @divisor1:          divisor loaded into first cascaded counter
- * @divisor2:          divisor loaded into second cascaded counter
- * #next_div:          next divisor for single counter
- * @next_div1:         next divisor to use for first cascaded counter
- * @next_div2:         next divisor to use for second cascaded counter
- * @clock_src;         current clock source for each counter (driver specific)
- * @gate_src;          current gate source  for each counter (driver specific)
- * @busy:              flags used to indicate that a counter is "busy"
- * @insn_config:       driver specific (*insn_config) callback
- */
-struct comedi_8254 {
-       unsigned long iobase;
-       void __iomem *mmio;
-       unsigned int iosize;
-       unsigned int regshift;
-       unsigned int osc_base;
-       unsigned int divisor;
-       unsigned int divisor1;
-       unsigned int divisor2;
-       unsigned int next_div;
-       unsigned int next_div1;
-       unsigned int next_div2;
-       unsigned int clock_src[3];
-       unsigned int gate_src[3];
-       bool busy[3];
-
-       int (*insn_config)(struct comedi_device *dev,
-                          struct comedi_subdevice *s,
-                          struct comedi_insn *insn, unsigned int *data);
-};
-
-unsigned int comedi_8254_status(struct comedi_8254 *i8254,
-                               unsigned int counter);
-unsigned int comedi_8254_read(struct comedi_8254 *i8254, unsigned int counter);
-void comedi_8254_write(struct comedi_8254 *i8254,
-                      unsigned int counter, unsigned int val);
-
-int comedi_8254_set_mode(struct comedi_8254 *i8254,
-                        unsigned int counter, unsigned int mode);
-int comedi_8254_load(struct comedi_8254 *i8254,
-                    unsigned int counter, unsigned int val, unsigned int mode);
-
-void comedi_8254_pacer_enable(struct comedi_8254 *i8254,
-                             unsigned int counter1, unsigned int counter2,
-                             bool enable);
-void comedi_8254_update_divisors(struct comedi_8254 *i8254);
-void comedi_8254_cascade_ns_to_timer(struct comedi_8254 *i8254,
-                                    unsigned int *nanosec, unsigned int flags);
-void comedi_8254_ns_to_timer(struct comedi_8254 *i8254,
-                            unsigned int *nanosec, unsigned int flags);
-
-void comedi_8254_set_busy(struct comedi_8254 *i8254,
-                         unsigned int counter, bool busy);
-
-void comedi_8254_subdevice_init(struct comedi_subdevice *s,
-                               struct comedi_8254 *i8254);
-
-struct comedi_8254 *comedi_8254_init(unsigned long iobase,
-                                    unsigned int osc_base,
-                                    unsigned int iosize,
-                                    unsigned int regshift);
-struct comedi_8254 *comedi_8254_mm_init(void __iomem *mmio,
-                                       unsigned int osc_base,
-                                       unsigned int iosize,
-                                       unsigned int regshift);
-
-#endif /* _COMEDI_8254_H */
index bab868d..f8ab3af 100644 (file)
@@ -12,8 +12,8 @@
 #include <linux/module.h>
 #include <linux/comedi/comedidev.h>
 #include <linux/comedi/comedi_8255.h>
+#include <linux/comedi/comedi_8254.h>
 
-#include "comedi_8254.h"
 #include "das08.h"
 
 /*
index 3383967..f6649ff 100644 (file)
@@ -65,9 +65,9 @@
 #include <linux/interrupt.h>
 #include <linux/comedi/comedidev.h>
 #include <linux/comedi/comedi_8255.h>
+#include <linux/comedi/comedi_8254.h>
 
 #include "comedi_isadma.h"
-#include "comedi_8254.h"
 
 #define DAS16_DMA_SIZE 0xff00  /*  size in bytes of allocated dma buffer */
 
index ea55024..275effb 100644 (file)
@@ -44,8 +44,7 @@
 #include <linux/interrupt.h>
 #include <linux/comedi/comedidev.h>
 #include <linux/comedi/comedi_8255.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 /*
  * Register map (dev->iobase)
index 7688037..a43d341 100644 (file)
@@ -74,9 +74,9 @@
 #include <linux/slab.h>
 #include <linux/io.h>
 #include <linux/comedi/comedidev.h>
+#include <linux/comedi/comedi_8254.h>
 
 #include "comedi_isadma.h"
-#include "comedi_8254.h"
 
 /* misc. defines */
 #define DAS1800_SIZE           16      /* uses 16 io addresses */
index d411ab7..1af3945 100644 (file)
@@ -25,8 +25,7 @@
 #include <linux/module.h>
 #include <linux/interrupt.h>
 #include <linux/comedi/comedidev.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 /*
  * Register I/O map
index c95e0fc..4ca33f4 100644 (file)
@@ -47,8 +47,7 @@
 #include <linux/interrupt.h>
 #include <linux/delay.h>
 #include <linux/comedi/comedidev.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 #define N_CHAN_AI             8        /*  number of analog input channels */
 
index c5dc819..9aea02b 100644 (file)
@@ -33,8 +33,8 @@
 #include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/comedi/comedi_pci.h>
+#include <linux/comedi/comedi_8254.h>
 
-#include "comedi_8254.h"
 #include "plx9052.h"
 
 #define ME4000_FIRMWARE                "me4000_firmware.bin"
index ce5de58..9942d77 100644 (file)
@@ -40,9 +40,9 @@
 #include <linux/slab.h>
 #include <linux/io.h>
 #include <linux/comedi/comedidev.h>
+#include <linux/comedi/comedi_8254.h>
 
 #include "comedi_isadma.h"
-#include "comedi_8254.h"
 
 #define A2150_DMA_BUFFER_SIZE  0xff00  /*  size in bytes of dma buffer */
 
index a06dfb9..9f3147b 100644 (file)
@@ -26,8 +26,7 @@
 
 #include <linux/module.h>
 #include <linux/comedi/comedidev.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 /*
  * Register map
index 4a1269a..7632496 100644 (file)
@@ -14,8 +14,8 @@
 #include <linux/slab.h>
 #include <linux/comedi/comedidev.h>
 #include <linux/comedi/comedi_8255.h>
+#include <linux/comedi/comedi_8254.h>
 
-#include "comedi_8254.h"
 #include "ni_labpc.h"
 #include "ni_labpc_regs.h"
 #include "ni_labpc_isadma.h"
index f1c383b..05172c5 100644 (file)
@@ -30,8 +30,7 @@
 #include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/comedi/comedidev.h>
-
-#include "comedi_8254.h"
+#include <linux/comedi/comedi_8254.h>
 
 /*
  * I/O port register map
index f00976d..790f544 100644 (file)
 #include <linux/delay.h>
 #include <linux/io.h>
 #include <linux/comedi/comedidev.h>
+#include <linux/comedi/comedi_8254.h>
 
 #include "comedi_isadma.h"
-#include "comedi_8254.h"
 
 /*
  * Register I/O map
index c5acdc8..77b3024 100644 (file)
@@ -36,9 +36,9 @@
 #include <linux/io.h>
 #include <linux/interrupt.h>
 #include <linux/comedi/comedidev.h>
+#include <linux/comedi/comedi_8254.h>
 
 #include "comedi_isadma.h"
-#include "comedi_8254.h"
 
 /*
  * Register I/O map
index 20fcd6d..e5b7793 100644 (file)
@@ -98,9 +98,9 @@
 #include <linux/io.h>
 #include <linux/interrupt.h>
 #include <linux/comedi/comedidev.h>
+#include <linux/comedi/comedi_8254.h>
 
 #include "comedi_isadma.h"
-#include "comedi_8254.h"
 
 /*
  * Register I/O map
index ee5bca2..7e0ec1a 100644 (file)
@@ -86,8 +86,8 @@
 #include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/comedi/comedi_pci.h>
+#include <linux/comedi/comedi_8254.h>
 
-#include "comedi_8254.h"
 #include "plx9080.h"
 
 /*
diff --git a/include/linux/comedi/comedi_8254.h b/include/linux/comedi/comedi_8254.h
new file mode 100644 (file)
index 0000000..d826441
--- /dev/null
@@ -0,0 +1,134 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * comedi_8254.h
+ * Generic 8254 timer/counter support
+ * Copyright (C) 2014 H Hartley Sweeten <hsweeten@visionengravers.com>
+ *
+ * COMEDI - Linux Control and Measurement Device Interface
+ * Copyright (C) 2000 David A. Schleef <ds@schleef.org>
+ */
+
+#ifndef _COMEDI_8254_H
+#define _COMEDI_8254_H
+
+#include <linux/types.h>
+
+struct comedi_device;
+struct comedi_insn;
+struct comedi_subdevice;
+
+/*
+ * Common oscillator base values in nanoseconds
+ */
+#define I8254_OSC_BASE_10MHZ   100
+#define I8254_OSC_BASE_5MHZ    200
+#define I8254_OSC_BASE_4MHZ    250
+#define I8254_OSC_BASE_2MHZ    500
+#define I8254_OSC_BASE_1MHZ    1000
+#define I8254_OSC_BASE_100KHZ  10000
+#define I8254_OSC_BASE_10KHZ   100000
+#define I8254_OSC_BASE_1KHZ    1000000
+
+/*
+ * I/O access size used to read/write registers
+ */
+#define I8254_IO8              1
+#define I8254_IO16             2
+#define I8254_IO32             4
+
+/*
+ * Register map for generic 8254 timer (I8254_IO8 with 0 regshift)
+ */
+#define I8254_COUNTER0_REG             0x00
+#define I8254_COUNTER1_REG             0x01
+#define I8254_COUNTER2_REG             0x02
+#define I8254_CTRL_REG                 0x03
+#define I8254_CTRL_SEL_CTR(x)          ((x) << 6)
+#define I8254_CTRL_READBACK(x)         (I8254_CTRL_SEL_CTR(3) | BIT(x))
+#define I8254_CTRL_READBACK_COUNT      I8254_CTRL_READBACK(4)
+#define I8254_CTRL_READBACK_STATUS     I8254_CTRL_READBACK(5)
+#define I8254_CTRL_READBACK_SEL_CTR(x) (2 << (x))
+#define I8254_CTRL_RW(x)               (((x) & 0x3) << 4)
+#define I8254_CTRL_LATCH               I8254_CTRL_RW(0)
+#define I8254_CTRL_LSB_ONLY            I8254_CTRL_RW(1)
+#define I8254_CTRL_MSB_ONLY            I8254_CTRL_RW(2)
+#define I8254_CTRL_LSB_MSB             I8254_CTRL_RW(3)
+
+/* counter maps zero to 0x10000 */
+#define I8254_MAX_COUNT                        0x10000
+
+/**
+ * struct comedi_8254 - private data used by this module
+ * @iobase:            PIO base address of the registers (in/out)
+ * @mmio:              MMIO base address of the registers (read/write)
+ * @iosize:            I/O size used to access the registers (b/w/l)
+ * @regshift:          register gap shift
+ * @osc_base:          cascaded oscillator speed in ns
+ * @divisor:           divisor for single counter
+ * @divisor1:          divisor loaded into first cascaded counter
+ * @divisor2:          divisor loaded into second cascaded counter
+ * #next_div:          next divisor for single counter
+ * @next_div1:         next divisor to use for first cascaded counter
+ * @next_div2:         next divisor to use for second cascaded counter
+ * @clock_src;         current clock source for each counter (driver specific)
+ * @gate_src;          current gate source  for each counter (driver specific)
+ * @busy:              flags used to indicate that a counter is "busy"
+ * @insn_config:       driver specific (*insn_config) callback
+ */
+struct comedi_8254 {
+       unsigned long iobase;
+       void __iomem *mmio;
+       unsigned int iosize;
+       unsigned int regshift;
+       unsigned int osc_base;
+       unsigned int divisor;
+       unsigned int divisor1;
+       unsigned int divisor2;
+       unsigned int next_div;
+       unsigned int next_div1;
+       unsigned int next_div2;
+       unsigned int clock_src[3];
+       unsigned int gate_src[3];
+       bool busy[3];
+
+       int (*insn_config)(struct comedi_device *dev,
+                          struct comedi_subdevice *s,
+                          struct comedi_insn *insn, unsigned int *data);
+};
+
+unsigned int comedi_8254_status(struct comedi_8254 *i8254,
+                               unsigned int counter);
+unsigned int comedi_8254_read(struct comedi_8254 *i8254, unsigned int counter);
+void comedi_8254_write(struct comedi_8254 *i8254,
+                      unsigned int counter, unsigned int val);
+
+int comedi_8254_set_mode(struct comedi_8254 *i8254,
+                        unsigned int counter, unsigned int mode);
+int comedi_8254_load(struct comedi_8254 *i8254,
+                    unsigned int counter, unsigned int val, unsigned int mode);
+
+void comedi_8254_pacer_enable(struct comedi_8254 *i8254,
+                             unsigned int counter1, unsigned int counter2,
+                             bool enable);
+void comedi_8254_update_divisors(struct comedi_8254 *i8254);
+void comedi_8254_cascade_ns_to_timer(struct comedi_8254 *i8254,
+                                    unsigned int *nanosec, unsigned int flags);
+void comedi_8254_ns_to_timer(struct comedi_8254 *i8254,
+                            unsigned int *nanosec, unsigned int flags);
+
+void comedi_8254_set_busy(struct comedi_8254 *i8254,
+                         unsigned int counter, bool busy);
+
+void comedi_8254_subdevice_init(struct comedi_subdevice *s,
+                               struct comedi_8254 *i8254);
+
+struct comedi_8254 *comedi_8254_init(unsigned long iobase,
+                                    unsigned int osc_base,
+                                    unsigned int iosize,
+                                    unsigned int regshift);
+struct comedi_8254 *comedi_8254_mm_init(void __iomem *mmio,
+                                       unsigned int osc_base,
+                                       unsigned int iosize,
+                                       unsigned int regshift);
+
+#endif /* _COMEDI_8254_H */