sound/pcmcia/pdaudiocf/pdaudiocf.h
Source file repositories/reference/linux-study-clean/sound/pcmcia/pdaudiocf/pdaudiocf.h
File Facts
- System
- Linux kernel
- Corpus path
sound/pcmcia/pdaudiocf/pdaudiocf.h- Extension
.h- Size
- 4599 bytes
- Lines
- 129
- Domain
- Driver Families
- Bucket
- sound/pcmcia
- 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
sound/pcm.hlinux/io.hlinux/interrupt.hpcmcia/cistpl.hpcmcia/ds.hsound/ak4117.h
Detected Declarations
struct snd_pdacffunction pdacf_reg_writefunction pdacf_reg_read
Annotated Snippet
struct snd_pdacf {
struct snd_card *card;
int index;
unsigned long port;
int irq;
struct mutex reg_lock;
unsigned short regmap[8];
unsigned short suspend_reg_scr;
spinlock_t ak4117_lock;
struct ak4117 *ak4117;
unsigned int chip_status;
struct snd_pcm *pcm;
struct snd_pcm_substream *pcm_substream;
unsigned int pcm_running: 1;
unsigned int pcm_channels;
unsigned int pcm_swab;
unsigned int pcm_little;
unsigned int pcm_frame;
unsigned int pcm_sample;
unsigned int pcm_xor;
unsigned int pcm_size;
unsigned int pcm_period;
unsigned int pcm_tdone;
unsigned int pcm_hwptr;
void *pcm_area;
/* pcmcia stuff */
struct pcmcia_device *p_dev;
};
static inline void pdacf_reg_write(struct snd_pdacf *chip, unsigned char reg, unsigned short val)
{
outw(chip->regmap[reg>>1] = val, chip->port + reg);
}
static inline unsigned short pdacf_reg_read(struct snd_pdacf *chip, unsigned char reg)
{
return inw(chip->port + reg);
}
struct snd_pdacf *snd_pdacf_create(struct snd_card *card);
int snd_pdacf_ak4117_create(struct snd_pdacf *pdacf);
void snd_pdacf_powerdown(struct snd_pdacf *chip);
#ifdef CONFIG_PM
int snd_pdacf_suspend(struct snd_pdacf *chip);
int snd_pdacf_resume(struct snd_pdacf *chip);
#endif
int snd_pdacf_pcm_new(struct snd_pdacf *chip);
irqreturn_t pdacf_interrupt(int irq, void *dev);
irqreturn_t pdacf_threaded_irq(int irq, void *dev);
void pdacf_reinit(struct snd_pdacf *chip, int resume);
#endif /* __PDAUDIOCF_H */
Annotation
- Immediate include surface: `sound/pcm.h`, `linux/io.h`, `linux/interrupt.h`, `pcmcia/cistpl.h`, `pcmcia/ds.h`, `sound/ak4117.h`.
- Detected declarations: `struct snd_pdacf`, `function pdacf_reg_write`, `function pdacf_reg_read`.
- Atlas domain: Driver Families / sound/pcmcia.
- 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.