Merge tag 'asoc-v4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next
ASoC: Updates for v4.9 Apart from the cleanups done by Morimoto-san this has very much been a driver focused release with very little generic change: - A big factoring out of the simple-card code to allow it to be shared more with the rcar generic card from Kuninori Morimoto. - Removal of some operations duplicated on the CODEC level, again by Kuninori Morimoto. - Lots more machine support for x86 systems. - New drivers for Nuvoton NAU88C10, Realtek RT5660 and RT5663.
This commit is contained in:
@@ -13,3 +13,4 @@ header-y += sb16_csp.h
|
||||
header-y += sfnt_info.h
|
||||
header-y += tlv.h
|
||||
header-y += usb_stream.h
|
||||
header-y += snd_sst_tokens.h
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
#define SND_SOC_TPLG_NUM_TEXTS 16
|
||||
|
||||
/* ABI version */
|
||||
#define SND_SOC_TPLG_ABI_VERSION 0x4
|
||||
#define SND_SOC_TPLG_ABI_VERSION 0x5
|
||||
|
||||
/* Max size of TLV data */
|
||||
#define SND_SOC_TPLG_TLV_SIZE 32
|
||||
@@ -105,7 +105,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_MAX SND_SOC_TPLG_TYPE_PDATA
|
||||
#define SND_SOC_TPLG_TYPE_BE_DAI 12
|
||||
#define SND_SOC_TPLG_TYPE_MAX SND_SOC_TPLG_TYPE_BE_DAI
|
||||
|
||||
/* vendor block IDs - please add new vendor types to end */
|
||||
#define SND_SOC_TPLG_TYPE_VENDOR_FW 1000
|
||||
@@ -124,6 +125,11 @@
|
||||
#define SND_SOC_TPLG_TUPLE_TYPE_WORD 4
|
||||
#define SND_SOC_TPLG_TUPLE_TYPE_SHORT 5
|
||||
|
||||
/* BE 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)
|
||||
|
||||
/*
|
||||
* Block Header.
|
||||
* This header precedes all object and object arrays below.
|
||||
@@ -251,6 +257,7 @@ struct snd_soc_tplg_stream_caps {
|
||||
__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));
|
||||
|
||||
/*
|
||||
@@ -285,6 +292,8 @@ struct snd_soc_tplg_manifest {
|
||||
__le32 graph_elems; /* number of graph elements */
|
||||
__le32 pcm_elems; /* number of PCM elements */
|
||||
__le32 dai_link_elems; /* number of DAI link elements */
|
||||
__le32 be_dai_elems; /* number of BE DAI elements */
|
||||
__le32 reserved[20]; /* reserved for new ABI element types */
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
|
||||
@@ -450,4 +459,26 @@ struct snd_soc_tplg_link_config {
|
||||
struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* supported configs playback and captrure */
|
||||
__le32 num_streams; /* number of streams */
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Describes SW/FW specific features of BE DAI.
|
||||
*
|
||||
* File block representation for BE DAI :-
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_be_dai | N |
|
||||
* +-----------------------------------+-----+
|
||||
*/
|
||||
struct snd_soc_tplg_be_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
|
||||
|
||||
214
include/uapi/sound/snd_sst_tokens.h
Normal file
214
include/uapi/sound/snd_sst_tokens.h
Normal file
@@ -0,0 +1,214 @@
|
||||
/*
|
||||
* snd_sst_tokens.h - Intel SST tokens definition
|
||||
*
|
||||
* Copyright (C) 2016 Intel Corp
|
||||
* Author: Shreyas NC <shreyas.nc@intel.com>
|
||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as version 2, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* 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 __SND_SST_TOKENS_H__
|
||||
#define __SND_SST_TOKENS_H__
|
||||
|
||||
/**
|
||||
* %SKL_TKN_UUID: Module UUID
|
||||
*
|
||||
* %SKL_TKN_U8_BLOCK_TYPE: Type of the private data block.Can be:
|
||||
* tuples, bytes, short and words
|
||||
*
|
||||
* %SKL_TKN_U8_IN_PIN_TYPE: Input pin type,
|
||||
* homogenous=0, heterogenous=1
|
||||
*
|
||||
* %SKL_TKN_U8_OUT_PIN_TYPE: Output pin type,
|
||||
* homogenous=0, heterogenous=1
|
||||
* %SKL_TKN_U8_DYN_IN_PIN: Configure Input pin dynamically
|
||||
* if true
|
||||
*
|
||||
* %SKL_TKN_U8_DYN_OUT_PIN: Configure Output pin dynamically
|
||||
* if true
|
||||
*
|
||||
* %SKL_TKN_U8_IN_QUEUE_COUNT: Store the number of Input pins
|
||||
*
|
||||
* %SKL_TKN_U8_OUT_QUEUE_COUNT: Store the number of Output pins
|
||||
*
|
||||
* %SKL_TKN_U8_TIME_SLOT: TDM slot number
|
||||
*
|
||||
* %SKL_TKN_U8_CORE_ID: Stores module affinity value.Can take
|
||||
* the values:
|
||||
* SKL_AFFINITY_CORE_0 = 0,
|
||||
* SKL_AFFINITY_CORE_1,
|
||||
* SKL_AFFINITY_CORE_MAX
|
||||
*
|
||||
* %SKL_TKN_U8_MOD_TYPE: Module type value.
|
||||
*
|
||||
* %SKL_TKN_U8_CONN_TYPE: Module connection type can be a FE,
|
||||
* BE or NONE as defined :
|
||||
* SKL_PIPE_CONN_TYPE_NONE = 0,
|
||||
* SKL_PIPE_CONN_TYPE_FE = 1 (HOST_DMA)
|
||||
* SKL_PIPE_CONN_TYPE_BE = 2 (LINK_DMA)
|
||||
*
|
||||
* %SKL_TKN_U8_DEV_TYPE: Type of device to which the module is
|
||||
* connected
|
||||
* Can take the values:
|
||||
* SKL_DEVICE_BT = 0x0,
|
||||
* SKL_DEVICE_DMIC = 0x1,
|
||||
* SKL_DEVICE_I2S = 0x2,
|
||||
* SKL_DEVICE_SLIMBUS = 0x3,
|
||||
* SKL_DEVICE_HDALINK = 0x4,
|
||||
* SKL_DEVICE_HDAHOST = 0x5,
|
||||
* SKL_DEVICE_NONE
|
||||
*
|
||||
* %SKL_TKN_U8_HW_CONN_TYPE: Connection type of the HW to which the
|
||||
* module is connected
|
||||
* SKL_CONN_NONE = 0,
|
||||
* SKL_CONN_SOURCE = 1,
|
||||
* SKL_CONN_SINK = 2
|
||||
*
|
||||
* %SKL_TKN_U16_PIN_INST_ID: Stores the pin instance id
|
||||
*
|
||||
* %SKL_TKN_U16_MOD_INST_ID: Stores the mdule instance id
|
||||
*
|
||||
* %SKL_TKN_U32_MAX_MCPS: Module max mcps value
|
||||
*
|
||||
* %SKL_TKN_U32_MEM_PAGES: Module resource pages
|
||||
*
|
||||
* %SKL_TKN_U32_OBS: Stores Output Buffer size
|
||||
*
|
||||
* %SKL_TKN_U32_IBS: Stores input buffer size
|
||||
*
|
||||
* %SKL_TKN_U32_VBUS_ID: Module VBUS_ID. PDM=0, SSP0=0,
|
||||
* SSP1=1,SSP2=2,
|
||||
* SSP3=3, SSP4=4,
|
||||
* SSP5=5, SSP6=6,INVALID
|
||||
*
|
||||
* %SKL_TKN_U32_PARAMS_FIXUP: Module Params fixup mask
|
||||
* %SKL_TKN_U32_CONVERTER: Module params converter mask
|
||||
* %SKL_TKN_U32_PIPE_ID: Stores the pipe id
|
||||
*
|
||||
* %SKL_TKN_U32_PIPE_CONN_TYPE: Type of the token to which the pipe is
|
||||
* connected to. It can be
|
||||
* SKL_PIPE_CONN_TYPE_NONE = 0,
|
||||
* SKL_PIPE_CONN_TYPE_FE = 1 (HOST_DMA),
|
||||
* SKL_PIPE_CONN_TYPE_BE = 2 (LINK_DMA),
|
||||
*
|
||||
* %SKL_TKN_U32_PIPE_PRIORITY: Pipe priority value
|
||||
* %SKL_TKN_U32_PIPE_MEM_PGS: Pipe resource pages
|
||||
*
|
||||
* %SKL_TKN_U32_DIR_PIN_COUNT: Value for the direction to set input/output
|
||||
* formats and the pin count.
|
||||
* The first 4 bits have the direction
|
||||
* value and the next 4 have
|
||||
* the pin count value.
|
||||
* SKL_DIR_IN = 0, SKL_DIR_OUT = 1.
|
||||
* The input and output formats
|
||||
* share the same set of tokens
|
||||
* with the distinction between input
|
||||
* and output made by reading direction
|
||||
* token.
|
||||
*
|
||||
* %SKL_TKN_U32_FMT_CH: Supported channel count
|
||||
*
|
||||
* %SKL_TKN_U32_FMT_FREQ: Supported frequency/sample rate
|
||||
*
|
||||
* %SKL_TKN_U32_FMT_BIT_DEPTH: Supported container size
|
||||
*
|
||||
* %SKL_TKN_U32_FMT_SAMPLE_SIZE:Number of samples in the container
|
||||
*
|
||||
* %SKL_TKN_U32_FMT_CH_CONFIG: Supported channel configurations for the
|
||||
* input/output.
|
||||
*
|
||||
* %SKL_TKN_U32_FMT_INTERLEAVE: Interleaving style which can be per
|
||||
* channel or per sample. The values can be :
|
||||
* SKL_INTERLEAVING_PER_CHANNEL = 0,
|
||||
* SKL_INTERLEAVING_PER_SAMPLE = 1,
|
||||
*
|
||||
* %SKL_TKN_U32_FMT_SAMPLE_TYPE:
|
||||
* Specifies the sample type. Can take the
|
||||
* values: SKL_SAMPLE_TYPE_INT_MSB = 0,
|
||||
* SKL_SAMPLE_TYPE_INT_LSB = 1,
|
||||
* SKL_SAMPLE_TYPE_INT_SIGNED = 2,
|
||||
* SKL_SAMPLE_TYPE_INT_UNSIGNED = 3,
|
||||
* SKL_SAMPLE_TYPE_FLOAT = 4
|
||||
*
|
||||
* %SKL_TKN_U32_CH_MAP: Channel map values
|
||||
* %SKL_TKN_U32_MOD_SET_PARAMS: It can take these values:
|
||||
* SKL_PARAM_DEFAULT, SKL_PARAM_INIT,
|
||||
* SKL_PARAM_SET, SKL_PARAM_BIND
|
||||
*
|
||||
* %SKL_TKN_U32_MOD_PARAM_ID: ID of the module params
|
||||
*
|
||||
* %SKL_TKN_U32_CAPS_SET_PARAMS:
|
||||
* Set params value
|
||||
*
|
||||
* %SKL_TKN_U32_CAPS_PARAMS_ID: Params ID
|
||||
*
|
||||
* %SKL_TKN_U32_CAPS_SIZE: Caps size
|
||||
*
|
||||
* %SKL_TKN_U32_PROC_DOMAIN: Specify processing domain
|
||||
*
|
||||
* %SKL_TKN_U32_LIB_COUNT: Specifies the number of libraries
|
||||
*
|
||||
* %SKL_TKN_STR_LIB_NAME: Specifies the library name
|
||||
*
|
||||
* module_id and loadable flags dont have tokens as these values will be
|
||||
* read from the DSP FW manifest
|
||||
*/
|
||||
enum SKL_TKNS {
|
||||
SKL_TKN_UUID = 1,
|
||||
SKL_TKN_U8_NUM_BLOCKS,
|
||||
SKL_TKN_U8_BLOCK_TYPE,
|
||||
SKL_TKN_U8_IN_PIN_TYPE,
|
||||
SKL_TKN_U8_OUT_PIN_TYPE,
|
||||
SKL_TKN_U8_DYN_IN_PIN,
|
||||
SKL_TKN_U8_DYN_OUT_PIN,
|
||||
SKL_TKN_U8_IN_QUEUE_COUNT,
|
||||
SKL_TKN_U8_OUT_QUEUE_COUNT,
|
||||
SKL_TKN_U8_TIME_SLOT,
|
||||
SKL_TKN_U8_CORE_ID,
|
||||
SKL_TKN_U8_MOD_TYPE,
|
||||
SKL_TKN_U8_CONN_TYPE,
|
||||
SKL_TKN_U8_DEV_TYPE,
|
||||
SKL_TKN_U8_HW_CONN_TYPE,
|
||||
SKL_TKN_U16_MOD_INST_ID,
|
||||
SKL_TKN_U16_BLOCK_SIZE,
|
||||
SKL_TKN_U32_MAX_MCPS,
|
||||
SKL_TKN_U32_MEM_PAGES,
|
||||
SKL_TKN_U32_OBS,
|
||||
SKL_TKN_U32_IBS,
|
||||
SKL_TKN_U32_VBUS_ID,
|
||||
SKL_TKN_U32_PARAMS_FIXUP,
|
||||
SKL_TKN_U32_CONVERTER,
|
||||
SKL_TKN_U32_PIPE_ID,
|
||||
SKL_TKN_U32_PIPE_CONN_TYPE,
|
||||
SKL_TKN_U32_PIPE_PRIORITY,
|
||||
SKL_TKN_U32_PIPE_MEM_PGS,
|
||||
SKL_TKN_U32_DIR_PIN_COUNT,
|
||||
SKL_TKN_U32_FMT_CH,
|
||||
SKL_TKN_U32_FMT_FREQ,
|
||||
SKL_TKN_U32_FMT_BIT_DEPTH,
|
||||
SKL_TKN_U32_FMT_SAMPLE_SIZE,
|
||||
SKL_TKN_U32_FMT_CH_CONFIG,
|
||||
SKL_TKN_U32_FMT_INTERLEAVE,
|
||||
SKL_TKN_U32_FMT_SAMPLE_TYPE,
|
||||
SKL_TKN_U32_FMT_CH_MAP,
|
||||
SKL_TKN_U32_PIN_MOD_ID,
|
||||
SKL_TKN_U32_PIN_INST_ID,
|
||||
SKL_TKN_U32_MOD_SET_PARAMS,
|
||||
SKL_TKN_U32_MOD_PARAM_ID,
|
||||
SKL_TKN_U32_CAPS_SET_PARAMS,
|
||||
SKL_TKN_U32_CAPS_PARAMS_ID,
|
||||
SKL_TKN_U32_CAPS_SIZE,
|
||||
SKL_TKN_U32_PROC_DOMAIN,
|
||||
SKL_TKN_U32_LIB_COUNT,
|
||||
SKL_TKN_STR_LIB_NAME,
|
||||
SKL_TKN_MAX = SKL_TKN_STR_LIB_NAME,
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user