restore lost packages from 0.2.3 + fix overwritten 0.2.4 files
- Restore 29 recipe symlinks (libdrm, qtbase, dbus, sddm, pipewire, etc.) - Restore 33 patches (KDE, libdrm, mesa, pipewire, sddm, wireplumber) - Restore 20+ local/scripts (audit, lint, test, build helpers) - Restore src/cook/scheduler.rs, status.rs, gnu-config/ - Restore scripts/patch-inclusion-gate.sh, run_mini1.sh, validate-collision-log.sh - Recover TLC source from HEAD (was overwritten by 0.2.3 checkout) - Recover 11 local/docs plans from HEAD (were overwritten) - Recover qt6-wayland-smoke symlink from HEAD - Fix MOTD: remove garbled ASCII art, use clean text - Update version: 0.2.0 -> 0.2.4 in os-release, motd, config - Reduce filesystem_size: 1536 -> 512 MiB - Add ABSOLUTE RULE to AGENTS.md: never delete/ignore packages - Reduce pcid scheme log verbosity: info -> debug
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
/* 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>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/err.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;
|
||||
|
||||
/**
|
||||
* typedef comedi_8254_iocb_fn - call-back function type for 8254 register access
|
||||
* @i8254: pointer to struct comedi_8254
|
||||
* @dir: direction (0 = read, 1 = write)
|
||||
* @reg: register number
|
||||
* @val: value to write
|
||||
*
|
||||
* Return: Register value when reading, 0 when writing.
|
||||
*/
|
||||
typedef unsigned int comedi_8254_iocb_fn(struct comedi_8254 *i8254, int dir,
|
||||
unsigned int reg, unsigned int val);
|
||||
|
||||
/**
|
||||
* struct comedi_8254 - private data used by this module
|
||||
* @iocb: I/O call-back function for register access
|
||||
* @context: context for register access (e.g. a base address)
|
||||
* @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 {
|
||||
comedi_8254_iocb_fn *iocb;
|
||||
unsigned long context;
|
||||
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);
|
||||
|
||||
#ifdef CONFIG_HAS_IOPORT
|
||||
struct comedi_8254 *comedi_8254_io_alloc(unsigned long iobase,
|
||||
unsigned int osc_base,
|
||||
unsigned int iosize,
|
||||
unsigned int regshift);
|
||||
#else
|
||||
static inline struct comedi_8254 *comedi_8254_io_alloc(unsigned long iobase,
|
||||
unsigned int osc_base,
|
||||
unsigned int iosize,
|
||||
unsigned int regshift)
|
||||
{
|
||||
return ERR_PTR(-ENXIO);
|
||||
}
|
||||
#endif
|
||||
|
||||
struct comedi_8254 *comedi_8254_mm_alloc(void __iomem *mmio,
|
||||
unsigned int osc_base,
|
||||
unsigned int iosize,
|
||||
unsigned int regshift);
|
||||
|
||||
#endif /* _COMEDI_8254_H */
|
||||
@@ -0,0 +1,54 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* comedi_8255.h
|
||||
* Generic 8255 digital I/O subdevice support
|
||||
*
|
||||
* COMEDI - Linux Control and Measurement Device Interface
|
||||
* Copyright (C) 1998 David A. Schleef <ds@schleef.org>
|
||||
*/
|
||||
|
||||
#ifndef _COMEDI_8255_H
|
||||
#define _COMEDI_8255_H
|
||||
|
||||
#include <linux/errno.h>
|
||||
|
||||
#define I8255_SIZE 0x04
|
||||
|
||||
#define I8255_DATA_A_REG 0x00
|
||||
#define I8255_DATA_B_REG 0x01
|
||||
#define I8255_DATA_C_REG 0x02
|
||||
#define I8255_CTRL_REG 0x03
|
||||
#define I8255_CTRL_C_LO_IO BIT(0)
|
||||
#define I8255_CTRL_B_IO BIT(1)
|
||||
#define I8255_CTRL_B_MODE BIT(2)
|
||||
#define I8255_CTRL_C_HI_IO BIT(3)
|
||||
#define I8255_CTRL_A_IO BIT(4)
|
||||
#define I8255_CTRL_A_MODE(x) ((x) << 5)
|
||||
#define I8255_CTRL_CW BIT(7)
|
||||
|
||||
struct comedi_device;
|
||||
struct comedi_subdevice;
|
||||
|
||||
#ifdef CONFIG_HAS_IOPORT
|
||||
int subdev_8255_io_init(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
unsigned long regbase);
|
||||
#else
|
||||
static inline int subdev_8255_io_init(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
unsigned long regbase)
|
||||
{
|
||||
return -ENXIO;
|
||||
}
|
||||
#endif
|
||||
|
||||
int subdev_8255_mm_init(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
unsigned long regbase);
|
||||
|
||||
int subdev_8255_cb_init(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
int (*io)(struct comedi_device *dev, int dir, int port,
|
||||
int data, unsigned long context),
|
||||
unsigned long context);
|
||||
|
||||
unsigned long subdev_8255_regbase(struct comedi_subdevice *s);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,114 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* COMEDI ISA DMA support functions
|
||||
* Copyright (c) 2014 H Hartley Sweeten <hsweeten@visionengravers.com>
|
||||
*/
|
||||
|
||||
#ifndef _COMEDI_ISADMA_H
|
||||
#define _COMEDI_ISADMA_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct comedi_device;
|
||||
struct device;
|
||||
|
||||
/*
|
||||
* These are used to avoid issues when <asm/dma.h> and the DMA_MODE_
|
||||
* defines are not available.
|
||||
*/
|
||||
#define COMEDI_ISADMA_READ 0
|
||||
#define COMEDI_ISADMA_WRITE 1
|
||||
|
||||
/**
|
||||
* struct comedi_isadma_desc - cookie for ISA DMA
|
||||
* @virt_addr: virtual address of buffer
|
||||
* @hw_addr: hardware (bus) address of buffer
|
||||
* @chan: DMA channel
|
||||
* @maxsize: allocated size of buffer (in bytes)
|
||||
* @size: transfer size (in bytes)
|
||||
* @mode: DMA_MODE_READ or DMA_MODE_WRITE
|
||||
*/
|
||||
struct comedi_isadma_desc {
|
||||
void *virt_addr;
|
||||
dma_addr_t hw_addr;
|
||||
unsigned int chan;
|
||||
unsigned int maxsize;
|
||||
unsigned int size;
|
||||
char mode;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct comedi_isadma - ISA DMA data
|
||||
* @dev: device to allocate non-coherent memory for
|
||||
* @desc: cookie for each DMA buffer
|
||||
* @n_desc: the number of cookies
|
||||
* @cur_dma: the current cookie in use
|
||||
* @chan: the first DMA channel requested
|
||||
* @chan2: the second DMA channel requested
|
||||
*/
|
||||
struct comedi_isadma {
|
||||
struct device *dev;
|
||||
int n_desc;
|
||||
int cur_dma;
|
||||
unsigned int chan;
|
||||
unsigned int chan2;
|
||||
struct comedi_isadma_desc desc[] __counted_by(n_desc);
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_ISA_DMA_API)
|
||||
|
||||
void comedi_isadma_program(struct comedi_isadma_desc *desc);
|
||||
unsigned int comedi_isadma_disable(unsigned int dma_chan);
|
||||
unsigned int comedi_isadma_disable_on_sample(unsigned int dma_chan,
|
||||
unsigned int size);
|
||||
unsigned int comedi_isadma_poll(struct comedi_isadma *dma);
|
||||
void comedi_isadma_set_mode(struct comedi_isadma_desc *desc, char dma_dir);
|
||||
|
||||
struct comedi_isadma *comedi_isadma_alloc(struct comedi_device *dev,
|
||||
int n_desc, unsigned int dma_chan1,
|
||||
unsigned int dma_chan2,
|
||||
unsigned int maxsize, char dma_dir);
|
||||
void comedi_isadma_free(struct comedi_isadma *dma);
|
||||
|
||||
#else /* !IS_ENABLED(CONFIG_ISA_DMA_API) */
|
||||
|
||||
static inline void comedi_isadma_program(struct comedi_isadma_desc *desc)
|
||||
{
|
||||
}
|
||||
|
||||
static inline unsigned int comedi_isadma_disable(unsigned int dma_chan)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline unsigned int
|
||||
comedi_isadma_disable_on_sample(unsigned int dma_chan, unsigned int size)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline unsigned int comedi_isadma_poll(struct comedi_isadma *dma)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void comedi_isadma_set_mode(struct comedi_isadma_desc *desc,
|
||||
char dma_dir)
|
||||
{
|
||||
}
|
||||
|
||||
static inline struct comedi_isadma *
|
||||
comedi_isadma_alloc(struct comedi_device *dev, int n_desc,
|
||||
unsigned int dma_chan1, unsigned int dma_chan2,
|
||||
unsigned int maxsize, char dma_dir)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void comedi_isadma_free(struct comedi_isadma *dma)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* !IS_ENABLED(CONFIG_ISA_DMA_API) */
|
||||
|
||||
#endif /* #ifndef _COMEDI_ISADMA_H */
|
||||
@@ -0,0 +1,56 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* comedi_pci.h
|
||||
* header file for Comedi PCI drivers
|
||||
*
|
||||
* COMEDI - Linux Control and Measurement Device Interface
|
||||
* Copyright (C) 1997-2000 David A. Schleef <ds@schleef.org>
|
||||
*/
|
||||
|
||||
#ifndef _COMEDI_PCI_H
|
||||
#define _COMEDI_PCI_H
|
||||
|
||||
#include <linux/pci.h>
|
||||
#include <linux/comedi/comedidev.h>
|
||||
|
||||
/*
|
||||
* PCI Vendor IDs not in <linux/pci_ids.h>
|
||||
*/
|
||||
#define PCI_VENDOR_ID_KOLTER 0x1001
|
||||
#define PCI_VENDOR_ID_ICP 0x104c
|
||||
#define PCI_VENDOR_ID_DT 0x1116
|
||||
#define PCI_VENDOR_ID_IOTECH 0x1616
|
||||
#define PCI_VENDOR_ID_CONTEC 0x1221
|
||||
#define PCI_VENDOR_ID_RTD 0x1435
|
||||
#define PCI_VENDOR_ID_HUMUSOFT 0x186c
|
||||
|
||||
struct pci_dev *comedi_to_pci_dev(struct comedi_device *dev);
|
||||
|
||||
int comedi_pci_enable(struct comedi_device *dev);
|
||||
void comedi_pci_disable(struct comedi_device *dev);
|
||||
void comedi_pci_detach(struct comedi_device *dev);
|
||||
|
||||
int comedi_pci_auto_config(struct pci_dev *pcidev, struct comedi_driver *driver,
|
||||
unsigned long context);
|
||||
void comedi_pci_auto_unconfig(struct pci_dev *pcidev);
|
||||
|
||||
int comedi_pci_driver_register(struct comedi_driver *comedi_driver,
|
||||
struct pci_driver *pci_driver);
|
||||
void comedi_pci_driver_unregister(struct comedi_driver *comedi_driver,
|
||||
struct pci_driver *pci_driver);
|
||||
|
||||
/**
|
||||
* module_comedi_pci_driver() - Helper macro for registering a comedi PCI driver
|
||||
* @__comedi_driver: comedi_driver struct
|
||||
* @__pci_driver: pci_driver struct
|
||||
*
|
||||
* Helper macro for comedi PCI drivers which do not do anything special
|
||||
* in module init/exit. This eliminates a lot of boilerplate. Each
|
||||
* module may only use this macro once, and calling it replaces
|
||||
* module_init() and module_exit()
|
||||
*/
|
||||
#define module_comedi_pci_driver(__comedi_driver, __pci_driver) \
|
||||
module_driver(__comedi_driver, comedi_pci_driver_register, \
|
||||
comedi_pci_driver_unregister, &(__pci_driver))
|
||||
|
||||
#endif /* _COMEDI_PCI_H */
|
||||
@@ -0,0 +1,48 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* comedi_pcmcia.h
|
||||
* header file for Comedi PCMCIA drivers
|
||||
*
|
||||
* COMEDI - Linux Control and Measurement Device Interface
|
||||
* Copyright (C) 1997-2000 David A. Schleef <ds@schleef.org>
|
||||
*/
|
||||
|
||||
#ifndef _COMEDI_PCMCIA_H
|
||||
#define _COMEDI_PCMCIA_H
|
||||
|
||||
#include <pcmcia/cistpl.h>
|
||||
#include <pcmcia/ds.h>
|
||||
#include <linux/comedi/comedidev.h>
|
||||
|
||||
struct pcmcia_device *comedi_to_pcmcia_dev(struct comedi_device *dev);
|
||||
|
||||
int comedi_pcmcia_enable(struct comedi_device *dev,
|
||||
int (*conf_check)(struct pcmcia_device *p_dev,
|
||||
void *priv_data));
|
||||
void comedi_pcmcia_disable(struct comedi_device *dev);
|
||||
|
||||
int comedi_pcmcia_auto_config(struct pcmcia_device *link,
|
||||
struct comedi_driver *driver);
|
||||
void comedi_pcmcia_auto_unconfig(struct pcmcia_device *link);
|
||||
|
||||
int comedi_pcmcia_driver_register(struct comedi_driver *comedi_driver,
|
||||
struct pcmcia_driver *pcmcia_driver);
|
||||
void comedi_pcmcia_driver_unregister(struct comedi_driver *comedi_driver,
|
||||
struct pcmcia_driver *pcmcia_driver);
|
||||
|
||||
/**
|
||||
* module_comedi_pcmcia_driver() - Helper macro for registering a comedi
|
||||
* PCMCIA driver
|
||||
* @__comedi_driver: comedi_driver struct
|
||||
* @__pcmcia_driver: pcmcia_driver struct
|
||||
*
|
||||
* Helper macro for comedi PCMCIA drivers which do not do anything special
|
||||
* in module init/exit. This eliminates a lot of boilerplate. Each
|
||||
* module may only use this macro once, and calling it replaces
|
||||
* module_init() and module_exit()
|
||||
*/
|
||||
#define module_comedi_pcmcia_driver(__comedi_driver, __pcmcia_driver) \
|
||||
module_driver(__comedi_driver, comedi_pcmcia_driver_register, \
|
||||
comedi_pcmcia_driver_unregister, &(__pcmcia_driver))
|
||||
|
||||
#endif /* _COMEDI_PCMCIA_H */
|
||||
@@ -0,0 +1,41 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/* comedi_usb.h
|
||||
* header file for USB Comedi drivers
|
||||
*
|
||||
* COMEDI - Linux Control and Measurement Device Interface
|
||||
* Copyright (C) 1997-2000 David A. Schleef <ds@schleef.org>
|
||||
*/
|
||||
|
||||
#ifndef _COMEDI_USB_H
|
||||
#define _COMEDI_USB_H
|
||||
|
||||
#include <linux/usb.h>
|
||||
#include <linux/comedi/comedidev.h>
|
||||
|
||||
struct usb_interface *comedi_to_usb_interface(struct comedi_device *dev);
|
||||
struct usb_device *comedi_to_usb_dev(struct comedi_device *dev);
|
||||
|
||||
int comedi_usb_auto_config(struct usb_interface *intf,
|
||||
struct comedi_driver *driver, unsigned long context);
|
||||
void comedi_usb_auto_unconfig(struct usb_interface *intf);
|
||||
|
||||
int comedi_usb_driver_register(struct comedi_driver *comedi_driver,
|
||||
struct usb_driver *usb_driver);
|
||||
void comedi_usb_driver_unregister(struct comedi_driver *comedi_driver,
|
||||
struct usb_driver *usb_driver);
|
||||
|
||||
/**
|
||||
* module_comedi_usb_driver() - Helper macro for registering a comedi USB driver
|
||||
* @__comedi_driver: comedi_driver struct
|
||||
* @__usb_driver: usb_driver struct
|
||||
*
|
||||
* Helper macro for comedi USB drivers which do not do anything special
|
||||
* in module init/exit. This eliminates a lot of boilerplate. Each
|
||||
* module may only use this macro once, and calling it replaces
|
||||
* module_init() and module_exit()
|
||||
*/
|
||||
#define module_comedi_usb_driver(__comedi_driver, __usb_driver) \
|
||||
module_driver(__comedi_driver, comedi_usb_driver_register, \
|
||||
comedi_usb_driver_unregister, &(__usb_driver))
|
||||
|
||||
#endif /* _COMEDI_USB_H */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,56 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* comedilib.h
|
||||
* Header file for kcomedilib
|
||||
*
|
||||
* COMEDI - Linux Control and Measurement Device Interface
|
||||
* Copyright (C) 1998-2001 David A. Schleef <ds@schleef.org>
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_COMEDILIB_H
|
||||
#define _LINUX_COMEDILIB_H
|
||||
|
||||
struct comedi_device *comedi_open_from(const char *path, int from);
|
||||
|
||||
/**
|
||||
* comedi_open() - Open a COMEDI device from the kernel
|
||||
* @filename: Fake pathname of the form "/dev/comediN".
|
||||
*
|
||||
* Converts @filename to a COMEDI device number and "opens" it if it exists
|
||||
* and is attached to a low-level COMEDI driver.
|
||||
*
|
||||
* Return: A pointer to the COMEDI device on success.
|
||||
* Return %NULL on failure.
|
||||
*/
|
||||
static inline struct comedi_device *comedi_open(const char *path)
|
||||
{
|
||||
return comedi_open_from(path, -1);
|
||||
}
|
||||
|
||||
int comedi_close_from(struct comedi_device *dev, int from);
|
||||
|
||||
/**
|
||||
* comedi_close() - Close a COMEDI device from the kernel
|
||||
* @dev: COMEDI device.
|
||||
*
|
||||
* Closes a COMEDI device previously opened by comedi_open().
|
||||
*
|
||||
* Returns: 0
|
||||
*/
|
||||
static inline int comedi_close(struct comedi_device *dev)
|
||||
{
|
||||
return comedi_close_from(dev, -1);
|
||||
}
|
||||
|
||||
int comedi_dio_get_config(struct comedi_device *dev, unsigned int subdev,
|
||||
unsigned int chan, unsigned int *io);
|
||||
int comedi_dio_config(struct comedi_device *dev, unsigned int subdev,
|
||||
unsigned int chan, unsigned int io);
|
||||
int comedi_dio_bitfield2(struct comedi_device *dev, unsigned int subdev,
|
||||
unsigned int mask, unsigned int *bits,
|
||||
unsigned int base_channel);
|
||||
int comedi_find_subdevice_by_type(struct comedi_device *dev, int type,
|
||||
unsigned int subd);
|
||||
int comedi_get_n_channels(struct comedi_device *dev, unsigned int subdevice);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user