drivers/media/firewire/firedtv-ci.c
Source file repositories/reference/linux-study-clean/drivers/media/firewire/firedtv-ci.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/firewire/firedtv-ci.c- Extension
.c- Size
- 5587 bytes
- Lines
- 256
- Domain
- Driver Families
- Bucket
- drivers/media
- Inferred role
- Driver Families: operation-table or driver-model contract
- Status
- pattern 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.
- Defines an operation table; this is where Linux turns generic core objects into subsystem-specific behavior.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/device.hlinux/dvb/ca.hlinux/fs.hlinux/module.hmedia/dvbdev.hfiredtv.h
Detected Declarations
function driverfunction fdtv_get_ca_flagsfunction fdtv_ca_get_capsfunction fdtv_ca_get_slot_infofunction fdtv_ca_app_infofunction fdtv_ca_infofunction fdtv_ca_get_mmifunction fdtv_ca_get_msgfunction fdtv_ca_pmtfunction fdtv_ca_send_msgfunction fdtv_ca_ioctlfunction fdtv_ca_io_pollfunction fdtv_ca_registerfunction fdtv_ca_release
Annotated Snippet
static const struct file_operations fdtv_ca_fops = {
.owner = THIS_MODULE,
.unlocked_ioctl = dvb_generic_ioctl,
.open = dvb_generic_open,
.release = dvb_generic_release,
.poll = fdtv_ca_io_poll,
.llseek = noop_llseek,
};
static const struct dvb_device fdtv_ca = {
.users = 1,
.readers = 1,
.writers = 1,
.fops = &fdtv_ca_fops,
.kernel_ioctl = fdtv_ca_ioctl,
};
int fdtv_ca_register(struct firedtv *fdtv)
{
struct firedtv_tuner_status stat;
int err;
if (avc_tuner_status(fdtv, &stat))
return -EINVAL;
if (!fdtv_ca_ready(&stat))
return -EFAULT;
err = dvb_register_device(&fdtv->adapter, &fdtv->cadev,
&fdtv_ca, fdtv, DVB_DEVICE_CA, 0);
if (stat.ca_application_info == 0)
dev_err(fdtv->device, "CaApplicationInfo is not set\n");
if (stat.ca_date_time_request == 1)
avc_ca_get_time_date(fdtv, &fdtv->ca_time_interval);
return err;
}
void fdtv_ca_release(struct firedtv *fdtv)
{
dvb_unregister_device(fdtv->cadev);
}
Annotation
- Immediate include surface: `linux/device.h`, `linux/dvb/ca.h`, `linux/fs.h`, `linux/module.h`, `media/dvbdev.h`, `firedtv.h`.
- Detected declarations: `function driver`, `function fdtv_get_ca_flags`, `function fdtv_ca_get_caps`, `function fdtv_ca_get_slot_info`, `function fdtv_ca_app_info`, `function fdtv_ca_info`, `function fdtv_ca_get_mmi`, `function fdtv_ca_get_msg`, `function fdtv_ca_pmt`, `function fdtv_ca_send_msg`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: pattern implementation candidate.
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.