drivers/media/pci/solo6x10/solo6x10.h
Source file repositories/reference/linux-study-clean/drivers/media/pci/solo6x10/solo6x10.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/pci/solo6x10/solo6x10.h- Extension
.h- Size
- 9646 bytes
- Lines
- 381
- Domain
- Driver Families
- Bucket
- drivers/media
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/pci.hlinux/i2c.hlinux/mutex.hlinux/list.hlinux/wait.hlinux/stringify.hlinux/io.hlinux/atomic.hlinux/slab.hlinux/videodev2.hlinux/gpio/driver.hmedia/v4l2-dev.hmedia/v4l2-device.hmedia/v4l2-ctrls.hmedia/videobuf2-v4l2.hsolo6x10-regs.h
Detected Declarations
struct solo_p2m_descstruct solo_p2m_devstruct solo_vb2_bufstruct solo_enc_devstruct solo_devenum SOLO_I2C_STATEenum solo_enc_typesfunction solo_reg_readfunction solo_reg_writefunction solo_irq_onfunction solo_irq_off
Annotated Snippet
struct solo_p2m_desc {
u32 ctrl;
u32 cfg;
u32 dma_addr;
u32 ext_addr;
};
struct solo_p2m_dev {
struct mutex mutex;
struct completion completion;
int desc_count;
int desc_idx;
struct solo_p2m_desc *descs;
int error;
};
#define OSD_TEXT_MAX 44
struct solo_vb2_buf {
struct vb2_v4l2_buffer vb;
struct list_head list;
};
enum solo_enc_types {
SOLO_ENC_TYPE_STD,
SOLO_ENC_TYPE_EXT,
};
struct solo_enc_dev {
struct solo_dev *solo_dev;
/* V4L2 Items */
struct v4l2_ctrl_handler hdl;
struct v4l2_ctrl *md_thresholds;
struct video_device *vfd;
/* General accounting */
struct mutex lock;
spinlock_t motion_lock;
u8 ch;
u8 mode, gop, qp, interlaced, interval;
u8 bw_weight;
u16 motion_thresh;
bool motion_global;
bool motion_enabled;
u16 width;
u16 height;
/* OSD buffers */
char osd_text[OSD_TEXT_MAX + 1];
u8 osd_buf[SOLO_EOSD_EXT_SIZE_MAX]
__aligned(4);
/* VOP stuff */
u8 vop[64];
int vop_len;
u8 jpeg_header[1024];
int jpeg_len;
u32 fmt;
enum solo_enc_types type;
u32 sequence;
struct vb2_queue vidq;
struct list_head vidq_active;
int desc_count;
int desc_nelts;
struct solo_p2m_desc *desc_items;
dma_addr_t desc_dma;
spinlock_t av_lock;
};
/* The SOLO6x10 PCI Device */
struct solo_dev {
/* General stuff */
struct pci_dev *pdev;
int type;
unsigned int time_sync;
unsigned int usec_lsb;
unsigned int clock_mhz;
u8 __iomem *reg_base;
int nr_chans;
int nr_ext;
u32 irq_mask;
u32 motion_mask;
struct v4l2_device v4l2_dev;
#ifdef CONFIG_GPIOLIB
/* GPIO */
struct gpio_chip gpio_dev;
#endif
/* tw28xx accounting */
u8 tw2865, tw2864, tw2815;
Annotation
- Immediate include surface: `linux/pci.h`, `linux/i2c.h`, `linux/mutex.h`, `linux/list.h`, `linux/wait.h`, `linux/stringify.h`, `linux/io.h`, `linux/atomic.h`.
- Detected declarations: `struct solo_p2m_desc`, `struct solo_p2m_dev`, `struct solo_vb2_buf`, `struct solo_enc_dev`, `struct solo_dev`, `enum SOLO_I2C_STATE`, `enum solo_enc_types`, `function solo_reg_read`, `function solo_reg_write`, `function solo_irq_on`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.