drivers/media/usb/pvrusb2/pvrusb2-hdw-internal.h
Source file repositories/reference/linux-study-clean/drivers/media/usb/pvrusb2/pvrusb2-hdw-internal.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/usb/pvrusb2/pvrusb2-hdw-internal.h- Extension
.h- Size
- 13041 bytes
- Lines
- 382
- 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/videodev2.hlinux/i2c.hlinux/workqueue.hlinux/mutex.hpvrusb2-hdw.hpvrusb2-io.hmedia/v4l2-device.hmedia/drv-intf/cx2341x.hmedia/i2c/ir-kbd-i2c.hpvrusb2-devattr.h
Detected Declarations
struct pvr2_ctl_infostruct pvr2_ctld_infostruct pvr2_ctrlstruct pvr2_hdw
Annotated Snippet
struct pvr2_ctl_info {
/* Control's name suitable for use as an identifier */
const char *name;
/* Short description of control */
const char *desc;
/* Control's implementation */
pvr2_ctlf_get_value get_value; /* Get its value */
pvr2_ctlf_get_value get_def_value; /* Get its default value */
pvr2_ctlf_get_value get_min_value; /* Get minimum allowed value */
pvr2_ctlf_get_value get_max_value; /* Get maximum allowed value */
pvr2_ctlf_set_value set_value; /* Set its value */
pvr2_ctlf_check_value check_value; /* Check that value is valid */
pvr2_ctlf_val_to_sym val_to_sym; /* Custom convert value->symbol */
pvr2_ctlf_sym_to_val sym_to_val; /* Custom convert symbol->value */
pvr2_ctlf_is_dirty is_dirty; /* Return true if dirty */
pvr2_ctlf_clear_dirty clear_dirty; /* Clear dirty state */
pvr2_ctlf_get_v4lflags get_v4lflags;/* Retrieve v4l flags */
/* Control's type (int, enum, bitmask) */
enum pvr2_ctl_type type;
/* Associated V4L control ID, if any */
int v4l_id;
/* Associated driver internal ID, if any */
int internal_id;
/* Don't implicitly initialize this control's value */
int skip_init;
/* Starting value for this control */
int default_value;
/* Type-specific control information */
union {
struct { /* Integer control */
long min_value; /* lower limit */
long max_value; /* upper limit */
} type_int;
struct { /* enumerated control */
unsigned int count; /* enum value count */
const char * const *value_names; /* symbol names */
} type_enum;
struct { /* bitmask control */
unsigned int valid_bits; /* bits in use */
const char **bit_names; /* symbol name/bit */
} type_bitmask;
} def;
};
/* Same as pvr2_ctl_info, but includes storage for the control description */
#define PVR2_CTLD_INFO_DESC_SIZE 32
struct pvr2_ctld_info {
struct pvr2_ctl_info info;
char desc[PVR2_CTLD_INFO_DESC_SIZE];
};
struct pvr2_ctrl {
const struct pvr2_ctl_info *info;
struct pvr2_hdw *hdw;
};
/* Disposition of firmware1 loading situation */
#define FW1_STATE_UNKNOWN 0
#define FW1_STATE_MISSING 1
#define FW1_STATE_FAILED 2
#define FW1_STATE_RELOAD 3
#define FW1_STATE_OK 4
/* What state the device is in if it is a hybrid */
#define PVR2_PATHWAY_UNKNOWN 0
#define PVR2_PATHWAY_ANALOG 1
#define PVR2_PATHWAY_DIGITAL 2
typedef int (*pvr2_i2c_func)(struct pvr2_hdw *,u8,u8 *,u16,u8 *, u16);
#define PVR2_I2C_FUNC_CNT 128
/* This structure contains all state data directly needed to
manipulate the hardware (as opposed to complying with a kernel
interface) */
struct pvr2_hdw {
/* Underlying USB device handle */
struct usb_device *usb_dev;
struct usb_interface *usb_intf;
Annotation
- Immediate include surface: `linux/videodev2.h`, `linux/i2c.h`, `linux/workqueue.h`, `linux/mutex.h`, `pvrusb2-hdw.h`, `pvrusb2-io.h`, `media/v4l2-device.h`, `media/drv-intf/cx2341x.h`.
- Detected declarations: `struct pvr2_ctl_info`, `struct pvr2_ctld_info`, `struct pvr2_ctrl`, `struct pvr2_hdw`.
- 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.