sound/pci/ice1712/se.c
Source file repositories/reference/linux-study-clean/sound/pci/ice1712/se.c
File Facts
- System
- Linux kernel
- Corpus path
sound/pci/ice1712/se.c- Extension
.c- Size
- 19859 bytes
- Lines
- 753
- Domain
- Driver Families
- Bucket
- sound/pci
- 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.
- 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/delay.hlinux/interrupt.hlinux/init.hlinux/slab.hsound/core.hsound/tlv.hice1712.henvy24ht.hse.h
Detected Declarations
struct se_specstruct se200pci_controlfunction MUTEBfunction se200pci_WM8766_set_volumefunction se200pci_WM8766_initfunction se200pci_WM8766_set_pro_ratefunction se200pci_WM8776_writefunction se200pci_WM8776_set_output_volumefunction se200pci_WM8776_set_input_volumefunction se200pci_WM8776_set_input_selectorfunction se200pci_WM8776_set_aflfunction se200pci_WM8776_set_agcfunction se200pci_WM8776_initfunction se200pci_WM8776_set_pro_ratefunction se200pci_get_enum_countfunction se200pci_cont_volume_infofunction se200pci_cont_enum_infofunction se200pci_cont_volume_getfunction se200pci_cont_boolean_getfunction se200pci_cont_enum_getfunction se200pci_cont_updatefunction se200pci_cont_volume_putfunction se200pci_cont_boolean_putfunction se200pci_cont_enum_putfunction se200pci_add_controlsfunction MUTEBfunction se_add_controls
Annotated Snippet
struct se_spec {
struct {
unsigned char ch1, ch2;
} vol[8];
};
/****************************************************************************/
/* ONKYO WAVIO SE-200PCI */
/****************************************************************************/
/*
* system configuration ICE_EEP2_SYSCONF=0x4b
* XIN1 49.152MHz
* not have UART
* one stereo ADC and a S/PDIF receiver connected
* four stereo DACs connected
*
* AC-Link configuration ICE_EEP2_ACLINK=0x80
* use I2C, not use AC97
*
* I2S converters feature ICE_EEP2_I2S=0x78
* I2S codec has no volume/mute control feature
* I2S codec supports 96KHz and 192KHz
* I2S codec 24bits
*
* S/PDIF configuration ICE_EEP2_SPDIF=0xc3
* Enable integrated S/PDIF transmitter
* internal S/PDIF out implemented
* S/PDIF is stereo
* External S/PDIF out implemented
*
*
* ** connected chips **
*
* WM8740
* A 2ch-DAC of main outputs.
* It setuped as I2S mode by wire, so no way to setup from software.
* The sample-rate are automatically changed.
* ML/I2S (28pin) --------+
* MC/DM1 (27pin) -- 5V |
* MD/DM0 (26pin) -- GND |
* MUTEB (25pin) -- NC |
* MODE (24pin) -- GND |
* CSBIW (23pin) --------+
* |
* RSTB (22pin) --R(1K)-+
* Probably it reduce the noise from the control line.
*
* WM8766
* A 6ch-DAC for surrounds.
* It's control wire was connected to GPIOxx (3-wire serial interface)
* ML/I2S (11pin) -- GPIO18
* MC/IWL (12pin) -- GPIO17
* MD/DM (13pin) -- GPIO16
* MUTE (14pin) -- GPIO01
*
* WM8776
* A 2ch-ADC(with 10ch-selector) plus 2ch-DAC.
* It's control wire was connected to SDA/SCLK (2-wire serial interface)
* MODE (16pin) -- R(1K) -- GND
* CE (17pin) -- R(1K) -- GND 2-wire mode (address=0x34)
* DI (18pin) -- SDA
* CL (19pin) -- SCLK
*
*
* ** output pins and device names **
*
* 7.1ch name -- output connector color -- device (-D option)
*
* FRONT 2ch -- green -- plughw:0,0
* CENTER(Lch) SUBWOOFER(Rch) -- black -- plughw:0,2,0
* SURROUND 2ch -- orange -- plughw:0,2,1
* SURROUND BACK 2ch -- white -- plughw:0,2,2
*
*/
/****************************************************************************/
/* WM8740 interface */
/****************************************************************************/
static void se200pci_WM8740_init(struct snd_ice1712 *ice)
{
/* nothing to do */
}
static void se200pci_WM8740_set_pro_rate(struct snd_ice1712 *ice,
unsigned int rate)
{
/* nothing to do */
Annotation
- Immediate include surface: `linux/delay.h`, `linux/interrupt.h`, `linux/init.h`, `linux/slab.h`, `sound/core.h`, `sound/tlv.h`, `ice1712.h`, `envy24ht.h`.
- Detected declarations: `struct se_spec`, `struct se200pci_control`, `function MUTEB`, `function se200pci_WM8766_set_volume`, `function se200pci_WM8766_init`, `function se200pci_WM8766_set_pro_rate`, `function se200pci_WM8776_write`, `function se200pci_WM8776_set_output_volume`, `function se200pci_WM8776_set_input_volume`, `function se200pci_WM8776_set_input_selector`.
- Atlas domain: Driver Families / sound/pci.
- 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.