drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt.c
Source file repositories/reference/linux-study-clean/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt.c- Extension
.c- Size
- 21562 bytes
- Lines
- 920
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
media/dvb_frontend.hcxd2880_tnrdmd_dvbt.hcxd2880_tnrdmd_dvbt_mon.h
Detected Declarations
function x_tune_dvbt_demod_settingfunction x_sleep_dvbt_demod_settingfunction dvbt_set_profilefunction cxd2880_tnrdmd_dvbt_tune1function cxd2880_tnrdmd_dvbt_tune2function cxd2880_tnrdmd_dvbt_sleep_settingfunction cxd2880_tnrdmd_dvbt_check_demod_lockfunction cxd2880_tnrdmd_dvbt_check_ts_lock
Annotated Snippet
switch (clk_mode) {
case CXD2880_TNRDMD_CLOCKMODE_A:
data = maxclkcnt_a;
break;
case CXD2880_TNRDMD_CLOCKMODE_B:
data = maxclkcnt_b;
break;
case CXD2880_TNRDMD_CLOCKMODE_C:
data = maxclkcnt_c;
break;
default:
return -EINVAL;
}
ret = tnr_dmd->io->write_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
0x68, data, 3);
if (ret)
return ret;
}
ret = tnr_dmd->io->write_reg(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
0x00, 0x04);
if (ret)
return ret;
switch (bandwidth) {
case CXD2880_DTV_BW_8_MHZ:
switch (clk_mode) {
case CXD2880_TNRDMD_CLOCKMODE_A:
case CXD2880_TNRDMD_CLOCKMODE_C:
data = bw8_nomi_ac;
break;
case CXD2880_TNRDMD_CLOCKMODE_B:
data = bw8_nomi_b;
break;
default:
return -EINVAL;
}
ret = tnr_dmd->io->write_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
0x60, data, 5);
if (ret)
return ret;
ret = tnr_dmd->io->write_reg(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
0x4a, 0x00);
if (ret)
return ret;
switch (clk_mode) {
case CXD2880_TNRDMD_CLOCKMODE_A:
data = bw8_gtdofst_a;
break;
case CXD2880_TNRDMD_CLOCKMODE_B:
data = bw8_gtdofst_b;
break;
case CXD2880_TNRDMD_CLOCKMODE_C:
data = bw8_gtdofst_c;
break;
default:
return -EINVAL;
}
ret = tnr_dmd->io->write_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
0x7d, data, 2);
if (ret)
return ret;
switch (clk_mode) {
case CXD2880_TNRDMD_CLOCKMODE_A:
case CXD2880_TNRDMD_CLOCKMODE_B:
sst_data = 0x35;
break;
case CXD2880_TNRDMD_CLOCKMODE_C:
sst_data = 0x34;
break;
default:
return -EINVAL;
}
ret = tnr_dmd->io->write_reg(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
0x71, sst_data);
if (ret)
return ret;
Annotation
- Immediate include surface: `media/dvb_frontend.h`, `cxd2880_tnrdmd_dvbt.h`, `cxd2880_tnrdmd_dvbt_mon.h`.
- Detected declarations: `function x_tune_dvbt_demod_setting`, `function x_sleep_dvbt_demod_setting`, `function dvbt_set_profile`, `function cxd2880_tnrdmd_dvbt_tune1`, `function cxd2880_tnrdmd_dvbt_tune2`, `function cxd2880_tnrdmd_dvbt_sleep_setting`, `function cxd2880_tnrdmd_dvbt_check_demod_lock`, `function cxd2880_tnrdmd_dvbt_check_ts_lock`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: source 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.