mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
include/sound: sync with the kernel v5.4
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
1a4b362115
commit
0aece285a7
11 changed files with 368 additions and 175 deletions
|
|
@ -1,3 +1,4 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Main header file for the ALSA sequencer
|
||||
* Copyright (c) 1998-1999 by Frank van de Pol <fvdpol@coil.demon.nl>
|
||||
|
|
@ -16,7 +17,7 @@
|
|||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
#ifndef _UAPI__SOUND_ASEQUENCER_H
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* uapi/sound/asoc.h -- ALSA SoC Firmware Controls and DAPM
|
||||
*
|
||||
|
|
@ -15,6 +16,9 @@
|
|||
#ifndef __LINUX_UAPI_SND_ASOC_H
|
||||
#define __LINUX_UAPI_SND_ASOC_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <sound/asound.h>
|
||||
|
||||
/*
|
||||
* Maximum number of channels topology kcontrol can represent.
|
||||
*/
|
||||
|
|
@ -569,4 +573,61 @@ struct snd_soc_tplg_dai {
|
|||
__le32 flags; /* SND_SOC_TPLG_DAI_FLGBIT_* */
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Old version of ABI structs, supported for backward compatibility.
|
||||
*/
|
||||
|
||||
/* Manifest v4 */
|
||||
struct snd_soc_tplg_manifest_v4 {
|
||||
__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 */
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __packed;
|
||||
|
||||
/* Stream Capabilities v4 */
|
||||
struct snd_soc_tplg_stream_caps_v4 {
|
||||
__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 */
|
||||
} __packed;
|
||||
|
||||
/* PCM v4 */
|
||||
struct snd_soc_tplg_pcm_v4 {
|
||||
__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_v4 caps[2]; /* playback and capture for DAI */
|
||||
} __packed;
|
||||
|
||||
/* Physical link config v4 */
|
||||
struct snd_soc_tplg_link_config_v4 {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 id; /* unique ID - 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 */
|
||||
} __packed;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Advanced Linux Sound Architecture - ALSA - Driver
|
||||
* Copyright (c) 1994-2003 by Jaroslav Kysela <perex@perex.cz>,
|
||||
|
|
@ -16,7 +17,7 @@
|
|||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
@ -31,6 +32,7 @@
|
|||
|
||||
#ifndef __KERNEL__
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -93,7 +95,7 @@ enum {
|
|||
SNDRV_HWDEP_IFACE_VX, /* Digigram VX cards */
|
||||
SNDRV_HWDEP_IFACE_MIXART, /* Digigram miXart cards */
|
||||
SNDRV_HWDEP_IFACE_USX2Y, /* Tascam US122, US224 & US428 usb */
|
||||
SNDRV_HWDEP_IFACE_EMUX_WAVETABLE, /* EmuX wavetable */
|
||||
SNDRV_HWDEP_IFACE_EMUX_WAVETABLE, /* EmuX wavetable */
|
||||
SNDRV_HWDEP_IFACE_BLUETOOTH, /* Bluetooth audio */
|
||||
SNDRV_HWDEP_IFACE_USX2Y_PCM, /* Tascam US122, US224 & US428 rawusb pcm */
|
||||
SNDRV_HWDEP_IFACE_PCXHR, /* Digigram PCXHR */
|
||||
|
|
@ -241,6 +243,7 @@ typedef int __bitwise snd_pcm_format_t;
|
|||
#define SNDRV_PCM_FORMAT_DSD_U16_BE ((__force snd_pcm_format_t) 51) /* DSD, 2-byte samples DSD (x16), big endian */
|
||||
#define SNDRV_PCM_FORMAT_DSD_U32_BE ((__force snd_pcm_format_t) 52) /* DSD, 4-byte samples DSD (x32), big endian */
|
||||
#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U32_BE
|
||||
#define SNDRV_PCM_FORMAT_FIRST SNDRV_PCM_FORMAT_S8
|
||||
|
||||
#ifdef SNDRV_LITTLE_ENDIAN
|
||||
#define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE
|
||||
|
|
@ -392,7 +395,7 @@ struct snd_mask {
|
|||
|
||||
struct snd_pcm_hw_params {
|
||||
unsigned int flags;
|
||||
struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK -
|
||||
struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK -
|
||||
SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];
|
||||
struct snd_mask mres[5]; /* reserved masks */
|
||||
struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL -
|
||||
|
|
@ -865,7 +868,7 @@ typedef int __bitwise snd_ctl_elem_iface_t;
|
|||
#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1<<8) /* control does actually nothing, but may be updated */
|
||||
#define SNDRV_CTL_ELEM_ACCESS_LOCK (1<<9) /* write lock */
|
||||
#define SNDRV_CTL_ELEM_ACCESS_OWNER (1<<10) /* write lock owner */
|
||||
#define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1<<28) /* kernel use a TLV callback */
|
||||
#define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1<<28) /* kernel use a TLV callback */
|
||||
#define SNDRV_CTL_ELEM_ACCESS_USER (1<<29) /* user space element */
|
||||
/* bits 30 and 31 are obsoleted (for indirect access) */
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
#ifndef __SOUND_ASOUND_FM_H
|
||||
#define __SOUND_ASOUND_FM_H
|
||||
|
||||
|
|
@ -22,7 +23,7 @@
|
|||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,25 +1,10 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#ifndef __SOUND_ASOUNDEF_H
|
||||
#define __SOUND_ASOUNDEF_H
|
||||
|
||||
/*
|
||||
* Advanced Linux Sound Architecture - ALSA - Driver
|
||||
* Copyright (c) 1994-2000 by Jaroslav Kysela <perex@perex.cz>
|
||||
*
|
||||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
|
|
@ -60,35 +45,56 @@
|
|||
#define IEC958_AES1_PRO_USERBITS_UDEF (12<<4) /* user defined application */
|
||||
#define IEC958_AES1_CON_CATEGORY 0x7f
|
||||
#define IEC958_AES1_CON_GENERAL 0x00
|
||||
#define IEC958_AES1_CON_EXPERIMENTAL 0x40
|
||||
#define IEC958_AES1_CON_SOLIDMEM_MASK 0x0f
|
||||
#define IEC958_AES1_CON_SOLIDMEM_ID 0x08
|
||||
#define IEC958_AES1_CON_BROADCAST1_MASK 0x07
|
||||
#define IEC958_AES1_CON_BROADCAST1_ID 0x04
|
||||
#define IEC958_AES1_CON_DIGDIGCONV_MASK 0x07
|
||||
#define IEC958_AES1_CON_DIGDIGCONV_ID 0x02
|
||||
#define IEC958_AES1_CON_ADC_COPYRIGHT_MASK 0x1f
|
||||
#define IEC958_AES1_CON_ADC_COPYRIGHT_ID 0x06
|
||||
#define IEC958_AES1_CON_ADC_MASK 0x1f
|
||||
#define IEC958_AES1_CON_ADC_ID 0x16
|
||||
#define IEC958_AES1_CON_BROADCAST2_MASK 0x0f
|
||||
#define IEC958_AES1_CON_BROADCAST2_ID 0x0e
|
||||
#define IEC958_AES1_CON_LASEROPT_MASK 0x07
|
||||
#define IEC958_AES1_CON_LASEROPT_ID 0x01
|
||||
#define IEC958_AES1_CON_MUSICAL_MASK 0x07
|
||||
#define IEC958_AES1_CON_MUSICAL_ID 0x05
|
||||
#define IEC958_AES1_CON_MAGNETIC_MASK 0x07
|
||||
#define IEC958_AES1_CON_MAGNETIC_ID 0x03
|
||||
#define IEC958_AES1_CON_IEC908_CD (IEC958_AES1_CON_LASEROPT_ID|0x00)
|
||||
#define IEC958_AES1_CON_NON_IEC908_CD (IEC958_AES1_CON_LASEROPT_ID|0x08)
|
||||
#define IEC958_AES1_CON_MINI_DISC (IEC958_AES1_CON_LASEROPT_ID|0x48)
|
||||
#define IEC958_AES1_CON_DVD (IEC958_AES1_CON_LASEROPT_ID|0x18)
|
||||
#define IEC958_AES1_CON_LASTEROPT_OTHER (IEC958_AES1_CON_LASEROPT_ID|0x78)
|
||||
#define IEC958_AES1_CON_DIGDIGCONV_MASK 0x07
|
||||
#define IEC958_AES1_CON_DIGDIGCONV_ID 0x02
|
||||
#define IEC958_AES1_CON_PCM_CODER (IEC958_AES1_CON_DIGDIGCONV_ID|0x00)
|
||||
#define IEC958_AES1_CON_SAMPLER (IEC958_AES1_CON_DIGDIGCONV_ID|0x20)
|
||||
#define IEC958_AES1_CON_MIXER (IEC958_AES1_CON_DIGDIGCONV_ID|0x10)
|
||||
#define IEC958_AES1_CON_RATE_CONVERTER (IEC958_AES1_CON_DIGDIGCONV_ID|0x18)
|
||||
#define IEC958_AES1_CON_SYNTHESIZER (IEC958_AES1_CON_MUSICAL_ID|0x00)
|
||||
#define IEC958_AES1_CON_MICROPHONE (IEC958_AES1_CON_MUSICAL_ID|0x08)
|
||||
#define IEC958_AES1_CON_SAMPLER (IEC958_AES1_CON_DIGDIGCONV_ID|0x20)
|
||||
#define IEC958_AES1_CON_DSP (IEC958_AES1_CON_DIGDIGCONV_ID|0x28)
|
||||
#define IEC958_AES1_CON_DIGDIGCONV_OTHER (IEC958_AES1_CON_DIGDIGCONV_ID|0x78)
|
||||
#define IEC958_AES1_CON_MAGNETIC_MASK 0x07
|
||||
#define IEC958_AES1_CON_MAGNETIC_ID 0x03
|
||||
#define IEC958_AES1_CON_DAT (IEC958_AES1_CON_MAGNETIC_ID|0x00)
|
||||
#define IEC958_AES1_CON_VCR (IEC958_AES1_CON_MAGNETIC_ID|0x08)
|
||||
#define IEC958_AES1_CON_DCC (IEC958_AES1_CON_MAGNETIC_ID|0x40)
|
||||
#define IEC958_AES1_CON_MAGNETIC_DISC (IEC958_AES1_CON_MAGNETIC_ID|0x18)
|
||||
#define IEC958_AES1_CON_MAGNETIC_OTHER (IEC958_AES1_CON_MAGNETIC_ID|0x78)
|
||||
#define IEC958_AES1_CON_BROADCAST1_MASK 0x07
|
||||
#define IEC958_AES1_CON_BROADCAST1_ID 0x04
|
||||
#define IEC958_AES1_CON_DAB_JAPAN (IEC958_AES1_CON_BROADCAST1_ID|0x00)
|
||||
#define IEC958_AES1_CON_DAB_EUROPE (IEC958_AES1_CON_BROADCAST1_ID|0x08)
|
||||
#define IEC958_AES1_CON_DAB_USA (IEC958_AES1_CON_BROADCAST1_ID|0x60)
|
||||
#define IEC958_AES1_CON_SOFTWARE (IEC958_AES1_CON_BROADCAST1_ID|0x40)
|
||||
#define IEC958_AES1_CON_IEC62105 (IEC958_AES1_CON_BROADCAST1_ID|0x20)
|
||||
#define IEC958_AES1_CON_BROADCAST1_OTHER (IEC958_AES1_CON_BROADCAST1_ID|0x78)
|
||||
#define IEC958_AES1_CON_BROADCAST2_MASK 0x0f
|
||||
#define IEC958_AES1_CON_BROADCAST2_ID 0x0e
|
||||
#define IEC958_AES1_CON_MUSICAL_MASK 0x07
|
||||
#define IEC958_AES1_CON_MUSICAL_ID 0x05
|
||||
#define IEC958_AES1_CON_SYNTHESIZER (IEC958_AES1_CON_MUSICAL_ID|0x00)
|
||||
#define IEC958_AES1_CON_MICROPHONE (IEC958_AES1_CON_MUSICAL_ID|0x08)
|
||||
#define IEC958_AES1_CON_MUSICAL_OTHER (IEC958_AES1_CON_MUSICAL_ID|0x78)
|
||||
#define IEC958_AES1_CON_ADC_MASK 0x1f
|
||||
#define IEC958_AES1_CON_ADC_ID 0x06
|
||||
#define IEC958_AES1_CON_ADC (IEC958_AES1_CON_ADC_ID|0x00)
|
||||
#define IEC958_AES1_CON_ADC_OTHER (IEC958_AES1_CON_ADC_ID|0x60)
|
||||
#define IEC958_AES1_CON_ADC_COPYRIGHT_MASK 0x1f
|
||||
#define IEC958_AES1_CON_ADC_COPYRIGHT_ID 0x16
|
||||
#define IEC958_AES1_CON_ADC_COPYRIGHT (IEC958_AES1_CON_ADC_COPYRIGHT_ID|0x00)
|
||||
#define IEC958_AES1_CON_ADC_COPYRIGHT_OTHER (IEC958_AES1_CON_ADC_COPYRIGHT_ID|0x60)
|
||||
#define IEC958_AES1_CON_SOLIDMEM_MASK 0x0f
|
||||
#define IEC958_AES1_CON_SOLIDMEM_ID 0x08
|
||||
#define IEC958_AES1_CON_SOLIDMEM_DIGITAL_RECORDER_PLAYER (IEC958_AES1_CON_SOLIDMEM_ID|0x00)
|
||||
#define IEC958_AES1_CON_SOLIDMEM_OTHER (IEC958_AES1_CON_SOLIDMEM_ID|0x70)
|
||||
#define IEC958_AES1_CON_EXPERIMENTAL 0x40
|
||||
#define IEC958_AES1_CON_ORIGINAL (1<<7) /* this bits depends on the category code */
|
||||
#define IEC958_AES2_PRO_SBITS (7<<0) /* mask - sample bits */
|
||||
#define IEC958_AES2_PRO_SBITS_20 (2<<0) /* 20-bit - coordination */
|
||||
|
|
@ -106,12 +112,89 @@
|
|||
#define IEC958_AES2_CON_CHANNEL_UNSPEC (0<<4) /* unspecified */
|
||||
#define IEC958_AES3_CON_FS (15<<0) /* mask - sample frequency */
|
||||
#define IEC958_AES3_CON_FS_44100 (0<<0) /* 44.1kHz */
|
||||
#define IEC958_AES3_CON_FS_NOTID (1<<0) /* non indicated */
|
||||
#define IEC958_AES3_CON_FS_48000 (2<<0) /* 48kHz */
|
||||
#define IEC958_AES3_CON_FS_32000 (3<<0) /* 32kHz */
|
||||
#define IEC958_AES3_CON_FS_22050 (4<<0) /* 22.05kHz */
|
||||
#define IEC958_AES3_CON_FS_24000 (6<<0) /* 24kHz */
|
||||
#define IEC958_AES3_CON_FS_88200 (8<<0) /* 88.2kHz */
|
||||
#define IEC958_AES3_CON_FS_768000 (9<<0) /* 768kHz */
|
||||
#define IEC958_AES3_CON_FS_96000 (10<<0) /* 96kHz */
|
||||
#define IEC958_AES3_CON_FS_176400 (12<<0) /* 176.4kHz */
|
||||
#define IEC958_AES3_CON_FS_192000 (14<<0) /* 192kHz */
|
||||
#define IEC958_AES3_CON_CLOCK (3<<4) /* mask - clock accuracy */
|
||||
#define IEC958_AES3_CON_CLOCK_1000PPM (0<<4) /* 1000 ppm */
|
||||
#define IEC958_AES3_CON_CLOCK_50PPM (1<<4) /* 50 ppm */
|
||||
#define IEC958_AES3_CON_CLOCK_VARIABLE (2<<4) /* variable pitch */
|
||||
#define IEC958_AES4_CON_MAX_WORDLEN_24 (1<<0) /* 0 = 20-bit, 1 = 24-bit */
|
||||
#define IEC958_AES4_CON_WORDLEN (7<<1) /* mask - sample word length */
|
||||
#define IEC958_AES4_CON_WORDLEN_NOTID (0<<1) /* not indicated */
|
||||
#define IEC958_AES4_CON_WORDLEN_20_16 (1<<1) /* 20-bit or 16-bit */
|
||||
#define IEC958_AES4_CON_WORDLEN_22_18 (2<<1) /* 22-bit or 18-bit */
|
||||
#define IEC958_AES4_CON_WORDLEN_23_19 (4<<1) /* 23-bit or 19-bit */
|
||||
#define IEC958_AES4_CON_WORDLEN_24_20 (5<<1) /* 24-bit or 20-bit */
|
||||
#define IEC958_AES4_CON_WORDLEN_21_17 (6<<1) /* 21-bit or 17-bit */
|
||||
#define IEC958_AES4_CON_ORIGFS (15<<4) /* mask - original sample frequency */
|
||||
#define IEC958_AES4_CON_ORIGFS_NOTID (0<<4) /* not indicated */
|
||||
#define IEC958_AES4_CON_ORIGFS_192000 (1<<4) /* 192kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_12000 (2<<4) /* 12kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_176400 (3<<4) /* 176.4kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_96000 (5<<4) /* 96kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_8000 (6<<4) /* 8kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_88200 (7<<4) /* 88.2kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_16000 (8<<4) /* 16kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_24000 (9<<4) /* 24kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_11025 (10<<4) /* 11.025kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_22050 (11<<4) /* 22.05kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_32000 (12<<4) /* 32kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_48000 (13<<4) /* 48kHz */
|
||||
#define IEC958_AES4_CON_ORIGFS_44100 (15<<4) /* 44.1kHz */
|
||||
#define IEC958_AES5_CON_CGMSA (3<<0) /* mask - CGMS-A */
|
||||
#define IEC958_AES5_CON_CGMSA_COPYFREELY (0<<0) /* copying is permitted without restriction */
|
||||
#define IEC958_AES5_CON_CGMSA_COPYONCE (1<<0) /* one generation of copies may be made */
|
||||
#define IEC958_AES5_CON_CGMSA_COPYNOMORE (2<<0) /* condition not be used */
|
||||
#define IEC958_AES5_CON_CGMSA_COPYNEVER (3<<0) /* no copying is permitted */
|
||||
|
||||
/****************************************************************************
|
||||
* *
|
||||
* CEA-861 Audio InfoFrame. Used in HDMI and DisplayPort *
|
||||
* *
|
||||
****************************************************************************/
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CC (7<<0) /* mask - channel count */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT (0xf<<4) /* mask - coding type */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_FROM_STREAM (0<<4) /* refer to stream */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_IEC60958 (1<<4) /* IEC-60958 L-PCM */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_AC3 (2<<4) /* AC-3 */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_MPEG1 (3<<4) /* MPEG1 Layers 1 & 2 */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_MP3 (4<<4) /* MPEG1 Layer 3 */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_MPEG2_MULTICH (5<<4) /* MPEG2 Multichannel */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_AAC (6<<4) /* AAC */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_DTS (7<<4) /* DTS */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_ATRAC (8<<4) /* ATRAC */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_ONEBIT (9<<4) /* One Bit Audio */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_DOLBY_DIG_PLUS (10<<4) /* Dolby Digital + */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_DTS_HD (11<<4) /* DTS-HD */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_MAT (12<<4) /* MAT (MLP) */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_DST (13<<4) /* DST */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB1CT_WMA_PRO (14<<4) /* WMA Pro */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SF (7<<2) /* mask - sample frequency */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SF_FROM_STREAM (0<<2) /* refer to stream */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SF_32000 (1<<2) /* 32kHz */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SF_44100 (2<<2) /* 44.1kHz */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SF_48000 (3<<2) /* 48kHz */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SF_88200 (4<<2) /* 88.2kHz */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SF_96000 (5<<2) /* 96kHz */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SF_176400 (6<<2) /* 176.4kHz */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SF_192000 (7<<2) /* 192kHz */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SS (3<<0) /* mask - sample size */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SS_FROM_STREAM (0<<0) /* refer to stream */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SS_16BIT (1<<0) /* 16 bits */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SS_20BIT (2<<0) /* 20 bits */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB2SS_24BIT (3<<0) /* 24 bits */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB5_DM_INH (1<<7) /* mask - inhibit downmixing */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB5_DM_INH_PERMITTED (0<<7) /* stereo downmix permitted */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB5_DM_INH_PROHIBITED (1<<7) /* stereo downmis prohibited */
|
||||
#define CEA861_AUDIO_INFOFRAME_DB5_LSV (0xf<<3) /* mask - level-shift values */
|
||||
|
||||
/*****************************************************************************
|
||||
* *
|
||||
|
|
@ -185,7 +268,7 @@
|
|||
#define MIDI_CTL_LSB_GENERAL_PURPOSE4 0x33
|
||||
#define MIDI_CTL_SUSTAIN 0x40
|
||||
#define MIDI_CTL_PORTAMENTO 0x41
|
||||
#define MIDI_CTL_SUSTENUTO 0x42
|
||||
#define MIDI_CTL_SOSTENUTO 0x42
|
||||
#define MIDI_CTL_SOFT_PEDAL 0x43
|
||||
#define MIDI_CTL_LEGATO_FOOTSWITCH 0x44
|
||||
#define MIDI_CTL_HOLD2 0x45
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
#ifndef __SOUND_EMU10K1_H
|
||||
#define __SOUND_EMU10K1_H
|
||||
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (c) by Jaroslav Kysela <perex@perex.cz>,
|
||||
* Creative Labs, Inc.
|
||||
|
|
@ -19,11 +17,14 @@
|
|||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
#ifndef _UAPI__SOUND_EMU10K1_H
|
||||
#define _UAPI__SOUND_EMU10K1_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <linux/types.h>
|
||||
#include <sound/asound.h>
|
||||
|
||||
/*
|
||||
* ---- FX8010 ----
|
||||
|
|
@ -34,6 +35,14 @@
|
|||
|
||||
#define EMU10K1_FX8010_PCM_COUNT 8
|
||||
|
||||
/*
|
||||
* Following definition is copied from linux/types.h to support compiling
|
||||
* this header file in userspace since they are not generally available for
|
||||
* uapi headers.
|
||||
*/
|
||||
#define __EMU10K1_DECLARE_BITMAP(name,bits) \
|
||||
unsigned long name[(bits) / (sizeof(unsigned long) * 8)]
|
||||
|
||||
/* instruction set */
|
||||
#define iMAC0 0x00 /* R = A + (X * Y >> 31) ; saturation */
|
||||
#define iMAC1 0x01 /* R = A + (-X * Y >> 31) ; saturation */
|
||||
|
|
@ -55,7 +64,10 @@
|
|||
/* 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 EXTOUT(x) (0x20 + (x)) /* x = 0x00 - 0x0f physical outs -> FXWC low 16 bits */
|
||||
#define FXBUS2(x) (0x30 + (x)) /* x = 0x00 - 0x0f copies of fx buses for capture -> FXWC high 16 bits */
|
||||
/* NB: 0x31 and 0x32 are shared with Center/LFE on SB live 5.1 */
|
||||
|
||||
#define C_00000000 0x40
|
||||
#define C_00000001 0x41
|
||||
#define C_00000002 0x42
|
||||
|
|
@ -90,9 +102,22 @@
|
|||
#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_ITRAM_DATA(x) (TANKMEMDATAREGBASE + 0x00 + (x)) /* x = 0x00 - 0xbf */
|
||||
#define A_ETRAM_DATA(x) (TANKMEMDATAREGBASE + 0xc0 + (x)) /* x = 0x00 - 0x3f */
|
||||
#define A_ITRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x00 + (x)) /* x = 0x00 - 0xbf */
|
||||
#define A_ETRAM_ADDR(x) (TANKMEMADDRREGBASE + 0xc0 + (x)) /* x = 0x00 - 0x3f */
|
||||
#define A_ITRAM_CTL(x) (A_TANKMEMCTLREGBASE + 0x00 + (x)) /* x = 0x00 - 0xbf */
|
||||
#define A_ETRAM_CTL(x) (A_TANKMEMCTLREGBASE + 0xc0 + (x)) /* x = 0x00 - 0x3f */
|
||||
|
||||
#define A_FXBUS(x) (0x00 + (x)) /* x = 0x00 - 0x3f FX buses */
|
||||
#define A_EXTIN(x) (0x40 + (x)) /* x = 0x00 - 0x0f physical ins */
|
||||
#define A_P16VIN(x) (0x50 + (x)) /* x = 0x00 - 0x0f p16v ins (A2 only) "EMU32 inputs" */
|
||||
#define A_EXTOUT(x) (0x60 + (x)) /* x = 0x00 - 0x1f physical outs -> A_FXWC1 0x79-7f unknown */
|
||||
#define A_FXBUS2(x) (0x80 + (x)) /* x = 0x00 - 0x1f extra outs used for EFX capture -> A_FXWC2 */
|
||||
#define A_EMU32OUTH(x) (0xa0 + (x)) /* x = 0x00 - 0x0f "EMU32_OUT_10 - _1F" - ??? */
|
||||
#define A_EMU32OUTL(x) (0xb0 + (x)) /* x = 0x00 - 0x0f "EMU32_OUT_1 - _F" - ??? */
|
||||
#define A3_EMU32IN(x) (0x160 + (x)) /* x = 0x00 - 0x3f "EMU32_IN_00 - _3F" - Only when .device = 0x0008 */
|
||||
#define A3_EMU32OUT(x) (0x1E0 + (x)) /* x = 0x00 - 0x0f "EMU32_OUT_00 - _3F" - Only when .device = 0x0008 */
|
||||
#define A_GPR(x) (A_FXGPREGBASE + (x))
|
||||
|
||||
/* cc_reg constants */
|
||||
|
|
@ -242,14 +267,14 @@
|
|||
#define TANKMEMADDRREG_READ 0x00100000 /* Read from tank memory */
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
struct snd_emu10k1_fx8010_info {
|
||||
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
|
||||
|
|
@ -257,22 +282,8 @@ typedef struct {
|
|||
#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 */
|
||||
struct snd_emu10k1_fx8010_control_gpr {
|
||||
struct snd_ctl_elem_id 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) */
|
||||
|
|
@ -280,41 +291,53 @@ typedef struct {
|
|||
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;
|
||||
const unsigned int *tlv;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
/* old ABI without TLV support */
|
||||
struct snd_emu10k1_fx8010_control_old_gpr {
|
||||
struct snd_ctl_elem_id id;
|
||||
unsigned int vcount;
|
||||
unsigned int count;
|
||||
unsigned short gpr[32];
|
||||
unsigned int value[32];
|
||||
unsigned int min;
|
||||
unsigned int max;
|
||||
unsigned int translation;
|
||||
};
|
||||
|
||||
struct snd_emu10k1_fx8010_code {
|
||||
char name[128];
|
||||
|
||||
unsigned long gpr_valid[0x200/(sizeof(unsigned long)*8)]; /* bitmask of valid initializers */
|
||||
uint32_t *gpr_map; /* initializers */
|
||||
__EMU10K1_DECLARE_BITMAP(gpr_valid, 0x200); /* bitmask of valid initializers */
|
||||
__u32 __user *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 */
|
||||
struct snd_emu10k1_fx8010_control_gpr __user *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 */
|
||||
struct snd_ctl_elem_id __user *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 */
|
||||
struct snd_emu10k1_fx8010_control_gpr __user *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 */
|
||||
__EMU10K1_DECLARE_BITMAP(tram_valid, 0x100); /* bitmask of valid initializers */
|
||||
__u32 __user *tram_data_map; /* data initializers */
|
||||
__u32 __user *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;
|
||||
__EMU10K1_DECLARE_BITMAP(code_valid, 1024); /* bitmask of valid instructions */
|
||||
__u32 __user *code; /* one instruction - 64 bits */
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
struct snd_emu10k1_fx8010_tram {
|
||||
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 {
|
||||
struct snd_emu10k1_fx8010_pcm_rec {
|
||||
unsigned int substream; /* substream number */
|
||||
unsigned int res1; /* reserved */
|
||||
unsigned int channels; /* 16-bit channels count, zero = remove this substream */
|
||||
|
|
@ -329,16 +352,18 @@ typedef struct {
|
|||
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_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
|
||||
|
||||
#define SNDRV_EMU10K1_IOCTL_INFO _IOR ('H', 0x10, struct snd_emu10k1_fx8010_info)
|
||||
#define SNDRV_EMU10K1_IOCTL_CODE_POKE _IOW ('H', 0x11, struct snd_emu10k1_fx8010_code)
|
||||
#define SNDRV_EMU10K1_IOCTL_CODE_PEEK _IOWR('H', 0x12, struct snd_emu10k1_fx8010_code)
|
||||
#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_TRAM_POKE _IOW ('H', 0x21, struct snd_emu10k1_fx8010_tram)
|
||||
#define SNDRV_EMU10K1_IOCTL_TRAM_PEEK _IOWR('H', 0x22, struct snd_emu10k1_fx8010_tram)
|
||||
#define SNDRV_EMU10K1_IOCTL_PCM_POKE _IOW ('H', 0x30, struct snd_emu10k1_fx8010_pcm_rec)
|
||||
#define SNDRV_EMU10K1_IOCTL_PCM_PEEK _IOWR('H', 0x31, struct snd_emu10k1_fx8010_pcm_rec)
|
||||
#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)
|
||||
|
|
@ -346,4 +371,11 @@ typedef struct {
|
|||
#define SNDRV_EMU10K1_IOCTL_SINGLE_STEP _IOW ('H', 0x83, int)
|
||||
#define SNDRV_EMU10K1_IOCTL_DBG_READ _IOR ('H', 0x84, int)
|
||||
|
||||
#endif /* __SOUND_EMU10K1_H */
|
||||
/* typedefs for compatibility to user-space */
|
||||
typedef struct snd_emu10k1_fx8010_info emu10k1_fx8010_info_t;
|
||||
typedef struct snd_emu10k1_fx8010_control_gpr emu10k1_fx8010_control_gpr_t;
|
||||
typedef struct snd_emu10k1_fx8010_code emu10k1_fx8010_code_t;
|
||||
typedef struct snd_emu10k1_fx8010_tram emu10k1_fx8010_tram_t;
|
||||
typedef struct snd_emu10k1_fx8010_pcm_rec emu10k1_fx8010_pcm_t;
|
||||
|
||||
#endif /* _UAPI__SOUND_EMU10K1_H */
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
#ifndef __SOUND_HDSP_H
|
||||
#define __SOUND_HDSP_H
|
||||
|
||||
|
|
@ -19,36 +20,32 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define HDSP_MATRIX_MIXER_SIZE 2048
|
||||
|
||||
typedef enum {
|
||||
enum HDSP_IO_Type {
|
||||
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)
|
||||
struct hdsp_peak_rms {
|
||||
__u32 input_peaks[26];
|
||||
__u32 playback_peaks[26];
|
||||
__u32 output_peaks[28];
|
||||
__u64 input_rms[26];
|
||||
__u64 playback_rms[26];
|
||||
/* These are only used for H96xx cards */
|
||||
__u64 output_rms[26];
|
||||
};
|
||||
|
||||
typedef struct _snd_hdsp_config_info hdsp_config_info_t;
|
||||
#define SNDRV_HDSP_IOCTL_GET_PEAK_RMS _IOR('H', 0x40, struct hdsp_peak_rms)
|
||||
|
||||
struct _snd_hdsp_config_info {
|
||||
struct hdsp_config_info {
|
||||
unsigned char pref_sync_ref;
|
||||
unsigned char wordclock_sync_check;
|
||||
unsigned char spdif_sync_check;
|
||||
|
|
@ -74,40 +71,41 @@ struct _snd_hdsp_config_info {
|
|||
unsigned char analog_extension_board;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_GET_CONFIG_INFO _IOR('H', 0x41, hdsp_config_info_t)
|
||||
#define SNDRV_HDSP_IOCTL_GET_CONFIG_INFO _IOR('H', 0x41, struct hdsp_config_info)
|
||||
|
||||
typedef struct _snd_hdsp_firmware hdsp_firmware_t;
|
||||
|
||||
struct _snd_hdsp_firmware {
|
||||
void *firmware_data; /* 24413 x 4 bytes */
|
||||
struct hdsp_firmware {
|
||||
void __user *firmware_data; /* 24413 x 4 bytes */
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, hdsp_firmware_t)
|
||||
#define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, struct hdsp_firmware)
|
||||
|
||||
typedef struct _snd_hdsp_version hdsp_version_t;
|
||||
|
||||
struct _snd_hdsp_version {
|
||||
HDSP_IO_Type io_type;
|
||||
struct hdsp_version {
|
||||
enum HDSP_IO_Type io_type;
|
||||
unsigned short firmware_rev;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_GET_VERSION _IOR('H', 0x43, hdsp_version_t)
|
||||
#define SNDRV_HDSP_IOCTL_GET_VERSION _IOR('H', 0x43, struct hdsp_version)
|
||||
|
||||
typedef struct _snd_hdsp_mixer hdsp_mixer_t;
|
||||
|
||||
struct _snd_hdsp_mixer {
|
||||
struct hdsp_mixer {
|
||||
unsigned short matrix[HDSP_MATRIX_MIXER_SIZE];
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_GET_MIXER _IOR('H', 0x44, hdsp_mixer_t)
|
||||
#define SNDRV_HDSP_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdsp_mixer)
|
||||
|
||||
typedef struct _snd_hdsp_9632_aeb hdsp_9632_aeb_t;
|
||||
|
||||
struct _snd_hdsp_9632_aeb {
|
||||
struct hdsp_9632_aeb {
|
||||
int aebi;
|
||||
int aebo;
|
||||
};
|
||||
|
||||
#define SNDRV_HDSP_IOCTL_GET_9632_AEB _IOR('H', 0x45, hdsp_9632_aeb_t)
|
||||
#define SNDRV_HDSP_IOCTL_GET_9632_AEB _IOR('H', 0x45, struct hdsp_9632_aeb)
|
||||
|
||||
/* typedefs for compatibility to user-space */
|
||||
typedef enum HDSP_IO_Type HDSP_IO_Type;
|
||||
typedef struct hdsp_peak_rms hdsp_peak_rms_t;
|
||||
typedef struct hdsp_config_info hdsp_config_info_t;
|
||||
typedef struct hdsp_firmware hdsp_firmware_t;
|
||||
typedef struct hdsp_version hdsp_version_t;
|
||||
typedef struct hdsp_mixer hdsp_mixer_t;
|
||||
typedef struct hdsp_9632_aeb hdsp_9632_aeb_t;
|
||||
|
||||
#endif /* __SOUND_HDSP_H */
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
#ifndef __SOUND_HDSPM_H
|
||||
#define __SOUND_HDSPM_H
|
||||
/*
|
||||
|
|
@ -20,6 +21,8 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* Maximum channels is 64 even on 56Mode you have 64playbacks to matrix */
|
||||
#define HDSPM_MAX_CHANNELS 64
|
||||
|
||||
|
|
@ -40,15 +43,15 @@ enum hdspm_speed {
|
|||
/* -------------------- IOCTL Peak/RMS Meters -------------------- */
|
||||
|
||||
struct hdspm_peak_rms {
|
||||
uint32_t input_peaks[64];
|
||||
uint32_t playback_peaks[64];
|
||||
uint32_t output_peaks[64];
|
||||
__u32 input_peaks[64];
|
||||
__u32 playback_peaks[64];
|
||||
__u32 output_peaks[64];
|
||||
|
||||
uint64_t input_rms[64];
|
||||
uint64_t playback_rms[64];
|
||||
uint64_t output_rms[64];
|
||||
__u64 input_rms[64];
|
||||
__u64 playback_rms[64];
|
||||
__u64 output_rms[64];
|
||||
|
||||
uint8_t speed; /* enum {ss, ds, qs} */
|
||||
__u8 speed; /* enum {ss, ds, qs} */
|
||||
int status2;
|
||||
};
|
||||
|
||||
|
|
@ -74,14 +77,14 @@ struct hdspm_config {
|
|||
#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,
|
||||
|
|
@ -113,11 +116,11 @@ struct hdspm_ltc {
|
|||
|
||||
#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,
|
||||
|
|
@ -149,21 +152,21 @@ enum hdspm_syncsource {
|
|||
};
|
||||
|
||||
struct hdspm_status {
|
||||
uint8_t card_type; /* enum hdspm_io_type */
|
||||
__u8 card_type; /* enum hdspm_io_type */
|
||||
enum hdspm_syncsource autosync_source;
|
||||
|
||||
uint64_t card_clock;
|
||||
uint32_t master_period;
|
||||
__u64 card_clock;
|
||||
__u32 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 */
|
||||
__u8 sync_wc; /* enum hdspm_sync */
|
||||
__u8 sync_madi; /* enum hdspm_sync */
|
||||
__u8 sync_tco; /* enum hdspm_sync */
|
||||
__u8 sync_in; /* enum hdspm_sync */
|
||||
__u8 madi_input; /* enum hdspm_madi_input */
|
||||
__u8 channel_format; /* enum hdspm_madi_channel_format */
|
||||
__u8 frame_format; /* enum hdspm_madi_frame_format */
|
||||
} madi;
|
||||
} card_specific;
|
||||
};
|
||||
|
|
@ -171,14 +174,14 @@ struct hdspm_status {
|
|||
#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 */
|
||||
__u8 card_type; /* enum hdspm_io_type */
|
||||
char cardname[20];
|
||||
unsigned int serial;
|
||||
unsigned short firmware_rev;
|
||||
|
|
@ -193,7 +196,7 @@ struct hdspm_version {
|
|||
* 32768 Bytes
|
||||
*/
|
||||
|
||||
/* organisation is 64 channelfader in a continous memory block */
|
||||
/* organisation is 64 channelfader in a continuous memory block */
|
||||
/* equivalent to hardware definition, maybe for future feature of mmap of
|
||||
* them
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
#ifndef __SOUND_SB16_CSP_H
|
||||
#define __SOUND_SB16_CSP_H
|
||||
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (c) 1999 by Uros Bizjak <uros@kss-loka.si>
|
||||
* Takashi Iwai <tiwai@suse.de>
|
||||
|
|
@ -19,9 +17,12 @@
|
|||
*
|
||||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
#ifndef _UAPI__SOUND_SB16_CSP_H
|
||||
#define _UAPI__SOUND_SB16_CSP_H
|
||||
|
||||
|
||||
/* CSP modes */
|
||||
#define SNDRV_SB_CSP_MODE_NONE 0x00
|
||||
|
|
@ -63,25 +64,25 @@
|
|||
#define SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE 0x3000
|
||||
|
||||
/* microcode header */
|
||||
typedef struct snd_sb_csp_mc_header {
|
||||
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;
|
||||
struct snd_sb_csp_microcode {
|
||||
struct snd_sb_csp_mc_header 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 {
|
||||
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 {
|
||||
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 */
|
||||
|
|
@ -93,23 +94,30 @@ typedef struct snd_sb_csp_info {
|
|||
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)
|
||||
#define SNDRV_SB_CSP_IOCTL_INFO _IOR('H', 0x10, struct snd_sb_csp_info)
|
||||
/* load microcode to CSP */
|
||||
#define SNDRV_SB_CSP_IOCTL_LOAD_CODE _IOW('H', 0x11, snd_sb_csp_microcode_t)
|
||||
/* NOTE: struct snd_sb_csp_microcode overflows the max size (13 bits)
|
||||
* defined for some architectures like MIPS, and it leads to build errors.
|
||||
* (x86 and co have 14-bit size, thus it's valid, though.)
|
||||
* As a workaround for skipping the size-limit check, here we don't use the
|
||||
* normal _IOW() macro but _IOC() with the manual argument.
|
||||
*/
|
||||
#define SNDRV_SB_CSP_IOCTL_LOAD_CODE \
|
||||
_IOC(_IOC_WRITE, 'H', 0x11, sizeof(struct snd_sb_csp_microcode))
|
||||
/* 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)
|
||||
#define SNDRV_SB_CSP_IOCTL_START _IOW('H', 0x13, struct snd_sb_csp_start)
|
||||
/* 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)
|
||||
#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 */
|
||||
#endif /* _UAPI__SOUND_SB16_CSP_H */
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* 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
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@
|
|||
#include "list.h"
|
||||
#include "topology.h"
|
||||
|
||||
#define __packed __attribute__((__packed__))
|
||||
|
||||
#include <sound/asound.h>
|
||||
#include <sound/asoc.h>
|
||||
#include <sound/tlv.h>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue