drivers/media/usb/ttusb-dec/ttusb_dec.c
Source file repositories/reference/linux-study-clean/drivers/media/usb/ttusb-dec/ttusb_dec.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/usb/ttusb-dec/ttusb_dec.c- Extension
.c- Size
- 40803 bytes
- Lines
- 1786
- 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.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/list.hlinux/module.hlinux/pci.hlinux/slab.hlinux/spinlock.hlinux/usb.hlinux/interrupt.hlinux/firmware.hlinux/crc32.hlinux/init.hlinux/input.hlinux/mutex.hlinux/workqueue.hmedia/dmxdev.hmedia/dvb_demux.hmedia/dvb_frontend.hmedia/dvb_net.httusbdecfe.h
Detected Declarations
struct dvb_filter_pes2tsstruct ttusb_decstruct urb_framestruct filter_infoenum ttusb_dec_modelenum ttusb_dec_packet_typeenum ttusb_dec_interfacefunction dvb_filter_pes2ts_initfunction dvb_filter_pes2tsfunction ttusb_dec_handle_irqfunction crc16function ttusb_dec_send_commandfunction ttusb_dec_get_stb_statefunction ttusb_dec_audio_pes2ts_cbfunction ttusb_dec_video_pes2ts_cbfunction ttusb_dec_set_pidsfunction ttusb_dec_process_pvafunction ttusb_dec_process_filterfunction ttusb_dec_process_packetfunction swap_bytesfunction ttusb_dec_process_urb_framefunction ttusb_dec_process_urb_frame_listfunction ttusb_dec_process_urbfunction ttusb_dec_setup_urbsfunction ttusb_dec_stop_iso_xferfunction ttusb_dec_set_interfacefunction ttusb_dec_start_iso_xferfunction ttusb_dec_start_ts_feedfunction ttusb_dec_start_sec_feedfunction ttusb_dec_start_feedfunction ttusb_dec_stop_ts_feedfunction ttusb_dec_stop_sec_feedfunction ttusb_dec_stop_feedfunction ttusb_dec_free_iso_urbsfunction ttusb_dec_alloc_iso_urbsfunction ttusb_dec_init_bh_workfunction ttusb_init_rcfunction ttusb_dec_init_v_pesfunction ttusb_dec_init_usbfunction ttusb_dec_boot_dspfunction ttusb_dec_init_stbfunction ttusb_dec_init_dvbfunction ttusb_dec_exit_dvbfunction ttusb_dec_exit_rcfunction ttusb_dec_exit_usbfunction ttusb_dec_exit_bh_workfunction ttusb_dec_init_filtersfunction ttusb_dec_exit_filters
Annotated Snippet
struct dvb_filter_pes2ts {
unsigned char buf[188];
unsigned char cc;
dvb_filter_pes2ts_cb_t *cb;
void *priv;
};
struct ttusb_dec {
enum ttusb_dec_model model;
char *model_name;
char *firmware_name;
int can_playback;
/* DVB bits */
struct dvb_adapter adapter;
struct dmxdev dmxdev;
struct dvb_demux demux;
struct dmx_frontend frontend;
struct dvb_net dvb_net;
struct dvb_frontend* fe;
u16 pid[DMX_PES_OTHER];
/* USB bits */
struct usb_device *udev;
u8 trans_count;
unsigned int command_pipe;
unsigned int result_pipe;
unsigned int in_pipe;
unsigned int out_pipe;
unsigned int irq_pipe;
enum ttusb_dec_interface interface;
struct mutex usb_mutex;
void *irq_buffer;
struct urb *irq_urb;
dma_addr_t irq_dma_handle;
void *iso_buffer;
struct urb *iso_urb[ISO_BUF_COUNT];
int iso_stream_count;
struct mutex iso_mutex;
u8 packet[MAX_PVA_LENGTH + 4];
enum ttusb_dec_packet_type packet_type;
int packet_state;
int packet_length;
int packet_payload_length;
u16 next_packet_id;
int pva_stream_count;
int filter_stream_count;
struct dvb_filter_pes2ts a_pes2ts;
struct dvb_filter_pes2ts v_pes2ts;
u8 v_pes[16 + MAX_PVA_LENGTH];
int v_pes_length;
int v_pes_postbytes;
struct list_head urb_frame_list;
struct work_struct urb_bh_work;
spinlock_t urb_frame_list_lock;
struct dvb_demux_filter *audio_filter;
struct dvb_demux_filter *video_filter;
struct list_head filter_info_list;
spinlock_t filter_info_list_lock;
struct input_dev *rc_input_dev;
char rc_phys[64];
int active; /* Loaded successfully */
};
struct urb_frame {
u8 data[ISO_FRAME_SIZE];
int length;
struct list_head urb_frame_list;
};
struct filter_info {
u8 stream_id;
struct dvb_demux_filter *filter;
struct list_head filter_info_list;
};
static u16 rc_keys[] = {
KEY_POWER,
KEY_MUTE,
KEY_1,
Annotation
- Immediate include surface: `linux/list.h`, `linux/module.h`, `linux/pci.h`, `linux/slab.h`, `linux/spinlock.h`, `linux/usb.h`, `linux/interrupt.h`, `linux/firmware.h`.
- Detected declarations: `struct dvb_filter_pes2ts`, `struct ttusb_dec`, `struct urb_frame`, `struct filter_info`, `enum ttusb_dec_model`, `enum ttusb_dec_packet_type`, `enum ttusb_dec_interface`, `function dvb_filter_pes2ts_init`, `function dvb_filter_pes2ts`, `function ttusb_dec_handle_irq`.
- 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.