sound/pci/oxygen/oxygen_regs.h

Source file repositories/reference/linux-study-clean/sound/pci/oxygen/oxygen_regs.h

File Facts

System
Linux kernel
Corpus path
sound/pci/oxygen/oxygen_regs.h
Extension
.h
Size
16059 bytes
Lines
460
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.

Dependency Surface

Detected Declarations

Annotated Snippet

#ifndef OXYGEN_REGS_H_INCLUDED
#define OXYGEN_REGS_H_INCLUDED

/* recording channel A */
#define OXYGEN_DMA_A_ADDRESS		0x00	/* 32-bit base address */
#define OXYGEN_DMA_A_COUNT		0x04	/* buffer counter (dwords) */
#define OXYGEN_DMA_A_TCOUNT		0x06	/* interrupt counter (dwords) */

/* recording channel B */
#define OXYGEN_DMA_B_ADDRESS		0x08
#define OXYGEN_DMA_B_COUNT		0x0c
#define OXYGEN_DMA_B_TCOUNT		0x0e

/* recording channel C */
#define OXYGEN_DMA_C_ADDRESS		0x10
#define OXYGEN_DMA_C_COUNT		0x14
#define OXYGEN_DMA_C_TCOUNT		0x16

/* SPDIF playback channel */
#define OXYGEN_DMA_SPDIF_ADDRESS	0x18
#define OXYGEN_DMA_SPDIF_COUNT		0x1c
#define OXYGEN_DMA_SPDIF_TCOUNT		0x1e

/* multichannel playback channel */
#define OXYGEN_DMA_MULTICH_ADDRESS	0x20
#define OXYGEN_DMA_MULTICH_COUNT	0x24	/* 24 bits */
#define OXYGEN_DMA_MULTICH_TCOUNT	0x28	/* 24 bits */

/* AC'97 (front panel) playback channel */
#define OXYGEN_DMA_AC97_ADDRESS		0x30
#define OXYGEN_DMA_AC97_COUNT		0x34
#define OXYGEN_DMA_AC97_TCOUNT		0x36

/* all registers 0x00..0x36 return current position on read */

#define OXYGEN_DMA_STATUS		0x40	/* 1 = running, 0 = stop */
#define  OXYGEN_CHANNEL_A		0x01
#define  OXYGEN_CHANNEL_B		0x02
#define  OXYGEN_CHANNEL_C		0x04
#define  OXYGEN_CHANNEL_SPDIF		0x08
#define  OXYGEN_CHANNEL_MULTICH		0x10
#define  OXYGEN_CHANNEL_AC97		0x20

#define OXYGEN_DMA_PAUSE		0x41	/* 1 = pause */
/* OXYGEN_CHANNEL_* */

#define OXYGEN_DMA_RESET		0x42
/* OXYGEN_CHANNEL_* */

#define OXYGEN_PLAY_CHANNELS		0x43
#define  OXYGEN_PLAY_CHANNELS_MASK	0x03
#define  OXYGEN_PLAY_CHANNELS_2		0x00
#define  OXYGEN_PLAY_CHANNELS_4		0x01
#define  OXYGEN_PLAY_CHANNELS_6		0x02
#define  OXYGEN_PLAY_CHANNELS_8		0x03
#define  OXYGEN_DMA_A_BURST_MASK	0x04
#define  OXYGEN_DMA_A_BURST_8		0x00	/* dwords */
#define  OXYGEN_DMA_A_BURST_16		0x04
#define  OXYGEN_DMA_MULTICH_BURST_MASK	0x08
#define  OXYGEN_DMA_MULTICH_BURST_8	0x00
#define  OXYGEN_DMA_MULTICH_BURST_16	0x08

#define OXYGEN_INTERRUPT_MASK		0x44
/* OXYGEN_CHANNEL_* */
#define  OXYGEN_INT_SPDIF_IN_DETECT	0x0100
#define  OXYGEN_INT_MCU			0x0200
#define  OXYGEN_INT_2WIRE		0x0400
#define  OXYGEN_INT_GPIO		0x0800
#define  OXYGEN_INT_MCB			0x2000
#define  OXYGEN_INT_AC97		0x4000

#define OXYGEN_INTERRUPT_STATUS		0x46
/* OXYGEN_CHANNEL_* amd OXYGEN_INT_* */
#define  OXYGEN_INT_MIDI		0x1000

#define OXYGEN_MISC			0x48
#define  OXYGEN_MISC_WRITE_PCI_SUBID	0x01
#define  OXYGEN_MISC_LATENCY_3F		0x02
#define  OXYGEN_MISC_REC_C_FROM_SPDIF	0x04
#define  OXYGEN_MISC_REC_B_FROM_AC97	0x08
#define  OXYGEN_MISC_REC_A_FROM_MULTICH	0x10
#define  OXYGEN_MISC_PCI_MEM_W_1_CLOCK	0x20
#define  OXYGEN_MISC_MIDI		0x40
#define  OXYGEN_MISC_CRYSTAL_MASK	0x80
#define  OXYGEN_MISC_CRYSTAL_24576	0x00
#define  OXYGEN_MISC_CRYSTAL_27		0x80	/* MHz */

#define OXYGEN_REC_FORMAT		0x4a
#define  OXYGEN_REC_FORMAT_A_MASK	0x03
#define  OXYGEN_REC_FORMAT_A_SHIFT	0

Annotation

Implementation Notes