drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2.c
Source file repositories/reference/linux-study-clean/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2.c- Extension
.c- Size
- 27417 bytes
- Lines
- 1218
- 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_dvbt2.hcxd2880_tnrdmd_dvbt2_mon.h
Detected Declarations
function x_tune_dvbt2_demod_settingfunction x_sleep_dvbt2_demod_settingfunction dvbt2_set_profilefunction cxd2880_tnrdmd_dvbt2_tune1function cxd2880_tnrdmd_dvbt2_tune2function cxd2880_tnrdmd_dvbt2_sleep_settingfunction cxd2880_tnrdmd_dvbt2_check_demod_lockfunction cxd2880_tnrdmd_dvbt2_check_ts_lockfunction cxd2880_tnrdmd_dvbt2_set_plp_cfgfunction cxd2880_tnrdmd_dvbt2_diver_fef_settingfunction cxd2880_tnrdmd_dvbt2_check_l1post_valid
Annotated Snippet
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,
0x10, data, 6);
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:
case CXD2880_TNRDMD_CLOCKMODE_C:
data = gtdofst;
break;
default:
return -EINVAL;
}
ret = tnr_dmd->io->write_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
0x19, data, 2);
if (ret)
return ret;
switch (clk_mode) {
case CXD2880_TNRDMD_CLOCKMODE_A:
data = bw8_sst_a;
break;
case CXD2880_TNRDMD_CLOCKMODE_B:
data = bw8_sst_b;
break;
case CXD2880_TNRDMD_CLOCKMODE_C:
data = bw8_sst_c;
break;
default:
return -EINVAL;
}
ret = tnr_dmd->io->write_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
0x1b, data, 2);
if (ret)
return ret;
if (tnr_dmd->diver_mode == CXD2880_TNRDMD_DIVERMODE_MAIN) {
switch (clk_mode) {
case CXD2880_TNRDMD_CLOCKMODE_A:
data = bw8_mrc_a;
break;
case CXD2880_TNRDMD_CLOCKMODE_B:
data = bw8_mrc_b;
break;
case CXD2880_TNRDMD_CLOCKMODE_C:
data = bw8_mrc_c;
break;
default:
return -EINVAL;
}
ret = tnr_dmd->io->write_regs(tnr_dmd->io,
CXD2880_IO_TGT_DMD,
0x4b, data, 9);
if (ret)
return ret;
}
break;
case CXD2880_DTV_BW_7_MHZ:
switch (clk_mode) {
case CXD2880_TNRDMD_CLOCKMODE_A:
case CXD2880_TNRDMD_CLOCKMODE_C:
data = bw7_nomi_ac;
Annotation
- Immediate include surface: `media/dvb_frontend.h`, `cxd2880_tnrdmd_dvbt2.h`, `cxd2880_tnrdmd_dvbt2_mon.h`.
- Detected declarations: `function x_tune_dvbt2_demod_setting`, `function x_sleep_dvbt2_demod_setting`, `function dvbt2_set_profile`, `function cxd2880_tnrdmd_dvbt2_tune1`, `function cxd2880_tnrdmd_dvbt2_tune2`, `function cxd2880_tnrdmd_dvbt2_sleep_setting`, `function cxd2880_tnrdmd_dvbt2_check_demod_lock`, `function cxd2880_tnrdmd_dvbt2_check_ts_lock`, `function cxd2880_tnrdmd_dvbt2_set_plp_cfg`, `function cxd2880_tnrdmd_dvbt2_diver_fef_setting`.
- 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.