drivers/media/pci/smipcie/smipcie.h
Source file repositories/reference/linux-study-clean/drivers/media/pci/smipcie/smipcie.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/pci/smipcie/smipcie.h- Extension
.h- Size
- 12331 bytes
- Lines
- 311
- 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.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/i2c.hlinux/i2c-algo-bit.hlinux/init.hlinux/interrupt.hlinux/kernel.hlinux/module.hlinux/pci.hlinux/dma-mapping.hlinux/slab.hlinux/workqueue.hmedia/rc-core.hmedia/demux.hmedia/dmxdev.hmedia/dvb_demux.hmedia/dvb_frontend.hmedia/dvb_net.hmedia/dvbdev.h
Detected Declarations
struct smi_cfg_infostruct smi_rcstruct smi_portstruct smi_dev
Annotated Snippet
struct smi_cfg_info {
#define SMI_DVBSKY_S952 0
#define SMI_DVBSKY_S950 1
#define SMI_DVBSKY_T9580 2
#define SMI_DVBSKY_T982 3
#define SMI_TECHNOTREND_S2_4200 4
int type;
char *name;
#define SMI_TS_NULL 0
#define SMI_TS_DMA_SINGLE 1
#define SMI_TS_DMA_BOTH 3
/* SMI_TS_NULL: not use;
* SMI_TS_DMA_SINGLE: use DMA 0 only;
* SMI_TS_DMA_BOTH:use DMA 0 and 1.*/
int ts_0;
int ts_1;
#define DVBSKY_FE_NULL 0
#define DVBSKY_FE_M88RS6000 1
#define DVBSKY_FE_M88DS3103 2
#define DVBSKY_FE_SIT2 3
int fe_0;
int fe_1;
char *rc_map;
};
struct smi_rc {
struct smi_dev *dev;
struct rc_dev *rc_dev;
char input_phys[64];
char device_name[64];
u8 irData[256];
int users;
};
struct smi_port {
struct smi_dev *dev;
int idx;
int enable;
int fe_type;
/* regs */
u32 DMA_CHAN0_ADDR_LOW;
u32 DMA_CHAN0_ADDR_HI;
u32 DMA_CHAN0_TRANS_STATE;
u32 DMA_CHAN0_CONTROL;
u32 DMA_CHAN1_ADDR_LOW;
u32 DMA_CHAN1_ADDR_HI;
u32 DMA_CHAN1_TRANS_STATE;
u32 DMA_CHAN1_CONTROL;
u32 DMA_MANAGEMENT;
/* dma */
dma_addr_t dma_addr[2];
u8 *cpu_addr[2];
u32 _dmaInterruptCH0;
u32 _dmaInterruptCH1;
u32 _int_status;
struct work_struct bh_work;
/* dvb */
struct dmx_frontend hw_frontend;
struct dmx_frontend mem_frontend;
struct dmxdev dmxdev;
struct dvb_adapter dvb_adapter;
struct dvb_demux demux;
struct dvb_net dvbnet;
int users;
struct dvb_frontend *fe;
/* frontend i2c module */
struct i2c_client *i2c_client_demod;
struct i2c_client *i2c_client_tuner;
};
struct smi_dev {
int nr;
struct smi_cfg_info *info;
/* pcie */
struct pci_dev *pci_dev;
u32 __iomem *lmmio;
/* ts port */
struct smi_port ts_port[2];
/* i2c */
struct i2c_adapter i2c_bus[2];
struct i2c_algo_bit_data i2c_bit[2];
/* ir */
struct smi_rc ir;
};
Annotation
- Immediate include surface: `linux/i2c.h`, `linux/i2c-algo-bit.h`, `linux/init.h`, `linux/interrupt.h`, `linux/kernel.h`, `linux/module.h`, `linux/pci.h`, `linux/dma-mapping.h`.
- Detected declarations: `struct smi_cfg_info`, `struct smi_rc`, `struct smi_port`, `struct smi_dev`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: source implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
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.