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:
2026-06-19 12:39:14 +03:00
parent ffbe098ef8
commit dc68054305
6418 changed files with 7066233 additions and 8670 deletions
@@ -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