FreeBSD kernel sound device code
hdspe.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  hdspe_channel
 
struct  sc_chinfo
 
struct  sc_pcminfo
 
struct  sc_info
 

Macros

#define PCI_VENDOR_XILINX   0x10ee
 
#define PCI_DEVICE_XILINX_HDSPE   0x3fc6 /* AIO, MADI, AES, RayDAT */
 
#define PCI_CLASS_REVISION   0x08
 
#define PCI_REVISION_AIO   212
 
#define PCI_REVISION_RAYDAT   211
 
#define AIO   0
 
#define RAYDAT   1
 
#define HDSPE_OUT_ENABLE_BASE   512
 
#define HDSPE_IN_ENABLE_BASE   768
 
#define HDSPE_MIXER_BASE   32768
 
#define HDSPE_MAX_GAIN   32768
 
#define HDSPE_PAGE_ADDR_BUF_OUT   8192
 
#define HDSPE_PAGE_ADDR_BUF_IN   (HDSPE_PAGE_ADDR_BUF_OUT + 64 * 16 * 4)
 
#define HDSPE_BUF_POSITION_MASK   0x000FFC0
 
#define HDSPE_FREQ_0   (1 << 6)
 
#define HDSPE_FREQ_1   (1 << 7)
 
#define HDSPE_FREQ_DOUBLE   (1 << 8)
 
#define HDSPE_FREQ_QUAD   (1 << 31)
 
#define HDSPE_FREQ_32000   HDSPE_FREQ_0
 
#define HDSPE_FREQ_44100   HDSPE_FREQ_1
 
#define HDSPE_FREQ_48000   (HDSPE_FREQ_0 | HDSPE_FREQ_1)
 
#define HDSPE_FREQ_MASK
 
#define HDSPE_FREQ_MASK_DEFAULT   HDSPE_FREQ_48000
 
#define HDSPE_FREQ_REG   256
 
#define HDSPE_FREQ_AIO   104857600000000ULL
 
#define HDSPE_SPEED_DEFAULT   48000
 
#define HDSPE_LAT_0   (1 << 1)
 
#define HDSPE_LAT_1   (1 << 2)
 
#define HDSPE_LAT_2   (1 << 3)
 
#define HDSPE_LAT_MASK   (HDSPE_LAT_0 | HDSPE_LAT_1 | HDSPE_LAT_2)
 
#define HDSPE_LAT_BYTES_MAX   (4096 * 4)
 
#define HDSPE_LAT_BYTES_MIN   (32 * 4)
 
#define hdspe_encode_latency(x)   (((x)<<1) & HDSPE_LAT_MASK)
 
#define HDSP_ADGain0   (1 << 25)
 
#define HDSP_ADGain1   (1 << 26)
 
#define HDSP_DAGain0   (1 << 27)
 
#define HDSP_DAGain1   (1 << 28)
 
#define HDSP_PhoneGain0   (1 << 29)
 
#define HDSP_PhoneGain1   (1 << 30)
 
#define HDSP_ADGainMask   (HDSP_ADGain0 | HDSP_ADGain1)
 
#define HDSP_ADGainMinus10dBV   (HDSP_ADGainMask)
 
#define HDSP_ADGainPlus4dBu   (HDSP_ADGain0)
 
#define HDSP_ADGainLowGain   0
 
#define HDSP_DAGainMask   (HDSP_DAGain0 | HDSP_DAGain1)
 
#define HDSP_DAGainHighGain   (HDSP_DAGainMask)
 
#define HDSP_DAGainPlus4dBu   (HDSP_DAGain0)
 
#define HDSP_DAGainMinus10dBV   0
 
#define HDSP_PhoneGainMask   (HDSP_PhoneGain0|HDSP_PhoneGain1)
 
#define HDSP_PhoneGain0dB   HDSP_PhoneGainMask
 
#define HDSP_PhoneGainMinus6dB   (HDSP_PhoneGain0)
 
#define HDSP_PhoneGainMinus12dB   0
 
#define HDSPM_statusRegister   0
 
#define HDSPM_statusRegister2   192
 
#define HDSPE_SETTINGS_REG   0
 
#define HDSPE_CONTROL_REG   64
 
#define HDSPE_STATUS_REG   0
 
#define HDSPE_ENABLE   (1 << 0)
 
#define HDSPM_CLOCK_MODE_MASTER   (1 << 4)
 
#define HDSPE_AUDIO_IRQ_PENDING   (1 << 0)
 
#define HDSPE_AUDIO_INT_ENABLE   (1 << 5)
 
#define HDSPE_INTERRUPT_ACK   96
 
#define HDSPE_MAX_SLOTS   64 /* Mono channels */
 
#define HDSPE_MAX_CHANS   (HDSPE_MAX_SLOTS / 2) /* Stereo pairs */
 
#define HDSPE_CHANBUF_SAMPLES   (16 * 1024)
 
#define HDSPE_CHANBUF_SIZE   (4 * HDSPE_CHANBUF_SAMPLES)
 
#define HDSPE_DMASEGSIZE   (HDSPE_CHANBUF_SIZE * HDSPE_MAX_SLOTS)
 
#define hdspe_read_1(sc, regno)    bus_space_read_1((sc)->cst, (sc)->csh, (regno))
 
#define hdspe_read_2(sc, regno)    bus_space_read_2((sc)->cst, (sc)->csh, (regno))
 
#define hdspe_read_4(sc, regno)    bus_space_read_4((sc)->cst, (sc)->csh, (regno))
 
#define hdspe_write_1(sc, regno, data)    bus_space_write_1((sc)->cst, (sc)->csh, (regno), (data))
 
#define hdspe_write_2(sc, regno, data)    bus_space_write_2((sc)->cst, (sc)->csh, (regno), (data))
 
#define hdspe_write_4(sc, regno, data)    bus_space_write_4((sc)->cst, (sc)->csh, (regno), (data))
 

Functions

static MALLOC_DEFINE (M_HDSPE, "hdspe", "hdspe audio")
 

Macro Definition Documentation

◆ AIO

#define AIO   0

Definition at line 37 of file hdspe.h.

◆ HDSP_ADGain0

#define HDSP_ADGain0   (1 << 25)

Definition at line 78 of file hdspe.h.

◆ HDSP_ADGain1

#define HDSP_ADGain1   (1 << 26)

Definition at line 79 of file hdspe.h.

◆ HDSP_ADGainLowGain

#define HDSP_ADGainLowGain   0

Definition at line 88 of file hdspe.h.

◆ HDSP_ADGainMask

#define HDSP_ADGainMask   (HDSP_ADGain0 | HDSP_ADGain1)

Definition at line 85 of file hdspe.h.

◆ HDSP_ADGainMinus10dBV

#define HDSP_ADGainMinus10dBV   (HDSP_ADGainMask)

Definition at line 86 of file hdspe.h.

◆ HDSP_ADGainPlus4dBu

#define HDSP_ADGainPlus4dBu   (HDSP_ADGain0)

Definition at line 87 of file hdspe.h.

◆ HDSP_DAGain0

#define HDSP_DAGain0   (1 << 27)

Definition at line 80 of file hdspe.h.

◆ HDSP_DAGain1

#define HDSP_DAGain1   (1 << 28)

Definition at line 81 of file hdspe.h.

◆ HDSP_DAGainHighGain

#define HDSP_DAGainHighGain   (HDSP_DAGainMask)

Definition at line 91 of file hdspe.h.

◆ HDSP_DAGainMask

#define HDSP_DAGainMask   (HDSP_DAGain0 | HDSP_DAGain1)

Definition at line 90 of file hdspe.h.

◆ HDSP_DAGainMinus10dBV

#define HDSP_DAGainMinus10dBV   0

Definition at line 93 of file hdspe.h.

◆ HDSP_DAGainPlus4dBu

#define HDSP_DAGainPlus4dBu   (HDSP_DAGain0)

Definition at line 92 of file hdspe.h.

◆ HDSP_PhoneGain0

#define HDSP_PhoneGain0   (1 << 29)

Definition at line 82 of file hdspe.h.

◆ HDSP_PhoneGain0dB

#define HDSP_PhoneGain0dB   HDSP_PhoneGainMask

Definition at line 96 of file hdspe.h.

◆ HDSP_PhoneGain1

#define HDSP_PhoneGain1   (1 << 30)

Definition at line 83 of file hdspe.h.

◆ HDSP_PhoneGainMask

#define HDSP_PhoneGainMask   (HDSP_PhoneGain0|HDSP_PhoneGain1)

Definition at line 95 of file hdspe.h.

◆ HDSP_PhoneGainMinus12dB

#define HDSP_PhoneGainMinus12dB   0

Definition at line 98 of file hdspe.h.

◆ HDSP_PhoneGainMinus6dB

#define HDSP_PhoneGainMinus6dB   (HDSP_PhoneGain0)

Definition at line 97 of file hdspe.h.

◆ HDSPE_AUDIO_INT_ENABLE

#define HDSPE_AUDIO_INT_ENABLE   (1 << 5)

Definition at line 112 of file hdspe.h.

◆ HDSPE_AUDIO_IRQ_PENDING

#define HDSPE_AUDIO_IRQ_PENDING   (1 << 0)

Definition at line 111 of file hdspe.h.

◆ HDSPE_BUF_POSITION_MASK

#define HDSPE_BUF_POSITION_MASK   0x000FFC0

Definition at line 49 of file hdspe.h.

◆ HDSPE_CHANBUF_SAMPLES

#define HDSPE_CHANBUF_SAMPLES   (16 * 1024)

Definition at line 119 of file hdspe.h.

◆ HDSPE_CHANBUF_SIZE

#define HDSPE_CHANBUF_SIZE   (4 * HDSPE_CHANBUF_SAMPLES)

Definition at line 120 of file hdspe.h.

◆ HDSPE_CONTROL_REG

#define HDSPE_CONTROL_REG   64

Definition at line 105 of file hdspe.h.

◆ HDSPE_DMASEGSIZE

#define HDSPE_DMASEGSIZE   (HDSPE_CHANBUF_SIZE * HDSPE_MAX_SLOTS)

Definition at line 121 of file hdspe.h.

◆ HDSPE_ENABLE

#define HDSPE_ENABLE   (1 << 0)

Definition at line 107 of file hdspe.h.

◆ hdspe_encode_latency

#define hdspe_encode_latency (   x)    (((x)<<1) & HDSPE_LAT_MASK)

Definition at line 75 of file hdspe.h.

◆ HDSPE_FREQ_0

#define HDSPE_FREQ_0   (1 << 6)

Definition at line 52 of file hdspe.h.

◆ HDSPE_FREQ_1

#define HDSPE_FREQ_1   (1 << 7)

Definition at line 53 of file hdspe.h.

◆ HDSPE_FREQ_32000

#define HDSPE_FREQ_32000   HDSPE_FREQ_0

Definition at line 57 of file hdspe.h.

◆ HDSPE_FREQ_44100

#define HDSPE_FREQ_44100   HDSPE_FREQ_1

Definition at line 58 of file hdspe.h.

◆ HDSPE_FREQ_48000

#define HDSPE_FREQ_48000   (HDSPE_FREQ_0 | HDSPE_FREQ_1)

Definition at line 59 of file hdspe.h.

◆ HDSPE_FREQ_AIO

#define HDSPE_FREQ_AIO   104857600000000ULL

Definition at line 64 of file hdspe.h.

◆ HDSPE_FREQ_DOUBLE

#define HDSPE_FREQ_DOUBLE   (1 << 8)

Definition at line 54 of file hdspe.h.

◆ HDSPE_FREQ_MASK

#define HDSPE_FREQ_MASK
Value:
HDSPE_FREQ_DOUBLE | HDSPE_FREQ_QUAD)
#define HDSPE_FREQ_1
Definition: hdspe.h:53
#define HDSPE_FREQ_QUAD
Definition: hdspe.h:55
#define HDSPE_FREQ_0
Definition: hdspe.h:52

Definition at line 60 of file hdspe.h.

◆ HDSPE_FREQ_MASK_DEFAULT

#define HDSPE_FREQ_MASK_DEFAULT   HDSPE_FREQ_48000

Definition at line 62 of file hdspe.h.

◆ HDSPE_FREQ_QUAD

#define HDSPE_FREQ_QUAD   (1 << 31)

Definition at line 55 of file hdspe.h.

◆ HDSPE_FREQ_REG

#define HDSPE_FREQ_REG   256

Definition at line 63 of file hdspe.h.

◆ HDSPE_IN_ENABLE_BASE

#define HDSPE_IN_ENABLE_BASE   768

Definition at line 42 of file hdspe.h.

◆ HDSPE_INTERRUPT_ACK

#define HDSPE_INTERRUPT_ACK   96

Definition at line 113 of file hdspe.h.

◆ HDSPE_LAT_0

#define HDSPE_LAT_0   (1 << 1)

Definition at line 69 of file hdspe.h.

◆ HDSPE_LAT_1

#define HDSPE_LAT_1   (1 << 2)

Definition at line 70 of file hdspe.h.

◆ HDSPE_LAT_2

#define HDSPE_LAT_2   (1 << 3)

Definition at line 71 of file hdspe.h.

◆ HDSPE_LAT_BYTES_MAX

#define HDSPE_LAT_BYTES_MAX   (4096 * 4)

Definition at line 73 of file hdspe.h.

◆ HDSPE_LAT_BYTES_MIN

#define HDSPE_LAT_BYTES_MIN   (32 * 4)

Definition at line 74 of file hdspe.h.

◆ HDSPE_LAT_MASK

#define HDSPE_LAT_MASK   (HDSPE_LAT_0 | HDSPE_LAT_1 | HDSPE_LAT_2)

Definition at line 72 of file hdspe.h.

◆ HDSPE_MAX_CHANS

#define HDSPE_MAX_CHANS   (HDSPE_MAX_SLOTS / 2) /* Stereo pairs */

Definition at line 117 of file hdspe.h.

◆ HDSPE_MAX_GAIN

#define HDSPE_MAX_GAIN   32768

Definition at line 44 of file hdspe.h.

◆ HDSPE_MAX_SLOTS

#define HDSPE_MAX_SLOTS   64 /* Mono channels */

Definition at line 116 of file hdspe.h.

◆ HDSPE_MIXER_BASE

#define HDSPE_MIXER_BASE   32768

Definition at line 43 of file hdspe.h.

◆ HDSPE_OUT_ENABLE_BASE

#define HDSPE_OUT_ENABLE_BASE   512

Definition at line 41 of file hdspe.h.

◆ HDSPE_PAGE_ADDR_BUF_IN

#define HDSPE_PAGE_ADDR_BUF_IN   (HDSPE_PAGE_ADDR_BUF_OUT + 64 * 16 * 4)

Definition at line 48 of file hdspe.h.

◆ HDSPE_PAGE_ADDR_BUF_OUT

#define HDSPE_PAGE_ADDR_BUF_OUT   8192

Definition at line 47 of file hdspe.h.

◆ hdspe_read_1

#define hdspe_read_1 (   sc,
  regno 
)     bus_space_read_1((sc)->cst, (sc)->csh, (regno))

Definition at line 195 of file hdspe.h.

◆ hdspe_read_2

#define hdspe_read_2 (   sc,
  regno 
)     bus_space_read_2((sc)->cst, (sc)->csh, (regno))

Definition at line 197 of file hdspe.h.

◆ hdspe_read_4

#define hdspe_read_4 (   sc,
  regno 
)     bus_space_read_4((sc)->cst, (sc)->csh, (regno))

Definition at line 199 of file hdspe.h.

◆ HDSPE_SETTINGS_REG

#define HDSPE_SETTINGS_REG   0

Definition at line 104 of file hdspe.h.

◆ HDSPE_SPEED_DEFAULT

#define HDSPE_SPEED_DEFAULT   48000

Definition at line 66 of file hdspe.h.

◆ HDSPE_STATUS_REG

#define HDSPE_STATUS_REG   0

Definition at line 106 of file hdspe.h.

◆ hdspe_write_1

#define hdspe_write_1 (   sc,
  regno,
  data 
)     bus_space_write_1((sc)->cst, (sc)->csh, (regno), (data))

Definition at line 202 of file hdspe.h.

◆ hdspe_write_2

#define hdspe_write_2 (   sc,
  regno,
  data 
)     bus_space_write_2((sc)->cst, (sc)->csh, (regno), (data))

Definition at line 204 of file hdspe.h.

◆ hdspe_write_4

#define hdspe_write_4 (   sc,
  regno,
  data 
)     bus_space_write_4((sc)->cst, (sc)->csh, (regno), (data))

Definition at line 206 of file hdspe.h.

◆ HDSPM_CLOCK_MODE_MASTER

#define HDSPM_CLOCK_MODE_MASTER   (1 << 4)

Definition at line 108 of file hdspe.h.

◆ HDSPM_statusRegister

#define HDSPM_statusRegister   0

Definition at line 100 of file hdspe.h.

◆ HDSPM_statusRegister2

#define HDSPM_statusRegister2   192

Definition at line 101 of file hdspe.h.

◆ PCI_CLASS_REVISION

#define PCI_CLASS_REVISION   0x08

Definition at line 33 of file hdspe.h.

◆ PCI_DEVICE_XILINX_HDSPE

#define PCI_DEVICE_XILINX_HDSPE   0x3fc6 /* AIO, MADI, AES, RayDAT */

Definition at line 32 of file hdspe.h.

◆ PCI_REVISION_AIO

#define PCI_REVISION_AIO   212

Definition at line 34 of file hdspe.h.

◆ PCI_REVISION_RAYDAT

#define PCI_REVISION_RAYDAT   211

Definition at line 35 of file hdspe.h.

◆ PCI_VENDOR_XILINX

#define PCI_VENDOR_XILINX   0x10ee

Definition at line 31 of file hdspe.h.

◆ RAYDAT

#define RAYDAT   1

Definition at line 38 of file hdspe.h.

Function Documentation

◆ MALLOC_DEFINE()

static MALLOC_DEFINE ( M_HDSPE  ,
"hdspe"  ,
"hdspe audio"   
)
static