ASoC: topology: Add support for BE DAIs
cover ASoC: topology: Add support for BE DAIs
From: Mengdong Lin <[email protected]>
There is topology ABI udpate in this series. Topology core can check size of each ABI objects to detect version mismatch between user space and kernel.
This series adds support for BE (Back End) DAIs:
- Define the type and ABI struct for Backend DAIs.
- The topology core can configure an existing BE DAI or create new BE DAIs.
The user space series "topology: Add support for BE DAIs" is also submitted.
Is it possible to meet the timeline of v4.8?
There will be 2 pairs of kernel & user space series for PCM & BE links later.
Mengdong Lin (3):
ASoC: topology: ABI - Add the types for BE DAI
ASoC: topology: Add support for configuring existing BE DAIs
ASoC: topology: Able to create BE DAIs
include/sound/soc-topology.h | 1 + include/uapi/sound/asoc.h | 34 +++++++++- sound/soc/soc-core.c | 3 +- sound/soc/soc-topology.c | 156 ++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 189 insertions(+), 5 deletions(-)
Signature · 1 line
2.5.0
PATCH 1/3 ASoC: topology: ABI - Add the types for BE DAI
From: Mengdong Lin <[email protected]>
Define the type and ABI struct for Backend DAIs. Add the number of BE DAIs to manifest, and some reserved fields for future extensions.
Pump the version number to 5.
Topology core will check size of ABI objects to detect version mismatch between user space and kernel.
include/uapi/sound/asoc.h +32 -2
@@ -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.
@@ -285,6 +291,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 +458,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
Signature · 1 line
2.5.0
Mark Brown
maintainerApplied "ASoC: topology: ABI - Add the types for BE DAI" to the asoc tree
The patch
ASoC: topology: ABI - Add the types for BE DAI
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
75001c04f99b694d4f483f8028d96bf8bcd57a12Mon Sep 17 00:00:00 2001
From: Mengdong Lin <[email protected]>
Date: Tue, 26 Jul 2016 14:32:18 +0800
Subject: [PATCH] ASoC: topology: ABI - Add the types for BE DAI
Define the type and ABI struct for Backend DAIs. Add the number of BE DAIs to manifest, and some reserved fields for future extensions.
Pump the version number to 5.
Topology core will check size of ABI objects to detect version mismatch between user space and kernel.
--- include/uapi/sound/asoc.h | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-)
include/uapi/sound/asoc.h +32 -2
@@ -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.
@@ -285,6 +291,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 +458,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
Signature · 1 line
2.8.1
PATCH 2/3 ASoC: topology: Add support for configuring existing BE DAIs
In reply to [email protected]From: Mengdong Lin <[email protected]>
The platform driver may just specify the BE (Back End) DAI name and ID. And topology will find the existing BE DAI by its name and ID, and then configure its stream caps and flags.
sound/soc/soc-topology.c +111 -2
@@ -48,9 +48,10 @@#define SOC_TPLG_PASS_PCM_DAI 4#define SOC_TPLG_PASS_GRAPH 5#define SOC_TPLG_PASS_PINS 6 +#define SOC_TPLG_PASS_BE_DAI 7#define SOC_TPLG_PASS_START SOC_TPLG_PASS_MANIFEST -#define SOC_TPLG_PASS_END SOC_TPLG_PASS_PINS +#define SOC_TPLG_PASS_END SOC_TPLG_PASS_BE_DAIstruct soc_tplg {const struct firmware *fw;
@@ -1556,6 +1557,24 @@ static void set_stream_info(struct snd_soc_pcm_stream *stream, stream->formats = caps->formats; } +static void set_dai_flags (struct snd_soc_dai_driver *dai_drv, +unsigned int flag_mask,unsigned int flags) +{ +if (flag_mask &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES ) + dai_drv->symmetric_rates = + flags &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES ?1 :0 ; + +if (flag_mask &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS ) + dai_drv->symmetric_channels = + flags &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS ? +1 :0 ; + +if (flag_mask &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS ) + dai_drv->symmetric_samplebits = + flags &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS ? +1 :0 ; +} +static int soc_tplg_dai_create (struct soc_tplg *tplg,struct snd_soc_tplg_pcm *pcm) {
@@ -1690,8 +1709,96 @@ static int soc_tplg_pcm_elems_load(struct soc_tplg *tplg,return 0 ; } +/* * +* soc_tplg_be_dai_config - Find and configure an existing BE DAI. +* @tplg: topology context +* @be: topology BE DAI configs. +* +* The BE dai should already be registered by the platform driver. The +* platform driver should specify the BE DAI name and ID for matching. +*/ +static int soc_tplg_be_dai_config (struct soc_tplg *tplg, +struct snd_soc_tplg_be_dai *be) +{ +struct snd_soc_dai_link_component dai_component = {0 }; +struct snd_soc_dai *dai; +struct snd_soc_dai_driver *dai_drv; +struct snd_soc_pcm_stream *stream; +struct snd_soc_tplg_stream_caps *caps; +int ret; + + dai_component.dai_name = be->dai_name; + dai =snd_soc_find_dai (&dai_component); +if (!dai) { +dev_err (tplg->dev,"ASoC: BE DAI %s not registered\n" , + be->dai_name); +return -EINVAL ; + } + +if (be->dai_id != dai->id) { +dev_err (tplg->dev,"ASoC: BE DAI %s id mismatch\n" , + be->dai_name); +return -EINVAL ; + } + + dai_drv = dai->driver; +if (!dai_drv) +return -EINVAL ; + +if (be->playback) { + stream = &dai_drv->playback; + caps = &be->caps[SND_SOC_TPLG_STREAM_PLAYBACK ]; +set_stream_info (stream, caps); + } + +if (be->capture) { + stream = &dai_drv->capture; + caps = &be->caps[SND_SOC_TPLG_STREAM_CAPTURE ]; +set_stream_info (stream, caps); + } + +if (be->flag_mask) +set_dai_flags (dai_drv, be->flag_mask, be->flags); + +/* pass control to component driver for optional further init */ + ret =soc_tplg_dai_load (tplg, dai_drv); +if (ret <0 ) { +dev_err (tplg->comp->dev,"ASoC: DAI loading failed\n" ); +return ret; + } + +return 0 ; +} + +static int soc_tplg_be_dai_elems_load (struct soc_tplg *tplg, +struct snd_soc_tplg_hdr *hdr) +{ +struct snd_soc_tplg_be_dai *be; +int count = hdr->count; +int i; + +if (tplg->pass !=SOC_TPLG_PASS_BE_DAI ) +return 0 ; + +/* config the existing BE DAIs */ +for (i =0 ; i < count; i++) { + be = (struct snd_soc_tplg_be_dai *)tplg->pos; +if (be->size !=sizeof (*be)) { +dev_err (tplg->dev,"ASoC: invalid BE DAI size\n" ); +return -EINVAL ; + } + +soc_tplg_be_dai_config (tplg, be); + tplg->pos += (sizeof (*be) + be->priv.size); + } + +dev_dbg (tplg->dev,"ASoC: Configure %d BE DAIs\n" , count); +return 0 ; +} + +static int soc_tplg_manifest_load (struct soc_tplg *tplg, -struct snd_soc_tplg_hdr *hdr) +struct snd_soc_tplg_hdr *hdr) {struct snd_soc_tplg_manifest *manifest;
@@ -1793,6 +1900,8 @@ static int soc_tplg_load_header(struct soc_tplg *tplg,return soc_tplg_dapm_widget_elems_load (tplg, hdr);case SND_SOC_TPLG_TYPE_PCM :return soc_tplg_pcm_elems_load (tplg, hdr); +case SND_SOC_TPLG_TYPE_BE_DAI : +return soc_tplg_be_dai_elems_load (tplg, hdr);case SND_SOC_TPLG_TYPE_MANIFEST :return soc_tplg_manifest_load (tplg, hdr);default :
Signature · 1 line
2.5.0
Mark Brown
maintainerApplied "ASoC: topology: Add support for configuring existing BE DAIs" to the asoc tree
The patch
ASoC: topology: Add support for configuring existing BE DAIs
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
caa80ebdc00b0580174f804c96a1268c7f5eac1bMon Sep 17 00:00:00 2001
From: Mengdong Lin <[email protected]>
Date: Tue, 26 Jul 2016 14:32:37 +0800
Subject: [PATCH] ASoC: topology: Add support for configuring existing BE DAIs
The platform driver may just specify the BE (Back End) DAI name and ID. And topology will find the existing BE DAI by its name and ID, and then configure its stream caps and flags.
--- sound/soc/soc-topology.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 2 deletions(-)
sound/soc/soc-topology.c +111 -2
@@ -48,9 +48,10 @@#define SOC_TPLG_PASS_PCM_DAI 4#define SOC_TPLG_PASS_GRAPH 5#define SOC_TPLG_PASS_PINS 6 +#define SOC_TPLG_PASS_BE_DAI 7#define SOC_TPLG_PASS_START SOC_TPLG_PASS_MANIFEST -#define SOC_TPLG_PASS_END SOC_TPLG_PASS_PINS +#define SOC_TPLG_PASS_END SOC_TPLG_PASS_BE_DAIstruct soc_tplg {const struct firmware *fw;
@@ -1556,6 +1557,24 @@ static void set_stream_info(struct snd_soc_pcm_stream *stream, stream->formats = caps->formats; } +static void set_dai_flags (struct snd_soc_dai_driver *dai_drv, +unsigned int flag_mask,unsigned int flags) +{ +if (flag_mask &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES ) + dai_drv->symmetric_rates = + flags &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES ?1 :0 ; + +if (flag_mask &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS ) + dai_drv->symmetric_channels = + flags &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS ? +1 :0 ; + +if (flag_mask &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS ) + dai_drv->symmetric_samplebits = + flags &SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS ? +1 :0 ; +} +static int soc_tplg_dai_create (struct soc_tplg *tplg,struct snd_soc_tplg_pcm *pcm) {
@@ -1690,8 +1709,96 @@ static int soc_tplg_pcm_elems_load(struct soc_tplg *tplg,return 0 ; } +/* * +* soc_tplg_be_dai_config - Find and configure an existing BE DAI. +* @tplg: topology context +* @be: topology BE DAI configs. +* +* The BE dai should already be registered by the platform driver. The +* platform driver should specify the BE DAI name and ID for matching. +*/ +static int soc_tplg_be_dai_config (struct soc_tplg *tplg, +struct snd_soc_tplg_be_dai *be) +{ +struct snd_soc_dai_link_component dai_component = {0 }; +struct snd_soc_dai *dai; +struct snd_soc_dai_driver *dai_drv; +struct snd_soc_pcm_stream *stream; +struct snd_soc_tplg_stream_caps *caps; +int ret; + + dai_component.dai_name = be->dai_name; + dai =snd_soc_find_dai (&dai_component); +if (!dai) { +dev_err (tplg->dev,"ASoC: BE DAI %s not registered\n" , + be->dai_name); +return -EINVAL ; + } + +if (be->dai_id != dai->id) { +dev_err (tplg->dev,"ASoC: BE DAI %s id mismatch\n" , + be->dai_name); +return -EINVAL ; + } + + dai_drv = dai->driver; +if (!dai_drv) +return -EINVAL ; + +if (be->playback) { + stream = &dai_drv->playback; + caps = &be->caps[SND_SOC_TPLG_STREAM_PLAYBACK ]; +set_stream_info (stream, caps); + } + +if (be->capture) { + stream = &dai_drv->capture; + caps = &be->caps[SND_SOC_TPLG_STREAM_CAPTURE ]; +set_stream_info (stream, caps); + } + +if (be->flag_mask) +set_dai_flags (dai_drv, be->flag_mask, be->flags); + +/* pass control to component driver for optional further init */ + ret =soc_tplg_dai_load (tplg, dai_drv); +if (ret <0 ) { +dev_err (tplg->comp->dev,"ASoC: DAI loading failed\n" ); +return ret; + } + +return 0 ; +} + +static int soc_tplg_be_dai_elems_load (struct soc_tplg *tplg, +struct snd_soc_tplg_hdr *hdr) +{ +struct snd_soc_tplg_be_dai *be; +int count = hdr->count; +int i; + +if (tplg->pass !=SOC_TPLG_PASS_BE_DAI ) +return 0 ; + +/* config the existing BE DAIs */ +for (i =0 ; i < count; i++) { + be = (struct snd_soc_tplg_be_dai *)tplg->pos; +if (be->size !=sizeof (*be)) { +dev_err (tplg->dev,"ASoC: invalid BE DAI size\n" ); +return -EINVAL ; + } + +soc_tplg_be_dai_config (tplg, be); + tplg->pos += (sizeof (*be) + be->priv.size); + } + +dev_dbg (tplg->dev,"ASoC: Configure %d BE DAIs\n" , count); +return 0 ; +} + +static int soc_tplg_manifest_load (struct soc_tplg *tplg, -struct snd_soc_tplg_hdr *hdr) +struct snd_soc_tplg_hdr *hdr) {struct snd_soc_tplg_manifest *manifest;
@@ -1793,6 +1900,8 @@ static int soc_tplg_load_header(struct soc_tplg *tplg,return soc_tplg_dapm_widget_elems_load (tplg, hdr);case SND_SOC_TPLG_TYPE_PCM :return soc_tplg_pcm_elems_load (tplg, hdr); +case SND_SOC_TPLG_TYPE_BE_DAI : +return soc_tplg_be_dai_elems_load (tplg, hdr);case SND_SOC_TPLG_TYPE_MANIFEST :return soc_tplg_manifest_load (tplg, hdr);default :
Signature · 1 line
2.8.1
PATCH 3/3 ASoC: topology: Able to create BE DAIs
In reply to [email protected]From: Mengdong Lin <[email protected]>
Topology will check with ASoC if a BE DAI already exists by checking its name. If the BE DAI doesn't exist, topology will create a new one and the dai_load ops will be called for device specific init.
include/sound/soc-topology.h +1 -0
@@ -39,6 +39,7 @@ enum snd_soc_dobj_type {SND_SOC_DOBJ_ENUM ,SND_SOC_DOBJ_BYTES ,SND_SOC_DOBJ_PCM , +SND_SOC_DOBJ_BE_DAI ,SND_SOC_DOBJ_DAI_LINK ,SND_SOC_DOBJ_CODEC_LINK , SND_SOC_DOBJ_WIDGET,
sound/soc/soc-core.c +2 -1
@@ -2872,7 +2872,8 @@ int snd_soc_register_dai(struct snd_soc_component *component,struct snd_soc_dai *dai;int ret; -if (dai_drv->dobj.type !=SND_SOC_DOBJ_PCM ) { +if (!(dai_drv->dobj.type ==SND_SOC_DOBJ_PCM || + dai_drv->dobj.type ==SND_SOC_DOBJ_BE_DAI )) {dev_err (component->dev,"Invalid dai type %d\n" , dai_drv->dobj.type);return -EINVAL ;
sound/soc/soc-topology.c +73 -30
127 lines not on this page · raw message
Signature · 1 line
2.5.0
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [PATCH 3/3] ASoC: topology: Able to create BE DAIs
Sorry for the mistake. I'll fix this warning.
Thanks
Mengdong
Quoted 83 lines
-----Original Message-----
From: Wu, Fengguang
Sent: Friday, July 22, 2016 8:48 PM
To: [email protected]
Cc: [email protected]; [email protected]; [email protected]; Mengdong Lin; [email protected]; Shah, Hardik T; Singh, Guneshwor O; [email protected]; Lin, Mengdong
Subject: Re: [PATCH 3/3] ASoC: topology: Able to create BE DAIsHi Mengdong,
[auto build test WARNING on asoc/for-next] [also build test WARNING on v4.7-rc7]
url:
https://github.com/0day-ci/linux/commits/mengdong-lin-linux-intel-com/AS
oC-topology-Add-support-for-BE-DAIs/20160722-160125
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
for-next
config: x86_64-randconfig-s0-07221711 (attached as .config)
compiler: gcc-4.4 (Debian 4.4.7-8) 4.4.7 reproduce:# save the attached .config to linux build tree make ARCH=x86_64All warnings (new ones prefixed by >>):
sound/soc/soc-topology.c: In function 'soc_tplg_be_dai_config':Quoted 1 line
Quoted 1 line
sound/soc/soc-topology.c:1790: warning: too many arguments forformat
At top level:
cc1: warning: unrecognized command line option
"-Wno-maybe-uninitialized"git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout
234d57f817caf65062dd97dcd7e44be8f5e721e3
vim +1790sound/soc/soc-topology.c
234d57f8Mengdong Lin 2016-07-22 1774 *soc_tplg_be_dai_config-
Create a new BE DAI or configure an existing one.234d57f8 Mengdong Lin 2016-07-22 1775 * @tplg: topology context 234d57f8 Mengdong Lin 2016-07-22 1776 * @be: topology BE DAI configs. 234d57f8 Mengdong Lin 2016-07-22 1777 * 234d57f8 Mengdong Lin 2016-07-22 1778 * The BE dai should alreadybe registered by the platform driver. The
234d57f8Mengdong Lin 2016-07-22 1779 * platform driver should
specify the BE DAI name and ID for matching.234d57f8Mengdong Lin 2016-07-22 1780 */234d57f8Mengdong Lin 2016-07-22 1781 static int soc_tplg_be_dai_config(structsoc_tplg*tplg,234d57f8Mengdong Lin 2016-07-22 1782 structsnd_soc_tplg_be_dai*be)234d57f8 Mengdong Lin 2016-07-22 1783 { 234d57f8 Mengdong Lin 2016-07-22 1784 struct snd_soc_dai_link_component dai_component = {0}; 234d57f8 Mengdong Lin 2016-07-22 1785 struct snd_soc_dai *dai; 234d57f8 Mengdong Lin 2016-07-22 1786 struct snd_soc_dai_driver *dai_drv; 234d57f8 Mengdong Lin 2016-07-22 1787 234d57f8 Mengdong Lin 2016-07-22 1788 if (!strlen(be->dai_name)) { 234d57f8 Mengdong Lin 2016-07-22 1789 dev_err(tplg->dev, "ASoC: Invalid BE DAI name\n", 234d57f8 Mengdong Lin 2016-07-22 @1790 be->dai_name); 234d57f8 Mengdong Lin 2016-07-22 1791 return -EINVAL; 234d57f8 Mengdong Lin 2016-07-22 1792 }
234d57f8Mengdong Lin 2016-07-22 1793234d57f8Mengdong Lin 2016-07-22 1794 dai_component.dai_name =be->dai_name;234d57f8Mengdong Lin 2016-07-22 1795 dai =snd_soc_find_dai(&dai_component);234d57f8Mengdong Lin 2016-07-22 1796 if (!dai) /* BE DAI doesn't
exist, create it */234d57f8Mengdong Lin 2016-07-22 1797 returnsoc_tplg_be_dai_create(tplg, be);234d57f8Mengdong Lin 2016-07-22 1798---
0-DAY kernel test infrastructure Open Source Technology
Center
https://lists.01.org/pipermail/kbuild-all Intel
Corporation