drivers/media/dvb-frontends/tda18271c2dd.c
Source file repositories/reference/linux-study-clean/drivers/media/dvb-frontends/tda18271c2dd.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/dvb-frontends/tda18271c2dd.c- Extension
.c- Size
- 29114 bytes
- Lines
- 1236
- Domain
- Driver Families
- Bucket
- drivers/media
- Inferred role
- Driver Families: exported/initcall integration point
- Status
- integration 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.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- 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/kernel.hlinux/module.hlinux/init.hlinux/delay.hlinux/firmware.hlinux/i2c.hasm/div64.hmedia/dvb_frontend.htda18271c2dd.htda18271c2dd_maps.h
Detected Declarations
struct SStandardParamstruct SMapstruct SMapIstruct SMap2struct SRFBandMapstruct tda_stateenum ERegisterfunction i2c_readnfunction i2c_writefunction WriteRegsfunction WriteRegfunction Readfunction ReadExtentedfunction UpdateRegsfunction UpdateRegfunction resetfunction SearchMap1function SearchMap2function SearchMap3function SearchMap4function ThermometerReadfunction StandByfunction CalcMainPLLfunction CalcCalPLLfunction CalibrateRFfunction RFTrackingFiltersInitfunction PowerScanfunction PowerScanInitfunction CalcRFFilterCurvefunction FixedContentsI2CUpdatefunction InitCalfunction RFTrackingFiltersCorrectionfunction ChannelConfigurationfunction sleepfunction initfunction releasefunction set_paramsfunction GetSignalStrengthfunction get_if_frequencyfunction get_bandwidthexport tda18271c2dd_attach
Annotated Snippet
struct SStandardParam {
s32 m_IFFrequency;
u32 m_BandWidth;
u8 m_EP3_4_0;
u8 m_EB22;
};
struct SMap {
u32 m_Frequency;
u8 m_Param;
};
struct SMapI {
u32 m_Frequency;
s32 m_Param;
};
struct SMap2 {
u32 m_Frequency;
u8 m_Param1;
u8 m_Param2;
};
struct SRFBandMap {
u32 m_RF_max;
u32 m_RF1_Default;
u32 m_RF2_Default;
u32 m_RF3_Default;
};
enum ERegister {
ID = 0,
TM,
PL,
EP1, EP2, EP3, EP4, EP5,
CPD, CD1, CD2, CD3,
MPD, MD1, MD2, MD3,
EB1, EB2, EB3, EB4, EB5, EB6, EB7, EB8, EB9, EB10,
EB11, EB12, EB13, EB14, EB15, EB16, EB17, EB18, EB19, EB20,
EB21, EB22, EB23,
NUM_REGS
};
struct tda_state {
struct i2c_adapter *i2c;
u8 adr;
u32 m_Frequency;
u32 IF;
u8 m_IFLevelAnalog;
u8 m_IFLevelDigital;
u8 m_IFLevelDVBC;
u8 m_IFLevelDVBT;
u8 m_EP4;
u8 m_EP3_Standby;
bool m_bMaster;
s32 m_SettlingTime;
u8 m_Regs[NUM_REGS];
/* Tracking filter settings for band 0..6 */
u32 m_RF1[7];
s32 m_RF_A1[7];
s32 m_RF_B1[7];
u32 m_RF2[7];
s32 m_RF_A2[7];
s32 m_RF_B2[7];
u32 m_RF3[7];
u8 m_TMValue_RFCal; /* Calibration temperature */
bool m_bFMInput; /* true to use Pin 8 for FM Radio */
};
static int PowerScan(struct tda_state *state,
u8 RFBand, u32 RF_in,
u32 *pRF_Out, bool *pbcal);
static int i2c_readn(struct i2c_adapter *adapter, u8 adr, u8 *data, int len)
{
struct i2c_msg msgs[1] = {{.addr = adr, .flags = I2C_M_RD,
.buf = data, .len = len} };
return (i2c_transfer(adapter, msgs, 1) == 1) ? 0 : -1;
}
Annotation
- Immediate include surface: `linux/kernel.h`, `linux/module.h`, `linux/init.h`, `linux/delay.h`, `linux/firmware.h`, `linux/i2c.h`, `asm/div64.h`, `media/dvb_frontend.h`.
- Detected declarations: `struct SStandardParam`, `struct SMap`, `struct SMapI`, `struct SMap2`, `struct SRFBandMap`, `struct tda_state`, `enum ERegister`, `function i2c_readn`, `function i2c_write`, `function WriteRegs`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: integration 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.