initial commit, 4.5 stable
Some checks failed
🔗 GHA / 📊 Static checks (push) Has been cancelled
🔗 GHA / 🤖 Android (push) Has been cancelled
🔗 GHA / 🍏 iOS (push) Has been cancelled
🔗 GHA / 🐧 Linux (push) Has been cancelled
🔗 GHA / 🍎 macOS (push) Has been cancelled
🔗 GHA / 🏁 Windows (push) Has been cancelled
🔗 GHA / 🌐 Web (push) Has been cancelled
Some checks failed
🔗 GHA / 📊 Static checks (push) Has been cancelled
🔗 GHA / 🤖 Android (push) Has been cancelled
🔗 GHA / 🍏 iOS (push) Has been cancelled
🔗 GHA / 🐧 Linux (push) Has been cancelled
🔗 GHA / 🍎 macOS (push) Has been cancelled
🔗 GHA / 🏁 Windows (push) Has been cancelled
🔗 GHA / 🌐 Web (push) Has been cancelled
This commit is contained in:
543
thirdparty/linuxbsd_headers/alsa/sound/asoc.h
vendored
Normal file
543
thirdparty/linuxbsd_headers/alsa/sound/asoc.h
vendored
Normal file
@@ -0,0 +1,543 @@
|
||||
/*
|
||||
* uapi/sound/asoc.h -- ALSA SoC Firmware Controls and DAPM
|
||||
*
|
||||
* Copyright (C) 2012 Texas Instruments Inc.
|
||||
* Copyright (C) 2015 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* Simple file API to load FW that includes mixers, coefficients, DAPM graphs,
|
||||
* algorithms, equalisers, DAIs, widgets etc.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_UAPI_SND_ASOC_H
|
||||
#define __LINUX_UAPI_SND_ASOC_H
|
||||
|
||||
/*
|
||||
* Maximum number of channels topology kcontrol can represent.
|
||||
*/
|
||||
#define SND_SOC_TPLG_MAX_CHAN 8
|
||||
|
||||
/*
|
||||
* Maximum number of PCM formats capability
|
||||
*/
|
||||
#define SND_SOC_TPLG_MAX_FORMATS 16
|
||||
|
||||
/*
|
||||
* Maximum number of PCM stream configs
|
||||
*/
|
||||
#define SND_SOC_TPLG_STREAM_CONFIG_MAX 8
|
||||
|
||||
/*
|
||||
* Maximum number of physical link's hardware configs
|
||||
*/
|
||||
#define SND_SOC_TPLG_HW_CONFIG_MAX 8
|
||||
|
||||
/* individual kcontrol info types - can be mixed with other types */
|
||||
#define SND_SOC_TPLG_CTL_VOLSW 1
|
||||
#define SND_SOC_TPLG_CTL_VOLSW_SX 2
|
||||
#define SND_SOC_TPLG_CTL_VOLSW_XR_SX 3
|
||||
#define SND_SOC_TPLG_CTL_ENUM 4
|
||||
#define SND_SOC_TPLG_CTL_BYTES 5
|
||||
#define SND_SOC_TPLG_CTL_ENUM_VALUE 6
|
||||
#define SND_SOC_TPLG_CTL_RANGE 7
|
||||
#define SND_SOC_TPLG_CTL_STROBE 8
|
||||
|
||||
|
||||
/* individual widget kcontrol info types - can be mixed with other types */
|
||||
#define SND_SOC_TPLG_DAPM_CTL_VOLSW 64
|
||||
#define SND_SOC_TPLG_DAPM_CTL_ENUM_DOUBLE 65
|
||||
#define SND_SOC_TPLG_DAPM_CTL_ENUM_VIRT 66
|
||||
#define SND_SOC_TPLG_DAPM_CTL_ENUM_VALUE 67
|
||||
#define SND_SOC_TPLG_DAPM_CTL_PIN 68
|
||||
|
||||
/* DAPM widget types - add new items to the end */
|
||||
#define SND_SOC_TPLG_DAPM_INPUT 0
|
||||
#define SND_SOC_TPLG_DAPM_OUTPUT 1
|
||||
#define SND_SOC_TPLG_DAPM_MUX 2
|
||||
#define SND_SOC_TPLG_DAPM_MIXER 3
|
||||
#define SND_SOC_TPLG_DAPM_PGA 4
|
||||
#define SND_SOC_TPLG_DAPM_OUT_DRV 5
|
||||
#define SND_SOC_TPLG_DAPM_ADC 6
|
||||
#define SND_SOC_TPLG_DAPM_DAC 7
|
||||
#define SND_SOC_TPLG_DAPM_SWITCH 8
|
||||
#define SND_SOC_TPLG_DAPM_PRE 9
|
||||
#define SND_SOC_TPLG_DAPM_POST 10
|
||||
#define SND_SOC_TPLG_DAPM_AIF_IN 11
|
||||
#define SND_SOC_TPLG_DAPM_AIF_OUT 12
|
||||
#define SND_SOC_TPLG_DAPM_DAI_IN 13
|
||||
#define SND_SOC_TPLG_DAPM_DAI_OUT 14
|
||||
#define SND_SOC_TPLG_DAPM_DAI_LINK 15
|
||||
#define SND_SOC_TPLG_DAPM_LAST SND_SOC_TPLG_DAPM_DAI_LINK
|
||||
|
||||
/* Header magic number and string sizes */
|
||||
#define SND_SOC_TPLG_MAGIC 0x41536F43 /* ASoC */
|
||||
|
||||
/* string sizes */
|
||||
#define SND_SOC_TPLG_NUM_TEXTS 16
|
||||
|
||||
/* ABI version */
|
||||
#define SND_SOC_TPLG_ABI_VERSION 0x5 /* current version */
|
||||
#define SND_SOC_TPLG_ABI_VERSION_MIN 0x4 /* oldest version supported */
|
||||
|
||||
/* Max size of TLV data */
|
||||
#define SND_SOC_TPLG_TLV_SIZE 32
|
||||
|
||||
/*
|
||||
* File and Block header data types.
|
||||
* Add new generic and vendor types to end of list.
|
||||
* Generic types are handled by the core whilst vendors types are passed
|
||||
* to the component drivers for handling.
|
||||
*/
|
||||
#define SND_SOC_TPLG_TYPE_MIXER 1
|
||||
#define SND_SOC_TPLG_TYPE_BYTES 2
|
||||
#define SND_SOC_TPLG_TYPE_ENUM 3
|
||||
#define SND_SOC_TPLG_TYPE_DAPM_GRAPH 4
|
||||
#define SND_SOC_TPLG_TYPE_DAPM_WIDGET 5
|
||||
#define SND_SOC_TPLG_TYPE_DAI_LINK 6
|
||||
#define SND_SOC_TPLG_TYPE_PCM 7
|
||||
#define SND_SOC_TPLG_TYPE_MANIFEST 8
|
||||
#define SND_SOC_TPLG_TYPE_CODEC_LINK 9
|
||||
#define SND_SOC_TPLG_TYPE_BACKEND_LINK 10
|
||||
#define SND_SOC_TPLG_TYPE_PDATA 11
|
||||
#define SND_SOC_TPLG_TYPE_DAI 12
|
||||
#define SND_SOC_TPLG_TYPE_MAX SND_SOC_TPLG_TYPE_DAI
|
||||
|
||||
/* vendor block IDs - please add new vendor types to end */
|
||||
#define SND_SOC_TPLG_TYPE_VENDOR_FW 1000
|
||||
#define SND_SOC_TPLG_TYPE_VENDOR_CONFIG 1001
|
||||
#define SND_SOC_TPLG_TYPE_VENDOR_COEFF 1002
|
||||
#define SND_SOC_TPLG_TYPEVENDOR_CODEC 1003
|
||||
|
||||
#define SND_SOC_TPLG_STREAM_PLAYBACK 0
|
||||
#define SND_SOC_TPLG_STREAM_CAPTURE 1
|
||||
|
||||
/* vendor tuple types */
|
||||
#define SND_SOC_TPLG_TUPLE_TYPE_UUID 0
|
||||
#define SND_SOC_TPLG_TUPLE_TYPE_STRING 1
|
||||
#define SND_SOC_TPLG_TUPLE_TYPE_BOOL 2
|
||||
#define SND_SOC_TPLG_TUPLE_TYPE_BYTE 3
|
||||
#define SND_SOC_TPLG_TUPLE_TYPE_WORD 4
|
||||
#define SND_SOC_TPLG_TUPLE_TYPE_SHORT 5
|
||||
|
||||
/* DAI flags */
|
||||
#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES (1 << 0)
|
||||
#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
|
||||
#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
|
||||
|
||||
/* DAI physical PCM data formats.
|
||||
* Add new formats to the end of the list.
|
||||
*/
|
||||
#define SND_SOC_DAI_FORMAT_I2S 1 /* I2S mode */
|
||||
#define SND_SOC_DAI_FORMAT_RIGHT_J 2 /* Right Justified mode */
|
||||
#define SND_SOC_DAI_FORMAT_LEFT_J 3 /* Left Justified mode */
|
||||
#define SND_SOC_DAI_FORMAT_DSP_A 4 /* L data MSB after FRM LRC */
|
||||
#define SND_SOC_DAI_FORMAT_DSP_B 5 /* L data MSB during FRM LRC */
|
||||
#define SND_SOC_DAI_FORMAT_AC97 6 /* AC97 */
|
||||
#define SND_SOC_DAI_FORMAT_PDM 7 /* Pulse density modulation */
|
||||
|
||||
/* left and right justified also known as MSB and LSB respectively */
|
||||
#define SND_SOC_DAI_FORMAT_MSB SND_SOC_DAI_FORMAT_LEFT_J
|
||||
#define SND_SOC_DAI_FORMAT_LSB SND_SOC_DAI_FORMAT_RIGHT_J
|
||||
|
||||
/* DAI link flags */
|
||||
#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_RATES (1 << 0)
|
||||
#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
|
||||
#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
|
||||
#define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP (1 << 3)
|
||||
|
||||
/*
|
||||
* Block Header.
|
||||
* This header precedes all object and object arrays below.
|
||||
*/
|
||||
struct snd_soc_tplg_hdr {
|
||||
__le32 magic; /* magic number */
|
||||
__le32 abi; /* ABI version */
|
||||
__le32 version; /* optional vendor specific version details */
|
||||
__le32 type; /* SND_SOC_TPLG_TYPE_ */
|
||||
__le32 size; /* size of this structure */
|
||||
__le32 vendor_type; /* optional vendor specific type info */
|
||||
__le32 payload_size; /* data bytes, excluding this header */
|
||||
__le32 index; /* identifier for block */
|
||||
__le32 count; /* number of elements in block */
|
||||
} __attribute__((packed));
|
||||
|
||||
/* vendor tuple for uuid */
|
||||
struct snd_soc_tplg_vendor_uuid_elem {
|
||||
__le32 token;
|
||||
char uuid[16];
|
||||
} __attribute__((packed));
|
||||
|
||||
/* vendor tuple for a bool/byte/short/word value */
|
||||
struct snd_soc_tplg_vendor_value_elem {
|
||||
__le32 token;
|
||||
__le32 value;
|
||||
} __attribute__((packed));
|
||||
|
||||
/* vendor tuple for string */
|
||||
struct snd_soc_tplg_vendor_string_elem {
|
||||
__le32 token;
|
||||
char string[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
} __attribute__((packed));
|
||||
|
||||
struct snd_soc_tplg_vendor_array {
|
||||
__le32 size; /* size in bytes of the array, including all elements */
|
||||
__le32 type; /* SND_SOC_TPLG_TUPLE_TYPE_ */
|
||||
__le32 num_elems; /* number of elements in array */
|
||||
union {
|
||||
struct snd_soc_tplg_vendor_uuid_elem uuid[0];
|
||||
struct snd_soc_tplg_vendor_value_elem value[0];
|
||||
struct snd_soc_tplg_vendor_string_elem string[0];
|
||||
};
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Private data.
|
||||
* All topology objects may have private data that can be used by the driver or
|
||||
* firmware. Core will ignore this data.
|
||||
*/
|
||||
struct snd_soc_tplg_private {
|
||||
__le32 size; /* in bytes of private data */
|
||||
union {
|
||||
char data[0];
|
||||
struct snd_soc_tplg_vendor_array array[0];
|
||||
};
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Kcontrol TLV data.
|
||||
*/
|
||||
struct snd_soc_tplg_tlv_dbscale {
|
||||
__le32 min;
|
||||
__le32 step;
|
||||
__le32 mute;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct snd_soc_tplg_ctl_tlv {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 type; /* SNDRV_CTL_TLVT_*, type of TLV */
|
||||
union {
|
||||
__le32 data[SND_SOC_TPLG_TLV_SIZE];
|
||||
struct snd_soc_tplg_tlv_dbscale scale;
|
||||
};
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Kcontrol channel data
|
||||
*/
|
||||
struct snd_soc_tplg_channel {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 reg;
|
||||
__le32 shift;
|
||||
__le32 id; /* ID maps to Left, Right, LFE etc */
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Genericl Operations IDs, for binding Kcontrol or Bytes ext ops
|
||||
* Kcontrol ops need get/put/info.
|
||||
* Bytes ext ops need get/put.
|
||||
*/
|
||||
struct snd_soc_tplg_io_ops {
|
||||
__le32 get;
|
||||
__le32 put;
|
||||
__le32 info;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* kcontrol header
|
||||
*/
|
||||
struct snd_soc_tplg_ctl_hdr {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 type;
|
||||
char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
__le32 access;
|
||||
struct snd_soc_tplg_io_ops ops;
|
||||
struct snd_soc_tplg_ctl_tlv tlv;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Stream Capabilities
|
||||
*/
|
||||
struct snd_soc_tplg_stream_caps {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
__le64 formats; /* supported formats SNDRV_PCM_FMTBIT_* */
|
||||
__le32 rates; /* supported rates SNDRV_PCM_RATE_* */
|
||||
__le32 rate_min; /* min rate */
|
||||
__le32 rate_max; /* max rate */
|
||||
__le32 channels_min; /* min channels */
|
||||
__le32 channels_max; /* max channels */
|
||||
__le32 periods_min; /* min number of periods */
|
||||
__le32 periods_max; /* max number of periods */
|
||||
__le32 period_size_min; /* min period size bytes */
|
||||
__le32 period_size_max; /* max period size bytes */
|
||||
__le32 buffer_size_min; /* min buffer size bytes */
|
||||
__le32 buffer_size_max; /* max buffer size bytes */
|
||||
__le32 sig_bits; /* number of bits of content */
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* FE or BE Stream configuration supported by SW/FW
|
||||
*/
|
||||
struct snd_soc_tplg_stream {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* Name of the stream */
|
||||
__le64 format; /* SNDRV_PCM_FMTBIT_* */
|
||||
__le32 rate; /* SNDRV_PCM_RATE_* */
|
||||
__le32 period_bytes; /* size of period in bytes */
|
||||
__le32 buffer_bytes; /* size of buffer in bytes */
|
||||
__le32 channels; /* channels */
|
||||
} __attribute__((packed));
|
||||
|
||||
|
||||
/*
|
||||
* Describes a physical link's runtime supported hardware config,
|
||||
* i.e. hardware audio formats.
|
||||
*/
|
||||
struct snd_soc_tplg_hw_config {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 id; /* unique ID - - used to match */
|
||||
__le32 fmt; /* SND_SOC_DAI_FORMAT_ format value */
|
||||
__u8 clock_gated; /* 1 if clock can be gated to save power */
|
||||
__u8 invert_bclk; /* 1 for inverted BCLK, 0 for normal */
|
||||
__u8 invert_fsync; /* 1 for inverted frame clock, 0 for normal */
|
||||
__u8 bclk_master; /* 1 for master of BCLK, 0 for slave */
|
||||
__u8 fsync_master; /* 1 for master of FSYNC, 0 for slave */
|
||||
__u8 mclk_direction; /* 0 for input, 1 for output */
|
||||
__le16 reserved; /* for 32bit alignment */
|
||||
__le32 mclk_rate; /* MCLK or SYSCLK freqency in Hz */
|
||||
__le32 bclk_rate; /* BCLK freqency in Hz */
|
||||
__le32 fsync_rate; /* frame clock in Hz */
|
||||
__le32 tdm_slots; /* number of TDM slots in use */
|
||||
__le32 tdm_slot_width; /* width in bits for each slot */
|
||||
__le32 tx_slots; /* bit mask for active Tx slots */
|
||||
__le32 rx_slots; /* bit mask for active Rx slots */
|
||||
__le32 tx_channels; /* number of Tx channels */
|
||||
__le32 tx_chanmap[SND_SOC_TPLG_MAX_CHAN]; /* array of slot number */
|
||||
__le32 rx_channels; /* number of Rx channels */
|
||||
__le32 rx_chanmap[SND_SOC_TPLG_MAX_CHAN]; /* array of slot number */
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Manifest. List totals for each payload type. Not used in parsing, but will
|
||||
* be passed to the component driver before any other objects in order for any
|
||||
* global component resource allocations.
|
||||
*
|
||||
* File block representation for manifest :-
|
||||
* +-----------------------------------+----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-----------------------------------+----+
|
||||
* | struct snd_soc_tplg_manifest | 1 |
|
||||
* +-----------------------------------+----+
|
||||
*/
|
||||
struct snd_soc_tplg_manifest {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 control_elems; /* number of control elements */
|
||||
__le32 widget_elems; /* number of widget elements */
|
||||
__le32 graph_elems; /* number of graph elements */
|
||||
__le32 pcm_elems; /* number of PCM elements */
|
||||
__le32 dai_link_elems; /* number of DAI link elements */
|
||||
__le32 dai_elems; /* number of physical DAI elements */
|
||||
__le32 reserved[20]; /* reserved for new ABI element types */
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Mixer kcontrol.
|
||||
*
|
||||
* File block representation for mixer kcontrol :-
|
||||
* +-----------------------------------+----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-----------------------------------+----+
|
||||
* | struct snd_soc_tplg_mixer_control | N |
|
||||
* +-----------------------------------+----+
|
||||
*/
|
||||
struct snd_soc_tplg_mixer_control {
|
||||
struct snd_soc_tplg_ctl_hdr hdr;
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 min;
|
||||
__le32 max;
|
||||
__le32 platform_max;
|
||||
__le32 invert;
|
||||
__le32 num_channels;
|
||||
struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Enumerated kcontrol
|
||||
*
|
||||
* File block representation for enum kcontrol :-
|
||||
* +-----------------------------------+----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-----------------------------------+----+
|
||||
* | struct snd_soc_tplg_enum_control | N |
|
||||
* +-----------------------------------+----+
|
||||
*/
|
||||
struct snd_soc_tplg_enum_control {
|
||||
struct snd_soc_tplg_ctl_hdr hdr;
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 num_channels;
|
||||
struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
|
||||
__le32 items;
|
||||
__le32 mask;
|
||||
__le32 count;
|
||||
char texts[SND_SOC_TPLG_NUM_TEXTS][SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
__le32 values[SND_SOC_TPLG_NUM_TEXTS * SNDRV_CTL_ELEM_ID_NAME_MAXLEN / 4];
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Bytes kcontrol
|
||||
*
|
||||
* File block representation for bytes kcontrol :-
|
||||
* +-----------------------------------+----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-----------------------------------+----+
|
||||
* | struct snd_soc_tplg_bytes_control | N |
|
||||
* +-----------------------------------+----+
|
||||
*/
|
||||
struct snd_soc_tplg_bytes_control {
|
||||
struct snd_soc_tplg_ctl_hdr hdr;
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 max;
|
||||
__le32 mask;
|
||||
__le32 base;
|
||||
__le32 num_regs;
|
||||
struct snd_soc_tplg_io_ops ext_ops;
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* DAPM Graph Element
|
||||
*
|
||||
* File block representation for DAPM graph elements :-
|
||||
* +-------------------------------------+----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-------------------------------------+----+
|
||||
* | struct snd_soc_tplg_dapm_graph_elem | N |
|
||||
* +-------------------------------------+----+
|
||||
*/
|
||||
struct snd_soc_tplg_dapm_graph_elem {
|
||||
char sink[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
char control[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
char source[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* DAPM Widget.
|
||||
*
|
||||
* File block representation for DAPM widget :-
|
||||
* +-------------------------------------+-----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-------------------------------------+-----+
|
||||
* | struct snd_soc_tplg_dapm_widget | N |
|
||||
* +-------------------------------------+-----+
|
||||
* | struct snd_soc_tplg_enum_control | 0|1 |
|
||||
* | struct snd_soc_tplg_mixer_control | 0|N |
|
||||
* +-------------------------------------+-----+
|
||||
*
|
||||
* Optional enum or mixer control can be appended to the end of each widget
|
||||
* in the block.
|
||||
*/
|
||||
struct snd_soc_tplg_dapm_widget {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 id; /* SND_SOC_DAPM_CTL */
|
||||
char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
char sname[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
|
||||
__le32 reg; /* negative reg = no direct dapm */
|
||||
__le32 shift; /* bits to shift */
|
||||
__le32 mask; /* non-shifted mask */
|
||||
__le32 subseq; /* sort within widget type */
|
||||
__le32 invert; /* invert the power bit */
|
||||
__le32 ignore_suspend; /* kept enabled over suspend */
|
||||
__le16 event_flags;
|
||||
__le16 event_type;
|
||||
__le32 num_kcontrols;
|
||||
struct snd_soc_tplg_private priv;
|
||||
/*
|
||||
* kcontrols that relate to this widget
|
||||
* follow here after widget private data
|
||||
*/
|
||||
} __attribute__((packed));
|
||||
|
||||
|
||||
/*
|
||||
* Describes SW/FW specific features of PCM (FE DAI & DAI link).
|
||||
*
|
||||
* File block representation for PCM :-
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_pcm | N |
|
||||
* +-----------------------------------+-----+
|
||||
*/
|
||||
struct snd_soc_tplg_pcm {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
|
||||
__le32 pcm_id; /* unique ID - used to match with DAI link */
|
||||
__le32 dai_id; /* unique ID - used to match */
|
||||
__le32 playback; /* supports playback mode */
|
||||
__le32 capture; /* supports capture mode */
|
||||
__le32 compress; /* 1 = compressed; 0 = PCM */
|
||||
struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* for DAI link */
|
||||
__le32 num_streams; /* number of streams */
|
||||
struct snd_soc_tplg_stream_caps caps[2]; /* playback and capture for DAI */
|
||||
__le32 flag_mask; /* bitmask of flags to configure */
|
||||
__le32 flags; /* SND_SOC_TPLG_LNK_FLGBIT_* flag value */
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
|
||||
|
||||
/*
|
||||
* Describes the physical link runtime supported configs or params
|
||||
*
|
||||
* File block representation for physical link config :-
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_link_config | N |
|
||||
* +-----------------------------------+-----+
|
||||
*/
|
||||
struct snd_soc_tplg_link_config {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 id; /* unique ID - used to match */
|
||||
char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* name - used to match */
|
||||
char stream_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* stream name - used to match */
|
||||
struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* supported configs playback and captrure */
|
||||
__le32 num_streams; /* number of streams */
|
||||
struct snd_soc_tplg_hw_config hw_config[SND_SOC_TPLG_HW_CONFIG_MAX]; /* hw configs */
|
||||
__le32 num_hw_configs; /* number of hw configs */
|
||||
__le32 default_hw_config_id; /* default hw config ID for init */
|
||||
__le32 flag_mask; /* bitmask of flags to configure */
|
||||
__le32 flags; /* SND_SOC_TPLG_LNK_FLGBIT_* flag value */
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Describes SW/FW specific features of physical DAI.
|
||||
* It can be used to configure backend DAIs for DPCM.
|
||||
*
|
||||
* File block representation for physical DAI :-
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_dai | N |
|
||||
* +-----------------------------------+-----+
|
||||
*/
|
||||
struct snd_soc_tplg_dai {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* name - used to match */
|
||||
__le32 dai_id; /* unique ID - used to match */
|
||||
__le32 playback; /* supports playback mode */
|
||||
__le32 capture; /* supports capture mode */
|
||||
struct snd_soc_tplg_stream_caps caps[2]; /* playback and capture for DAI */
|
||||
__le32 flag_mask; /* bitmask of flags to configure */
|
||||
__le32 flags; /* SND_SOC_TPLG_DAI_FLGBIT_* */
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
#endif
|
134
thirdparty/linuxbsd_headers/alsa/sound/asound_fm.h
vendored
Normal file
134
thirdparty/linuxbsd_headers/alsa/sound/asound_fm.h
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
#ifndef __SOUND_ASOUND_FM_H
|
||||
#define __SOUND_ASOUND_FM_H
|
||||
|
||||
/*
|
||||
* Advanced Linux Sound Architecture - ALSA
|
||||
*
|
||||
* Interface file between ALSA driver & user space
|
||||
* Copyright (c) 1994-98 by Jaroslav Kysela <perex@perex.cz>,
|
||||
* 4Front Technologies
|
||||
*
|
||||
* Direct FM control
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#define SNDRV_DM_FM_MODE_OPL2 0x00
|
||||
#define SNDRV_DM_FM_MODE_OPL3 0x01
|
||||
|
||||
struct snd_dm_fm_info {
|
||||
unsigned char fm_mode; /* OPL mode, see SNDRV_DM_FM_MODE_XXX */
|
||||
unsigned char rhythm; /* percussion mode flag */
|
||||
};
|
||||
|
||||
/*
|
||||
* Data structure composing an FM "note" or sound event.
|
||||
*/
|
||||
|
||||
struct snd_dm_fm_voice {
|
||||
unsigned char op; /* operator cell (0 or 1) */
|
||||
unsigned char voice; /* FM voice (0 to 17) */
|
||||
|
||||
unsigned char am; /* amplitude modulation */
|
||||
unsigned char vibrato; /* vibrato effect */
|
||||
unsigned char do_sustain; /* sustain phase */
|
||||
unsigned char kbd_scale; /* keyboard scaling */
|
||||
unsigned char harmonic; /* 4 bits: harmonic and multiplier */
|
||||
unsigned char scale_level; /* 2 bits: decrease output freq rises */
|
||||
unsigned char volume; /* 6 bits: volume */
|
||||
|
||||
unsigned char attack; /* 4 bits: attack rate */
|
||||
unsigned char decay; /* 4 bits: decay rate */
|
||||
unsigned char sustain; /* 4 bits: sustain level */
|
||||
unsigned char release; /* 4 bits: release rate */
|
||||
|
||||
unsigned char feedback; /* 3 bits: feedback for op0 */
|
||||
unsigned char connection; /* 0 for serial, 1 for parallel */
|
||||
unsigned char left; /* stereo left */
|
||||
unsigned char right; /* stereo right */
|
||||
unsigned char waveform; /* 3 bits: waveform shape */
|
||||
};
|
||||
|
||||
/*
|
||||
* This describes an FM note by its voice, octave, frequency number (10bit)
|
||||
* and key on/off.
|
||||
*/
|
||||
|
||||
struct snd_dm_fm_note {
|
||||
unsigned char voice; /* 0-17 voice channel */
|
||||
unsigned char octave; /* 3 bits: what octave to play */
|
||||
unsigned int fnum; /* 10 bits: frequency number */
|
||||
unsigned char key_on; /* set for active, clear for silent */
|
||||
};
|
||||
|
||||
/*
|
||||
* FM parameters that apply globally to all voices, and thus are not "notes"
|
||||
*/
|
||||
|
||||
struct snd_dm_fm_params {
|
||||
unsigned char am_depth; /* amplitude modulation depth (1=hi) */
|
||||
unsigned char vib_depth; /* vibrato depth (1=hi) */
|
||||
unsigned char kbd_split; /* keyboard split */
|
||||
unsigned char rhythm; /* percussion mode select */
|
||||
|
||||
/* This block is the percussion instrument data */
|
||||
unsigned char bass;
|
||||
unsigned char snare;
|
||||
unsigned char tomtom;
|
||||
unsigned char cymbal;
|
||||
unsigned char hihat;
|
||||
};
|
||||
|
||||
/*
|
||||
* FM mode ioctl settings
|
||||
*/
|
||||
|
||||
#define SNDRV_DM_FM_IOCTL_INFO _IOR('H', 0x20, struct snd_dm_fm_info)
|
||||
#define SNDRV_DM_FM_IOCTL_RESET _IO ('H', 0x21)
|
||||
#define SNDRV_DM_FM_IOCTL_PLAY_NOTE _IOW('H', 0x22, struct snd_dm_fm_note)
|
||||
#define SNDRV_DM_FM_IOCTL_SET_VOICE _IOW('H', 0x23, struct snd_dm_fm_voice)
|
||||
#define SNDRV_DM_FM_IOCTL_SET_PARAMS _IOW('H', 0x24, struct snd_dm_fm_params)
|
||||
#define SNDRV_DM_FM_IOCTL_SET_MODE _IOW('H', 0x25, int)
|
||||
/* for OPL3 only */
|
||||
#define SNDRV_DM_FM_IOCTL_SET_CONNECTION _IOW('H', 0x26, int)
|
||||
/* SBI patch management */
|
||||
#define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES _IO ('H', 0x40)
|
||||
|
||||
#define SNDRV_DM_FM_OSS_IOCTL_RESET 0x20
|
||||
#define SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE 0x21
|
||||
#define SNDRV_DM_FM_OSS_IOCTL_SET_VOICE 0x22
|
||||
#define SNDRV_DM_FM_OSS_IOCTL_SET_PARAMS 0x23
|
||||
#define SNDRV_DM_FM_OSS_IOCTL_SET_MODE 0x24
|
||||
#define SNDRV_DM_FM_OSS_IOCTL_SET_OPL 0x25
|
||||
|
||||
/*
|
||||
* Patch Record - fixed size for write
|
||||
*/
|
||||
|
||||
#define FM_KEY_SBI "SBI\032"
|
||||
#define FM_KEY_2OP "2OP\032"
|
||||
#define FM_KEY_4OP "4OP\032"
|
||||
|
||||
struct sbi_patch {
|
||||
unsigned char prog;
|
||||
unsigned char bank;
|
||||
char key[4];
|
||||
char name[25];
|
||||
char extension[7];
|
||||
unsigned char data[32];
|
||||
};
|
||||
|
||||
#endif /* __SOUND_ASOUND_FM_H */
|
349
thirdparty/linuxbsd_headers/alsa/sound/emu10k1.h
vendored
Normal file
349
thirdparty/linuxbsd_headers/alsa/sound/emu10k1.h
vendored
Normal file
@@ -0,0 +1,349 @@
|
||||
#ifndef __SOUND_EMU10K1_H
|
||||
#define __SOUND_EMU10K1_H
|
||||
|
||||
/*
|
||||
* Copyright (c) by Jaroslav Kysela <perex@perex.cz>,
|
||||
* Creative Labs, Inc.
|
||||
* Definitions for EMU10K1 (SB Live!) chips
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/*
|
||||
* ---- FX8010 ----
|
||||
*/
|
||||
|
||||
#define EMU10K1_CARD_CREATIVE 0x00000000
|
||||
#define EMU10K1_CARD_EMUAPS 0x00000001
|
||||
|
||||
#define EMU10K1_FX8010_PCM_COUNT 8
|
||||
|
||||
/* instruction set */
|
||||
#define iMAC0 0x00 /* R = A + (X * Y >> 31) ; saturation */
|
||||
#define iMAC1 0x01 /* R = A + (-X * Y >> 31) ; saturation */
|
||||
#define iMAC2 0x02 /* R = A + (X * Y >> 31) ; wraparound */
|
||||
#define iMAC3 0x03 /* R = A + (-X * Y >> 31) ; wraparound */
|
||||
#define iMACINT0 0x04 /* R = A + X * Y ; saturation */
|
||||
#define iMACINT1 0x05 /* R = A + X * Y ; wraparound (31-bit) */
|
||||
#define iACC3 0x06 /* R = A + X + Y ; saturation */
|
||||
#define iMACMV 0x07 /* R = A, acc += X * Y >> 31 */
|
||||
#define iANDXOR 0x08 /* R = (A & X) ^ Y */
|
||||
#define iTSTNEG 0x09 /* R = (A >= Y) ? X : ~X */
|
||||
#define iLIMITGE 0x0a /* R = (A >= Y) ? X : Y */
|
||||
#define iLIMITLT 0x0b /* R = (A < Y) ? X : Y */
|
||||
#define iLOG 0x0c /* R = linear_data, A (log_data), X (max_exp), Y (format_word) */
|
||||
#define iEXP 0x0d /* R = log_data, A (linear_data), X (max_exp), Y (format_word) */
|
||||
#define iINTERP 0x0e /* R = A + (X * (Y - A) >> 31) ; saturation */
|
||||
#define iSKIP 0x0f /* R = A (cc_reg), X (count), Y (cc_test) */
|
||||
|
||||
/* GPRs */
|
||||
#define FXBUS(x) (0x00 + (x)) /* x = 0x00 - 0x0f */
|
||||
#define EXTIN(x) (0x10 + (x)) /* x = 0x00 - 0x0f */
|
||||
#define EXTOUT(x) (0x20 + (x)) /* x = 0x00 - 0x0f */
|
||||
#define C_00000000 0x40
|
||||
#define C_00000001 0x41
|
||||
#define C_00000002 0x42
|
||||
#define C_00000003 0x43
|
||||
#define C_00000004 0x44
|
||||
#define C_00000008 0x45
|
||||
#define C_00000010 0x46
|
||||
#define C_00000020 0x47
|
||||
#define C_00000100 0x48
|
||||
#define C_00010000 0x49
|
||||
#define C_00080000 0x4a
|
||||
#define C_10000000 0x4b
|
||||
#define C_20000000 0x4c
|
||||
#define C_40000000 0x4d
|
||||
#define C_80000000 0x4e
|
||||
#define C_7fffffff 0x4f
|
||||
#define C_ffffffff 0x50
|
||||
#define C_fffffffe 0x51
|
||||
#define C_c0000000 0x52
|
||||
#define C_4f1bbcdc 0x53
|
||||
#define C_5a7ef9db 0x54
|
||||
#define C_00100000 0x55 /* ?? */
|
||||
#define GPR_ACCU 0x56 /* ACCUM, accumulator */
|
||||
#define GPR_COND 0x57 /* CCR, condition register */
|
||||
#define GPR_NOISE0 0x58 /* noise source */
|
||||
#define GPR_NOISE1 0x59 /* noise source */
|
||||
#define GPR_IRQ 0x5a /* IRQ register */
|
||||
#define GPR_DBAC 0x5b /* TRAM Delay Base Address Counter */
|
||||
#define GPR(x) (FXGPREGBASE + (x)) /* free GPRs: x = 0x00 - 0xff */
|
||||
#define ITRAM_DATA(x) (TANKMEMDATAREGBASE + 0x00 + (x)) /* x = 0x00 - 0x7f */
|
||||
#define ETRAM_DATA(x) (TANKMEMDATAREGBASE + 0x80 + (x)) /* x = 0x00 - 0x1f */
|
||||
#define ITRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x00 + (x)) /* x = 0x00 - 0x7f */
|
||||
#define ETRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x80 + (x)) /* x = 0x00 - 0x1f */
|
||||
|
||||
#define A_FXBUS(x) (0x00 + (x)) /* x = 0x00 - 0x3f? */
|
||||
#define A_EXTIN(x) (0x40 + (x)) /* x = 0x00 - 0x1f? */
|
||||
#define A_EXTOUT(x) (0x60 + (x)) /* x = 0x00 - 0x1f? */
|
||||
#define A_GPR(x) (A_FXGPREGBASE + (x))
|
||||
|
||||
/* cc_reg constants */
|
||||
#define CC_REG_NORMALIZED C_00000001
|
||||
#define CC_REG_BORROW C_00000002
|
||||
#define CC_REG_MINUS C_00000004
|
||||
#define CC_REG_ZERO C_00000008
|
||||
#define CC_REG_SATURATE C_00000010
|
||||
#define CC_REG_NONZERO C_00000100
|
||||
|
||||
/* FX buses */
|
||||
#define FXBUS_PCM_LEFT 0x00
|
||||
#define FXBUS_PCM_RIGHT 0x01
|
||||
#define FXBUS_PCM_LEFT_REAR 0x02
|
||||
#define FXBUS_PCM_RIGHT_REAR 0x03
|
||||
#define FXBUS_MIDI_LEFT 0x04
|
||||
#define FXBUS_MIDI_RIGHT 0x05
|
||||
#define FXBUS_PCM_CENTER 0x06
|
||||
#define FXBUS_PCM_LFE 0x07
|
||||
#define FXBUS_PCM_LEFT_FRONT 0x08
|
||||
#define FXBUS_PCM_RIGHT_FRONT 0x09
|
||||
#define FXBUS_MIDI_REVERB 0x0c
|
||||
#define FXBUS_MIDI_CHORUS 0x0d
|
||||
#define FXBUS_PCM_LEFT_SIDE 0x0e
|
||||
#define FXBUS_PCM_RIGHT_SIDE 0x0f
|
||||
#define FXBUS_PT_LEFT 0x14
|
||||
#define FXBUS_PT_RIGHT 0x15
|
||||
|
||||
/* Inputs */
|
||||
#define EXTIN_AC97_L 0x00 /* AC'97 capture channel - left */
|
||||
#define EXTIN_AC97_R 0x01 /* AC'97 capture channel - right */
|
||||
#define EXTIN_SPDIF_CD_L 0x02 /* internal S/PDIF CD - onboard - left */
|
||||
#define EXTIN_SPDIF_CD_R 0x03 /* internal S/PDIF CD - onboard - right */
|
||||
#define EXTIN_ZOOM_L 0x04 /* Zoom Video I2S - left */
|
||||
#define EXTIN_ZOOM_R 0x05 /* Zoom Video I2S - right */
|
||||
#define EXTIN_TOSLINK_L 0x06 /* LiveDrive - TOSLink Optical - left */
|
||||
#define EXTIN_TOSLINK_R 0x07 /* LiveDrive - TOSLink Optical - right */
|
||||
#define EXTIN_LINE1_L 0x08 /* LiveDrive - Line/Mic 1 - left */
|
||||
#define EXTIN_LINE1_R 0x09 /* LiveDrive - Line/Mic 1 - right */
|
||||
#define EXTIN_COAX_SPDIF_L 0x0a /* LiveDrive - Coaxial S/PDIF - left */
|
||||
#define EXTIN_COAX_SPDIF_R 0x0b /* LiveDrive - Coaxial S/PDIF - right */
|
||||
#define EXTIN_LINE2_L 0x0c /* LiveDrive - Line/Mic 2 - left */
|
||||
#define EXTIN_LINE2_R 0x0d /* LiveDrive - Line/Mic 2 - right */
|
||||
|
||||
/* Outputs */
|
||||
#define EXTOUT_AC97_L 0x00 /* AC'97 playback channel - left */
|
||||
#define EXTOUT_AC97_R 0x01 /* AC'97 playback channel - right */
|
||||
#define EXTOUT_TOSLINK_L 0x02 /* LiveDrive - TOSLink Optical - left */
|
||||
#define EXTOUT_TOSLINK_R 0x03 /* LiveDrive - TOSLink Optical - right */
|
||||
#define EXTOUT_AC97_CENTER 0x04 /* SB Live 5.1 - center */
|
||||
#define EXTOUT_AC97_LFE 0x05 /* SB Live 5.1 - LFE */
|
||||
#define EXTOUT_HEADPHONE_L 0x06 /* LiveDrive - Headphone - left */
|
||||
#define EXTOUT_HEADPHONE_R 0x07 /* LiveDrive - Headphone - right */
|
||||
#define EXTOUT_REAR_L 0x08 /* Rear channel - left */
|
||||
#define EXTOUT_REAR_R 0x09 /* Rear channel - right */
|
||||
#define EXTOUT_ADC_CAP_L 0x0a /* ADC Capture buffer - left */
|
||||
#define EXTOUT_ADC_CAP_R 0x0b /* ADC Capture buffer - right */
|
||||
#define EXTOUT_MIC_CAP 0x0c /* MIC Capture buffer */
|
||||
#define EXTOUT_AC97_REAR_L 0x0d /* SB Live 5.1 (c) 2003 - Rear Left */
|
||||
#define EXTOUT_AC97_REAR_R 0x0e /* SB Live 5.1 (c) 2003 - Rear Right */
|
||||
#define EXTOUT_ACENTER 0x11 /* Analog Center */
|
||||
#define EXTOUT_ALFE 0x12 /* Analog LFE */
|
||||
|
||||
/* Audigy Inputs */
|
||||
#define A_EXTIN_AC97_L 0x00 /* AC'97 capture channel - left */
|
||||
#define A_EXTIN_AC97_R 0x01 /* AC'97 capture channel - right */
|
||||
#define A_EXTIN_SPDIF_CD_L 0x02 /* digital CD left */
|
||||
#define A_EXTIN_SPDIF_CD_R 0x03 /* digital CD left */
|
||||
#define A_EXTIN_OPT_SPDIF_L 0x04 /* audigy drive Optical SPDIF - left */
|
||||
#define A_EXTIN_OPT_SPDIF_R 0x05 /* right */
|
||||
#define A_EXTIN_LINE2_L 0x08 /* audigy drive line2/mic2 - left */
|
||||
#define A_EXTIN_LINE2_R 0x09 /* right */
|
||||
#define A_EXTIN_ADC_L 0x0a /* Philips ADC - left */
|
||||
#define A_EXTIN_ADC_R 0x0b /* right */
|
||||
#define A_EXTIN_AUX2_L 0x0c /* audigy drive aux2 - left */
|
||||
#define A_EXTIN_AUX2_R 0x0d /* - right */
|
||||
|
||||
/* Audigiy Outputs */
|
||||
#define A_EXTOUT_FRONT_L 0x00 /* digital front left */
|
||||
#define A_EXTOUT_FRONT_R 0x01 /* right */
|
||||
#define A_EXTOUT_CENTER 0x02 /* digital front center */
|
||||
#define A_EXTOUT_LFE 0x03 /* digital front lfe */
|
||||
#define A_EXTOUT_HEADPHONE_L 0x04 /* headphone audigy drive left */
|
||||
#define A_EXTOUT_HEADPHONE_R 0x05 /* right */
|
||||
#define A_EXTOUT_REAR_L 0x06 /* digital rear left */
|
||||
#define A_EXTOUT_REAR_R 0x07 /* right */
|
||||
#define A_EXTOUT_AFRONT_L 0x08 /* analog front left */
|
||||
#define A_EXTOUT_AFRONT_R 0x09 /* right */
|
||||
#define A_EXTOUT_ACENTER 0x0a /* analog center */
|
||||
#define A_EXTOUT_ALFE 0x0b /* analog LFE */
|
||||
#define A_EXTOUT_ASIDE_L 0x0c /* analog side left - Audigy 2 ZS */
|
||||
#define A_EXTOUT_ASIDE_R 0x0d /* right - Audigy 2 ZS */
|
||||
#define A_EXTOUT_AREAR_L 0x0e /* analog rear left */
|
||||
#define A_EXTOUT_AREAR_R 0x0f /* right */
|
||||
#define A_EXTOUT_AC97_L 0x10 /* AC97 left (front) */
|
||||
#define A_EXTOUT_AC97_R 0x11 /* right */
|
||||
#define A_EXTOUT_ADC_CAP_L 0x16 /* ADC capture buffer left */
|
||||
#define A_EXTOUT_ADC_CAP_R 0x17 /* right */
|
||||
#define A_EXTOUT_MIC_CAP 0x18 /* Mic capture buffer */
|
||||
|
||||
/* Audigy constants */
|
||||
#define A_C_00000000 0xc0
|
||||
#define A_C_00000001 0xc1
|
||||
#define A_C_00000002 0xc2
|
||||
#define A_C_00000003 0xc3
|
||||
#define A_C_00000004 0xc4
|
||||
#define A_C_00000008 0xc5
|
||||
#define A_C_00000010 0xc6
|
||||
#define A_C_00000020 0xc7
|
||||
#define A_C_00000100 0xc8
|
||||
#define A_C_00010000 0xc9
|
||||
#define A_C_00000800 0xca
|
||||
#define A_C_10000000 0xcb
|
||||
#define A_C_20000000 0xcc
|
||||
#define A_C_40000000 0xcd
|
||||
#define A_C_80000000 0xce
|
||||
#define A_C_7fffffff 0xcf
|
||||
#define A_C_ffffffff 0xd0
|
||||
#define A_C_fffffffe 0xd1
|
||||
#define A_C_c0000000 0xd2
|
||||
#define A_C_4f1bbcdc 0xd3
|
||||
#define A_C_5a7ef9db 0xd4
|
||||
#define A_C_00100000 0xd5
|
||||
#define A_GPR_ACCU 0xd6 /* ACCUM, accumulator */
|
||||
#define A_GPR_COND 0xd7 /* CCR, condition register */
|
||||
#define A_GPR_NOISE0 0xd8 /* noise source */
|
||||
#define A_GPR_NOISE1 0xd9 /* noise source */
|
||||
#define A_GPR_IRQ 0xda /* IRQ register */
|
||||
#define A_GPR_DBAC 0xdb /* TRAM Delay Base Address Counter - internal */
|
||||
#define A_GPR_DBACE 0xde /* TRAM Delay Base Address Counter - external */
|
||||
|
||||
/* definitions for debug register */
|
||||
#define EMU10K1_DBG_ZC 0x80000000 /* zero tram counter */
|
||||
#define EMU10K1_DBG_SATURATION_OCCURED 0x02000000 /* saturation control */
|
||||
#define EMU10K1_DBG_SATURATION_ADDR 0x01ff0000 /* saturation address */
|
||||
#define EMU10K1_DBG_SINGLE_STEP 0x00008000 /* single step mode */
|
||||
#define EMU10K1_DBG_STEP 0x00004000 /* start single step */
|
||||
#define EMU10K1_DBG_CONDITION_CODE 0x00003e00 /* condition code */
|
||||
#define EMU10K1_DBG_SINGLE_STEP_ADDR 0x000001ff /* single step address */
|
||||
|
||||
/* tank memory address line */
|
||||
#ifndef __KERNEL__
|
||||
#define TANKMEMADDRREG_ADDR_MASK 0x000fffff /* 20 bit tank address field */
|
||||
#define TANKMEMADDRREG_CLEAR 0x00800000 /* Clear tank memory */
|
||||
#define TANKMEMADDRREG_ALIGN 0x00400000 /* Align read or write relative to tank access */
|
||||
#define TANKMEMADDRREG_WRITE 0x00200000 /* Write to tank memory */
|
||||
#define TANKMEMADDRREG_READ 0x00100000 /* Read from tank memory */
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
unsigned int internal_tram_size; /* in samples */
|
||||
unsigned int external_tram_size; /* in samples */
|
||||
char fxbus_names[16][32]; /* names of FXBUSes */
|
||||
char extin_names[16][32]; /* names of external inputs */
|
||||
char extout_names[32][32]; /* names of external outputs */
|
||||
unsigned int gpr_controls; /* count of GPR controls */
|
||||
} emu10k1_fx8010_info_t;
|
||||
|
||||
#define EMU10K1_GPR_TRANSLATION_NONE 0
|
||||
#define EMU10K1_GPR_TRANSLATION_TABLE100 1
|
||||
#define EMU10K1_GPR_TRANSLATION_BASS 2
|
||||
#define EMU10K1_GPR_TRANSLATION_TREBLE 3
|
||||
#define EMU10K1_GPR_TRANSLATION_ONOFF 4
|
||||
|
||||
enum emu10k1_ctl_elem_iface {
|
||||
EMU10K1_CTL_ELEM_IFACE_MIXER = 2, /* virtual mixer device */
|
||||
EMU10K1_CTL_ELEM_IFACE_PCM = 3, /* PCM device */
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
unsigned int pad; /* don't use */
|
||||
int iface; /* interface identifier */
|
||||
unsigned int device; /* device/client number */
|
||||
unsigned int subdevice; /* subdevice (substream) number */
|
||||
unsigned char name[44]; /* ASCII name of item */
|
||||
unsigned int index; /* index of item */
|
||||
} emu10k1_ctl_elem_id_t;
|
||||
|
||||
typedef struct {
|
||||
emu10k1_ctl_elem_id_t id; /* full control ID definition */
|
||||
unsigned int vcount; /* visible count */
|
||||
unsigned int count; /* count of GPR (1..16) */
|
||||
unsigned short gpr[32]; /* GPR number(s) */
|
||||
unsigned int value[32]; /* initial values */
|
||||
unsigned int min; /* minimum range */
|
||||
unsigned int max; /* maximum range */
|
||||
unsigned int translation; /* translation type (EMU10K1_GPR_TRANSLATION*) */
|
||||
unsigned int *tlv;
|
||||
} emu10k1_fx8010_control_gpr_t;
|
||||
|
||||
typedef struct {
|
||||
char name[128];
|
||||
|
||||
unsigned long gpr_valid[0x200/(sizeof(unsigned long)*8)]; /* bitmask of valid initializers */
|
||||
uint32_t *gpr_map; /* initializers */
|
||||
|
||||
unsigned int gpr_add_control_count; /* count of GPR controls to add/replace */
|
||||
emu10k1_fx8010_control_gpr_t *gpr_add_controls; /* GPR controls to add/replace */
|
||||
|
||||
unsigned int gpr_del_control_count; /* count of GPR controls to remove */
|
||||
emu10k1_ctl_elem_id_t *gpr_del_controls; /* IDs of GPR controls to remove */
|
||||
|
||||
unsigned int gpr_list_control_count; /* count of GPR controls to list */
|
||||
unsigned int gpr_list_control_total; /* total count of GPR controls */
|
||||
emu10k1_fx8010_control_gpr_t *gpr_list_controls; /* listed GPR controls */
|
||||
|
||||
unsigned long tram_valid[0x100/(sizeof(unsigned long)*8)]; /* bitmask of valid initializers */
|
||||
uint32_t *tram_data_map; /* data initializers */
|
||||
uint32_t *tram_addr_map; /* map initializers */
|
||||
|
||||
unsigned long code_valid[1024/(sizeof(unsigned long)*8)]; /* bitmask of valid instructions */
|
||||
uint32_t *code; /* one instruction - 64 bits */
|
||||
} emu10k1_fx8010_code_t;
|
||||
|
||||
typedef struct {
|
||||
unsigned int address; /* 31.bit == 1 -> external TRAM */
|
||||
unsigned int size; /* size in samples (4 bytes) */
|
||||
unsigned int *samples; /* pointer to samples (20-bit) */
|
||||
/* NULL->clear memory */
|
||||
} emu10k1_fx8010_tram_t;
|
||||
|
||||
typedef struct {
|
||||
unsigned int substream; /* substream number */
|
||||
unsigned int res1; /* reserved */
|
||||
unsigned int channels; /* 16-bit channels count, zero = remove this substream */
|
||||
unsigned int tram_start; /* ring buffer position in TRAM (in samples) */
|
||||
unsigned int buffer_size; /* count of buffered samples */
|
||||
unsigned short gpr_size; /* GPR containing size of ringbuffer in samples (host) */
|
||||
unsigned short gpr_ptr; /* GPR containing current pointer in the ring buffer (host = reset, FX8010) */
|
||||
unsigned short gpr_count; /* GPR containing count of samples between two interrupts (host) */
|
||||
unsigned short gpr_tmpcount; /* GPR containing current count of samples to interrupt (host = set, FX8010) */
|
||||
unsigned short gpr_trigger; /* GPR containing trigger (activate) information (host) */
|
||||
unsigned short gpr_running; /* GPR containing info if PCM is running (FX8010) */
|
||||
unsigned char pad; /* reserved */
|
||||
unsigned char etram[32]; /* external TRAM address & data (one per channel) */
|
||||
unsigned int res2; /* reserved */
|
||||
} emu10k1_fx8010_pcm_t;
|
||||
|
||||
#define SNDRV_EMU10K1_IOCTL_INFO _IOR ('H', 0x10, emu10k1_fx8010_info_t)
|
||||
#define SNDRV_EMU10K1_IOCTL_CODE_POKE _IOW ('H', 0x11, emu10k1_fx8010_code_t)
|
||||
#define SNDRV_EMU10K1_IOCTL_CODE_PEEK _IOWR('H', 0x12, emu10k1_fx8010_code_t)
|
||||
#define SNDRV_EMU10K1_IOCTL_TRAM_SETUP _IOW ('H', 0x20, int)
|
||||
#define SNDRV_EMU10K1_IOCTL_TRAM_POKE _IOW ('H', 0x21, emu10k1_fx8010_tram_t)
|
||||
#define SNDRV_EMU10K1_IOCTL_TRAM_PEEK _IOWR('H', 0x22, emu10k1_fx8010_tram_t)
|
||||
#define SNDRV_EMU10K1_IOCTL_PCM_POKE _IOW ('H', 0x30, emu10k1_fx8010_pcm_t)
|
||||
#define SNDRV_EMU10K1_IOCTL_PCM_PEEK _IOWR('H', 0x31, emu10k1_fx8010_pcm_t)
|
||||
#define SNDRV_EMU10K1_IOCTL_PVERSION _IOR ('H', 0x40, int)
|
||||
#define SNDRV_EMU10K1_IOCTL_STOP _IO ('H', 0x80)
|
||||
#define SNDRV_EMU10K1_IOCTL_CONTINUE _IO ('H', 0x81)
|
||||
#define SNDRV_EMU10K1_IOCTL_ZERO_TRAM_COUNTER _IO ('H', 0x82)
|
||||
#define SNDRV_EMU10K1_IOCTL_SINGLE_STEP _IOW ('H', 0x83, int)
|
||||
#define SNDRV_EMU10K1_IOCTL_DBG_READ _IOR ('H', 0x84, int)
|
||||
|
||||
#endif /* __SOUND_EMU10K1_H */
|
113
thirdparty/linuxbsd_headers/alsa/sound/hdsp.h
vendored
Normal file
113
thirdparty/linuxbsd_headers/alsa/sound/hdsp.h
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
#ifndef __SOUND_HDSP_H
|
||||
#define __SOUND_HDSP_H
|
||||
|
||||
/*
|
||||
* Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define HDSP_MATRIX_MIXER_SIZE 2048
|
||||
|
||||
typedef enum {
|
||||
Digiface,
|
||||
Multiface,
|
||||
H9652,
|
||||
H9632,
|
||||
RPM,
|
||||
Undefined,
|
||||
} HDSP_IO_Type;
|
||||
|
||||
typedef struct _snd_hdsp_peak_rms hdsp_peak_rms_t;
|
||||
|
||||
struct _snd_hdsp_peak_rms {
|
||||
uint32_t input_peaks[26];
|
||||
uint32_t playback_peaks[26];
|
||||
uint32_t output_peaks[28];
|
||||
uint64_t input_rms[26];
|
||||
uint64_t playback_rms[26];
|
||||
/* These are only used for H96xx cards */
|
||||
uint64_t output_rms[26];
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_GET_PEAK_RMS _IOR('H', 0x40, hdsp_peak_rms_t)
|
||||
|
||||
typedef struct _snd_hdsp_config_info hdsp_config_info_t;
|
||||
|
||||
struct _snd_hdsp_config_info {
|
||||
unsigned char pref_sync_ref;
|
||||
unsigned char wordclock_sync_check;
|
||||
unsigned char spdif_sync_check;
|
||||
unsigned char adatsync_sync_check;
|
||||
unsigned char adat_sync_check[3];
|
||||
unsigned char spdif_in;
|
||||
unsigned char spdif_out;
|
||||
unsigned char spdif_professional;
|
||||
unsigned char spdif_emphasis;
|
||||
unsigned char spdif_nonaudio;
|
||||
unsigned int spdif_sample_rate;
|
||||
unsigned int system_sample_rate;
|
||||
unsigned int autosync_sample_rate;
|
||||
unsigned char system_clock_mode;
|
||||
unsigned char clock_source;
|
||||
unsigned char autosync_ref;
|
||||
unsigned char line_out;
|
||||
unsigned char passthru;
|
||||
unsigned char da_gain;
|
||||
unsigned char ad_gain;
|
||||
unsigned char phone_gain;
|
||||
unsigned char xlr_breakout_cable;
|
||||
unsigned char analog_extension_board;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_GET_CONFIG_INFO _IOR('H', 0x41, hdsp_config_info_t)
|
||||
|
||||
typedef struct _snd_hdsp_firmware hdsp_firmware_t;
|
||||
|
||||
struct _snd_hdsp_firmware {
|
||||
void *firmware_data; /* 24413 x 4 bytes */
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, hdsp_firmware_t)
|
||||
|
||||
typedef struct _snd_hdsp_version hdsp_version_t;
|
||||
|
||||
struct _snd_hdsp_version {
|
||||
HDSP_IO_Type io_type;
|
||||
unsigned short firmware_rev;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_GET_VERSION _IOR('H', 0x43, hdsp_version_t)
|
||||
|
||||
typedef struct _snd_hdsp_mixer hdsp_mixer_t;
|
||||
|
||||
struct _snd_hdsp_mixer {
|
||||
unsigned short matrix[HDSP_MATRIX_MIXER_SIZE];
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_GET_MIXER _IOR('H', 0x44, hdsp_mixer_t)
|
||||
|
||||
typedef struct _snd_hdsp_9632_aeb hdsp_9632_aeb_t;
|
||||
|
||||
struct _snd_hdsp_9632_aeb {
|
||||
int aebi;
|
||||
int aebo;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_GET_9632_AEB _IOR('H', 0x45, hdsp_9632_aeb_t)
|
||||
|
||||
#endif /* __SOUND_HDSP_H */
|
229
thirdparty/linuxbsd_headers/alsa/sound/hdspm.h
vendored
Normal file
229
thirdparty/linuxbsd_headers/alsa/sound/hdspm.h
vendored
Normal file
@@ -0,0 +1,229 @@
|
||||
#ifndef __SOUND_HDSPM_H
|
||||
#define __SOUND_HDSPM_H
|
||||
/*
|
||||
* Copyright (C) 2003 Winfried Ritsch (IEM)
|
||||
* based on hdsp.h from Thomas Charbonnel (thomas@undata.org)
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
/* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */
|
||||
#define HDSPM_MAX_CHANNELS 64
|
||||
|
||||
enum hdspm_io_type {
|
||||
MADI,
|
||||
MADIface,
|
||||
AIO,
|
||||
AES32,
|
||||
RayDAT
|
||||
};
|
||||
|
||||
enum hdspm_speed {
|
||||
ss,
|
||||
ds,
|
||||
qs
|
||||
};
|
||||
|
||||
/* -------------------- IOCTL Peak/RMS Meters -------------------- */
|
||||
|
||||
struct hdspm_peak_rms {
|
||||
uint32_t input_peaks[64];
|
||||
uint32_t playback_peaks[64];
|
||||
uint32_t output_peaks[64];
|
||||
|
||||
uint64_t input_rms[64];
|
||||
uint64_t playback_rms[64];
|
||||
uint64_t output_rms[64];
|
||||
|
||||
uint8_t speed; /* enum {ss, ds, qs} */
|
||||
int status2;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS \
|
||||
_IOR('H', 0x42, struct hdspm_peak_rms)
|
||||
|
||||
/* ------------ CONFIG block IOCTL ---------------------- */
|
||||
|
||||
struct hdspm_config {
|
||||
unsigned char pref_sync_ref;
|
||||
unsigned char wordclock_sync_check;
|
||||
unsigned char madi_sync_check;
|
||||
unsigned int system_sample_rate;
|
||||
unsigned int autosync_sample_rate;
|
||||
unsigned char system_clock_mode;
|
||||
unsigned char clock_source;
|
||||
unsigned char autosync_ref;
|
||||
unsigned char line_out;
|
||||
unsigned int passthru;
|
||||
unsigned int analog_out;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSPM_IOCTL_GET_CONFIG \
|
||||
_IOR('H', 0x41, struct hdspm_config)
|
||||
|
||||
/**
|
||||
* If there's a TCO (TimeCode Option) board installed,
|
||||
* there are further options and status data available.
|
||||
* The hdspm_ltc structure contains the current SMPTE
|
||||
* timecode and some status information and can be
|
||||
* obtained via SNDRV_HDSPM_IOCTL_GET_LTC or in the
|
||||
* hdspm_status struct.
|
||||
**/
|
||||
|
||||
enum hdspm_ltc_format {
|
||||
format_invalid,
|
||||
fps_24,
|
||||
fps_25,
|
||||
fps_2997,
|
||||
fps_30
|
||||
};
|
||||
|
||||
enum hdspm_ltc_frame {
|
||||
frame_invalid,
|
||||
drop_frame,
|
||||
full_frame
|
||||
};
|
||||
|
||||
enum hdspm_ltc_input_format {
|
||||
ntsc,
|
||||
pal,
|
||||
no_video
|
||||
};
|
||||
|
||||
struct hdspm_ltc {
|
||||
unsigned int ltc;
|
||||
|
||||
enum hdspm_ltc_format format;
|
||||
enum hdspm_ltc_frame frame;
|
||||
enum hdspm_ltc_input_format input_format;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSPM_IOCTL_GET_LTC _IOR('H', 0x46, struct hdspm_ltc)
|
||||
|
||||
/**
|
||||
* The status data reflects the device's current state
|
||||
* as determined by the card's configuration and
|
||||
* connection status.
|
||||
**/
|
||||
|
||||
enum hdspm_sync {
|
||||
hdspm_sync_no_lock = 0,
|
||||
hdspm_sync_lock = 1,
|
||||
hdspm_sync_sync = 2
|
||||
};
|
||||
|
||||
enum hdspm_madi_input {
|
||||
hdspm_input_optical = 0,
|
||||
hdspm_input_coax = 1
|
||||
};
|
||||
|
||||
enum hdspm_madi_channel_format {
|
||||
hdspm_format_ch_64 = 0,
|
||||
hdspm_format_ch_56 = 1
|
||||
};
|
||||
|
||||
enum hdspm_madi_frame_format {
|
||||
hdspm_frame_48 = 0,
|
||||
hdspm_frame_96 = 1
|
||||
};
|
||||
|
||||
enum hdspm_syncsource {
|
||||
syncsource_wc = 0,
|
||||
syncsource_madi = 1,
|
||||
syncsource_tco = 2,
|
||||
syncsource_sync = 3,
|
||||
syncsource_none = 4
|
||||
};
|
||||
|
||||
struct hdspm_status {
|
||||
uint8_t card_type; /* enum hdspm_io_type */
|
||||
enum hdspm_syncsource autosync_source;
|
||||
|
||||
uint64_t card_clock;
|
||||
uint32_t master_period;
|
||||
|
||||
union {
|
||||
struct {
|
||||
uint8_t sync_wc; /* enum hdspm_sync */
|
||||
uint8_t sync_madi; /* enum hdspm_sync */
|
||||
uint8_t sync_tco; /* enum hdspm_sync */
|
||||
uint8_t sync_in; /* enum hdspm_sync */
|
||||
uint8_t madi_input; /* enum hdspm_madi_input */
|
||||
uint8_t channel_format; /* enum hdspm_madi_channel_format */
|
||||
uint8_t frame_format; /* enum hdspm_madi_frame_format */
|
||||
} madi;
|
||||
} card_specific;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSPM_IOCTL_GET_STATUS \
|
||||
_IOR('H', 0x47, struct hdspm_status)
|
||||
|
||||
/**
|
||||
* Get information about the card and its add-ons.
|
||||
**/
|
||||
|
||||
#define HDSPM_ADDON_TCO 1
|
||||
|
||||
struct hdspm_version {
|
||||
uint8_t card_type; /* enum hdspm_io_type */
|
||||
char cardname[20];
|
||||
unsigned int serial;
|
||||
unsigned short firmware_rev;
|
||||
int addons;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSPM_IOCTL_GET_VERSION _IOR('H', 0x48, struct hdspm_version)
|
||||
|
||||
/* ------------- get Matrix Mixer IOCTL --------------- */
|
||||
|
||||
/* MADI mixer: 64inputs+64playback in 64outputs = 8192 => *4Byte =
|
||||
* 32768 Bytes
|
||||
*/
|
||||
|
||||
/* organisation is 64 channelfader in a continous memory block */
|
||||
/* equivalent to hardware definition, maybe for future feature of mmap of
|
||||
* them
|
||||
*/
|
||||
/* each of 64 outputs has 64 infader and 64 outfader:
|
||||
Ins to Outs mixer[out].in[in], Outstreams to Outs mixer[out].pb[pb] */
|
||||
|
||||
#define HDSPM_MIXER_CHANNELS HDSPM_MAX_CHANNELS
|
||||
|
||||
struct hdspm_channelfader {
|
||||
unsigned int in[HDSPM_MIXER_CHANNELS];
|
||||
unsigned int pb[HDSPM_MIXER_CHANNELS];
|
||||
};
|
||||
|
||||
struct hdspm_mixer {
|
||||
struct hdspm_channelfader ch[HDSPM_MIXER_CHANNELS];
|
||||
};
|
||||
|
||||
struct hdspm_mixer_ioctl {
|
||||
struct hdspm_mixer *mixer;
|
||||
};
|
||||
|
||||
/* use indirect access due to the limit of ioctl bit size */
|
||||
#define SNDRV_HDSPM_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdspm_mixer_ioctl)
|
||||
|
||||
/* typedefs for compatibility to user-space */
|
||||
typedef struct hdspm_peak_rms hdspm_peak_rms_t;
|
||||
typedef struct hdspm_config_info hdspm_config_info_t;
|
||||
typedef struct hdspm_version hdspm_version_t;
|
||||
typedef struct hdspm_channelfader snd_hdspm_channelfader_t;
|
||||
typedef struct hdspm_mixer hdspm_mixer_t;
|
||||
|
||||
|
||||
#endif
|
115
thirdparty/linuxbsd_headers/alsa/sound/sb16_csp.h
vendored
Normal file
115
thirdparty/linuxbsd_headers/alsa/sound/sb16_csp.h
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
#ifndef __SOUND_SB16_CSP_H
|
||||
#define __SOUND_SB16_CSP_H
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999 by Uros Bizjak <uros@kss-loka.si>
|
||||
* Takashi Iwai <tiwai@suse.de>
|
||||
*
|
||||
* SB16ASP/AWE32 CSP control
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
/* CSP modes */
|
||||
#define SNDRV_SB_CSP_MODE_NONE 0x00
|
||||
#define SNDRV_SB_CSP_MODE_DSP_READ 0x01 /* Record from DSP */
|
||||
#define SNDRV_SB_CSP_MODE_DSP_WRITE 0x02 /* Play to DSP */
|
||||
#define SNDRV_SB_CSP_MODE_QSOUND 0x04 /* QSound */
|
||||
|
||||
/* CSP load flags */
|
||||
#define SNDRV_SB_CSP_LOAD_FROMUSER 0x01
|
||||
#define SNDRV_SB_CSP_LOAD_INITBLOCK 0x02
|
||||
|
||||
/* CSP sample width */
|
||||
#define SNDRV_SB_CSP_SAMPLE_8BIT 0x01
|
||||
#define SNDRV_SB_CSP_SAMPLE_16BIT 0x02
|
||||
|
||||
/* CSP channels */
|
||||
#define SNDRV_SB_CSP_MONO 0x01
|
||||
#define SNDRV_SB_CSP_STEREO 0x02
|
||||
|
||||
/* CSP rates */
|
||||
#define SNDRV_SB_CSP_RATE_8000 0x01
|
||||
#define SNDRV_SB_CSP_RATE_11025 0x02
|
||||
#define SNDRV_SB_CSP_RATE_22050 0x04
|
||||
#define SNDRV_SB_CSP_RATE_44100 0x08
|
||||
#define SNDRV_SB_CSP_RATE_ALL 0x0f
|
||||
|
||||
/* CSP running state */
|
||||
#define SNDRV_SB_CSP_ST_IDLE 0x00
|
||||
#define SNDRV_SB_CSP_ST_LOADED 0x01
|
||||
#define SNDRV_SB_CSP_ST_RUNNING 0x02
|
||||
#define SNDRV_SB_CSP_ST_PAUSED 0x04
|
||||
#define SNDRV_SB_CSP_ST_AUTO 0x08
|
||||
#define SNDRV_SB_CSP_ST_QSOUND 0x10
|
||||
|
||||
/* maximum QSound value (180 degrees right) */
|
||||
#define SNDRV_SB_CSP_QSOUND_MAX_RIGHT 0x20
|
||||
|
||||
/* maximum microcode RIFF file size */
|
||||
#define SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE 0x3000
|
||||
|
||||
/* microcode header */
|
||||
typedef struct snd_sb_csp_mc_header {
|
||||
char codec_name[16]; /* id name of codec */
|
||||
unsigned short func_req; /* requested function */
|
||||
} snd_sb_csp_mc_header_t;
|
||||
|
||||
/* microcode to be loaded */
|
||||
typedef struct snd_sb_csp_microcode {
|
||||
snd_sb_csp_mc_header_t info;
|
||||
unsigned char data[SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE];
|
||||
} snd_sb_csp_microcode_t;
|
||||
|
||||
/* start CSP with sample_width in mono/stereo */
|
||||
typedef struct snd_sb_csp_start {
|
||||
int sample_width; /* sample width, look above */
|
||||
int channels; /* channels, look above */
|
||||
} snd_sb_csp_start_t;
|
||||
|
||||
/* CSP information */
|
||||
typedef struct snd_sb_csp_info {
|
||||
char codec_name[16]; /* id name of codec */
|
||||
unsigned short func_nr; /* function number */
|
||||
unsigned int acc_format; /* accepted PCM formats */
|
||||
unsigned short acc_channels; /* accepted channels */
|
||||
unsigned short acc_width; /* accepted sample width */
|
||||
unsigned short acc_rates; /* accepted sample rates */
|
||||
unsigned short csp_mode; /* CSP mode, see above */
|
||||
unsigned short run_channels; /* current channels */
|
||||
unsigned short run_width; /* current sample width */
|
||||
unsigned short version; /* version id: 0x10 - 0x1f */
|
||||
unsigned short state; /* state bits */
|
||||
} snd_sb_csp_info_t;
|
||||
|
||||
/* HWDEP controls */
|
||||
/* get CSP information */
|
||||
#define SNDRV_SB_CSP_IOCTL_INFO _IOR('H', 0x10, snd_sb_csp_info_t)
|
||||
/* load microcode to CSP */
|
||||
#define SNDRV_SB_CSP_IOCTL_LOAD_CODE _IOW('H', 0x11, snd_sb_csp_microcode_t)
|
||||
/* unload microcode from CSP */
|
||||
#define SNDRV_SB_CSP_IOCTL_UNLOAD_CODE _IO('H', 0x12)
|
||||
/* start CSP */
|
||||
#define SNDRV_SB_CSP_IOCTL_START _IOW('H', 0x13, snd_sb_csp_start_t)
|
||||
/* stop CSP */
|
||||
#define SNDRV_SB_CSP_IOCTL_STOP _IO('H', 0x14)
|
||||
/* pause CSP and DMA transfer */
|
||||
#define SNDRV_SB_CSP_IOCTL_PAUSE _IO('H', 0x15)
|
||||
/* restart CSP and DMA transfer */
|
||||
#define SNDRV_SB_CSP_IOCTL_RESTART _IO('H', 0x16)
|
||||
|
||||
|
||||
#endif /* __SOUND_SB16_CSP */
|
21
thirdparty/linuxbsd_headers/alsa/sound/sscape_ioctl.h
vendored
Normal file
21
thirdparty/linuxbsd_headers/alsa/sound/sscape_ioctl.h
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef SSCAPE_IOCTL_H
|
||||
#define SSCAPE_IOCTL_H
|
||||
|
||||
|
||||
struct sscape_bootblock
|
||||
{
|
||||
unsigned char code[256];
|
||||
unsigned version;
|
||||
};
|
||||
|
||||
#define SSCAPE_MICROCODE_SIZE 65536
|
||||
|
||||
struct sscape_microcode
|
||||
{
|
||||
unsigned char *code;
|
||||
};
|
||||
|
||||
#define SND_SSCAPE_LOAD_BOOTB _IOWR('P', 100, struct sscape_bootblock)
|
||||
#define SND_SSCAPE_LOAD_MCODE _IOW ('P', 101, struct sscape_microcode)
|
||||
|
||||
#endif
|
100
thirdparty/linuxbsd_headers/alsa/sound/tlv.h
vendored
Normal file
100
thirdparty/linuxbsd_headers/alsa/sound/tlv.h
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef __UAPI_SOUND_TLV_H
|
||||
#define __UAPI_SOUND_TLV_H
|
||||
|
||||
#define SNDRV_CTL_TLVT_CONTAINER 0 /* one level down - group of TLVs */
|
||||
#define SNDRV_CTL_TLVT_DB_SCALE 1 /* dB scale */
|
||||
#define SNDRV_CTL_TLVT_DB_LINEAR 2 /* linear volume */
|
||||
#define SNDRV_CTL_TLVT_DB_RANGE 3 /* dB range container */
|
||||
#define SNDRV_CTL_TLVT_DB_MINMAX 4 /* dB scale with min/max */
|
||||
#define SNDRV_CTL_TLVT_DB_MINMAX_MUTE 5 /* dB scale with min/max with mute */
|
||||
|
||||
/*
|
||||
* channel-mapping TLV items
|
||||
* TLV length must match with num_channels
|
||||
*/
|
||||
#define SNDRV_CTL_TLVT_CHMAP_FIXED 0x101 /* fixed channel position */
|
||||
#define SNDRV_CTL_TLVT_CHMAP_VAR 0x102 /* channels freely swappable */
|
||||
#define SNDRV_CTL_TLVT_CHMAP_PAIRED 0x103 /* pair-wise swappable */
|
||||
|
||||
/*
|
||||
* TLV structure is right behind the struct snd_ctl_tlv:
|
||||
* unsigned int type - see SNDRV_CTL_TLVT_*
|
||||
* unsigned int length
|
||||
* .... data aligned to sizeof(unsigned int), use
|
||||
* block_length = (length + (sizeof(unsigned int) - 1)) &
|
||||
* ~(sizeof(unsigned int) - 1)) ....
|
||||
*/
|
||||
#define SNDRV_CTL_TLVD_ITEM(type, ...) \
|
||||
(type), SNDRV_CTL_TLVD_LENGTH(__VA_ARGS__), __VA_ARGS__
|
||||
#define SNDRV_CTL_TLVD_LENGTH(...) \
|
||||
((unsigned int)sizeof((const unsigned int[]) { __VA_ARGS__ }))
|
||||
|
||||
#define SNDRV_CTL_TLVD_CONTAINER_ITEM(...) \
|
||||
SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_CONTAINER, __VA_ARGS__)
|
||||
#define SNDRV_CTL_TLVD_DECLARE_CONTAINER(name, ...) \
|
||||
unsigned int name[] = { \
|
||||
SNDRV_CTL_TLVD_CONTAINER_ITEM(__VA_ARGS__) \
|
||||
}
|
||||
|
||||
#define SNDRV_CTL_TLVD_DB_SCALE_MASK 0xffff
|
||||
#define SNDRV_CTL_TLVD_DB_SCALE_MUTE 0x10000
|
||||
#define SNDRV_CTL_TLVD_DB_SCALE_ITEM(min, step, mute) \
|
||||
SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_SCALE, \
|
||||
(min), \
|
||||
((step) & SNDRV_CTL_TLVD_DB_SCALE_MASK) | \
|
||||
((mute) ? SNDRV_CTL_TLVD_DB_SCALE_MUTE : 0))
|
||||
#define SNDRV_CTL_TLVD_DECLARE_DB_SCALE(name, min, step, mute) \
|
||||
unsigned int name[] = { \
|
||||
SNDRV_CTL_TLVD_DB_SCALE_ITEM(min, step, mute) \
|
||||
}
|
||||
|
||||
/* dB scale specified with min/max values instead of step */
|
||||
#define SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB, max_dB) \
|
||||
SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX, (min_dB), (max_dB))
|
||||
#define SNDRV_CTL_TLVD_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) \
|
||||
SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX_MUTE, (min_dB), (max_dB))
|
||||
#define SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(name, min_dB, max_dB) \
|
||||
unsigned int name[] = { \
|
||||
SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB, max_dB) \
|
||||
}
|
||||
#define SNDRV_CTL_TLVD_DECLARE_DB_MINMAX_MUTE(name, min_dB, max_dB) \
|
||||
unsigned int name[] = { \
|
||||
SNDRV_CTL_TLVD_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) \
|
||||
}
|
||||
|
||||
/* linear volume between min_dB and max_dB (.01dB unit) */
|
||||
#define SNDRV_CTL_TLVD_DB_LINEAR_ITEM(min_dB, max_dB) \
|
||||
SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_LINEAR, (min_dB), (max_dB))
|
||||
#define SNDRV_CTL_TLVD_DECLARE_DB_LINEAR(name, min_dB, max_dB) \
|
||||
unsigned int name[] = { \
|
||||
SNDRV_CTL_TLVD_DB_LINEAR_ITEM(min_dB, max_dB) \
|
||||
}
|
||||
|
||||
/* dB range container:
|
||||
* Items in dB range container must be ordered by their values and by their
|
||||
* dB values. This implies that larger values must correspond with larger
|
||||
* dB values (which is also required for all other mixer controls).
|
||||
*/
|
||||
/* Each item is: <min> <max> <TLV> */
|
||||
#define SNDRV_CTL_TLVD_DB_RANGE_ITEM(...) \
|
||||
SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_RANGE, __VA_ARGS__)
|
||||
#define SNDRV_CTL_TLVD_DECLARE_DB_RANGE(name, ...) \
|
||||
unsigned int name[] = { \
|
||||
SNDRV_CTL_TLVD_DB_RANGE_ITEM(__VA_ARGS__) \
|
||||
}
|
||||
|
||||
#define SNDRV_CTL_TLVD_DB_GAIN_MUTE -9999999
|
||||
|
||||
#endif
|
42
thirdparty/linuxbsd_headers/alsa/sound/type_compat.h
vendored
Normal file
42
thirdparty/linuxbsd_headers/alsa/sound/type_compat.h
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef __TYPE_COMPAT_H
|
||||
#define __TYPE_COMPAT_H
|
||||
|
||||
#ifndef DOC_HIDDEN
|
||||
#include <stdint.h>
|
||||
typedef uint8_t __u8;
|
||||
typedef uint16_t __u16;
|
||||
typedef uint32_t __u32;
|
||||
typedef int8_t __s8;
|
||||
typedef int16_t __s16;
|
||||
typedef int32_t __s32;
|
||||
|
||||
#include <endian.h>
|
||||
#include <byteswap.h>
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
#define __cpu_to_le32(x) (x)
|
||||
#define __cpu_to_be32(x) bswap_32(x)
|
||||
#define __cpu_to_le16(x) (x)
|
||||
#define __cpu_to_be16(x) bswap_16(x)
|
||||
#else
|
||||
#define __cpu_to_le32(x) bswap_32(x)
|
||||
#define __cpu_to_be32(x) (x)
|
||||
#define __cpu_to_le16(x) bswap_16(x)
|
||||
#define __cpu_to_be16(x) (x)
|
||||
#endif
|
||||
|
||||
#define __le32_to_cpu __cpu_to_le32
|
||||
#define __be32_to_cpu __cpu_to_be32
|
||||
#define __le16_to_cpu __cpu_to_le16
|
||||
#define __be16_to_cpu __cpu_to_be16
|
||||
|
||||
#define __le64 __u64
|
||||
#define __le32 __u32
|
||||
#define __le16 __u16
|
||||
#define __le8 __u8
|
||||
#define __be64 __u64
|
||||
#define __be32 __u32
|
||||
#define __be16 __u16
|
||||
#define __be8 __u8
|
||||
#endif /* DOC_HIDDEN */
|
||||
|
||||
#endif /* __TYPE_COMPAT_H */
|
Reference in New Issue
Block a user