tegra-alt: adsp: increase space for widget name

Memory for widget names is allocated statically by default widget
name "PLUGINx". If a plugin has longer widget name, then it will
corrupt the widget name memory and tegra210_adsp_routes. This
creates issue in DAPM and playback fails.

Use long name as default plugin name: PLUGINx-PLACE-HOLDER to have
bigger memory. Also add a length check on plugin's widget name.

Bug 200207626

Change-Id: I2442b07492a795ed120766eaee3a0083f80f6cf3
Signed-off-by: Viraj Karandikar <vkarandikar@nvidia.com>
Reviewed-on: http://git-master/r/1164763
GVS: Gerrit_Virtual_Submit
Reviewed-by: Ravindra Lokhande <rlokhande@nvidia.com>
This commit is contained in:
Viraj Karandikar
2016-06-15 12:30:30 +05:30
committed by Sameer Pujar
parent c279bec375
commit fcd36dccf3

View File

@@ -2381,16 +2381,16 @@ static const char * const tegra210_adsp_mux_texts[] = {
"ADMA8",
"ADMA9",
"ADMA10",
"PLUGIN1",
"PLUGIN2",
"PLUGIN3",
"PLUGIN4",
"PLUGIN5",
"PLUGIN6",
"PLUGIN7",
"PLUGIN8",
"PLUGIN9",
"PLUGIN10",
"PLUGIN1-PLACE-HOLDER",
"PLUGIN2-PLACE-HOLDER",
"PLUGIN3-PLACE-HOLDER",
"PLUGIN4-PLACE-HOLDER",
"PLUGIN5-PLACE-HOLDER",
"PLUGIN6-PLACE-HOLDER",
"PLUGIN7-PLACE-HOLDER",
"PLUGIN8-PLACE-HOLDER",
"PLUGIN9-PLACE-HOLDER",
"PLUGIN10-PLACE-HOLDER",
};
#define ADSP_MUX_ENUM_CTRL_DECL(ename, reg) \
@@ -2528,16 +2528,16 @@ static const struct snd_soc_dapm_widget tegra210_adsp_widgets[] = {
ADSP_WIDGETS("ADMA8", adma8, TEGRA210_ADSP_PLUGIN_ADMA8),
ADSP_WIDGETS("ADMA9", adma9, TEGRA210_ADSP_PLUGIN_ADMA9),
ADSP_WIDGETS("ADMA10", adma10, TEGRA210_ADSP_PLUGIN_ADMA10),
ADSP_WIDGETS("PLUGIN1", plugin1, TEGRA210_ADSP_PLUGIN1),
ADSP_WIDGETS("PLUGIN2", plugin2, TEGRA210_ADSP_PLUGIN2),
ADSP_WIDGETS("PLUGIN3", plugin3, TEGRA210_ADSP_PLUGIN3),
ADSP_WIDGETS("PLUGIN4", plugin4, TEGRA210_ADSP_PLUGIN4),
ADSP_WIDGETS("PLUGIN5", plugin5, TEGRA210_ADSP_PLUGIN5),
ADSP_WIDGETS("PLUGIN6", plugin6, TEGRA210_ADSP_PLUGIN6),
ADSP_WIDGETS("PLUGIN7", plugin7, TEGRA210_ADSP_PLUGIN7),
ADSP_WIDGETS("PLUGIN8", plugin8, TEGRA210_ADSP_PLUGIN8),
ADSP_WIDGETS("PLUGIN9", plugin9, TEGRA210_ADSP_PLUGIN9),
ADSP_WIDGETS("PLUGIN10", plugin10, TEGRA210_ADSP_PLUGIN10),
ADSP_WIDGETS("PLUGIN1-PLACE-HOLDER", plugin1, TEGRA210_ADSP_PLUGIN1),
ADSP_WIDGETS("PLUGIN2-PLACE-HOLDER", plugin2, TEGRA210_ADSP_PLUGIN2),
ADSP_WIDGETS("PLUGIN3-PLACE-HOLDER", plugin3, TEGRA210_ADSP_PLUGIN3),
ADSP_WIDGETS("PLUGIN4-PLACE-HOLDER", plugin4, TEGRA210_ADSP_PLUGIN4),
ADSP_WIDGETS("PLUGIN5-PLACE-HOLDER", plugin5, TEGRA210_ADSP_PLUGIN5),
ADSP_WIDGETS("PLUGIN6-PLACE-HOLDER", plugin6, TEGRA210_ADSP_PLUGIN6),
ADSP_WIDGETS("PLUGIN7-PLACE-HOLDER", plugin7, TEGRA210_ADSP_PLUGIN7),
ADSP_WIDGETS("PLUGIN8-PLACE-HOLDER", plugin8, TEGRA210_ADSP_PLUGIN8),
ADSP_WIDGETS("PLUGIN9-PLACE-HOLDER", plugin9, TEGRA210_ADSP_PLUGIN9),
ADSP_WIDGETS("PLUGIN10-PLACE-HOLDER", plugin10, TEGRA210_ADSP_PLUGIN10),
};
#define ADSP_EP_ROUTES(name) \
@@ -2601,16 +2601,16 @@ static const struct snd_soc_dapm_widget tegra210_adsp_widgets[] = {
{ name " MUX", "ADMA10", "ADMA10 TX"}
#define ADSP_PLUGIN_ROUTES(name) \
{ name " MUX", "PLUGIN1", "PLUGIN1 TX"}, \
{ name " MUX", "PLUGIN2", "PLUGIN2 TX"}, \
{ name " MUX", "PLUGIN3", "PLUGIN3 TX"}, \
{ name " MUX", "PLUGIN4", "PLUGIN4 TX"}, \
{ name " MUX", "PLUGIN5", "PLUGIN5 TX"}, \
{ name " MUX", "PLUGIN6", "PLUGIN6 TX"}, \
{ name " MUX", "PLUGIN7", "PLUGIN7 TX"}, \
{ name " MUX", "PLUGIN8", "PLUGIN8 TX"}, \
{ name " MUX", "PLUGIN9", "PLUGIN9 TX"}, \
{ name " MUX", "PLUGIN10", "PLUGIN10 TX"}
{ name " MUX", "PLUGIN1-PLACE-HOLDER", "PLUGIN1-PLACE-HOLDER TX"}, \
{ name " MUX", "PLUGIN2-PLACE-HOLDER", "PLUGIN2-PLACE-HOLDER TX"}, \
{ name " MUX", "PLUGIN3-PLACE-HOLDER", "PLUGIN3-PLACE-HOLDER TX"}, \
{ name " MUX", "PLUGIN4-PLACE-HOLDER", "PLUGIN4-PLACE-HOLDER TX"}, \
{ name " MUX", "PLUGIN5-PLACE-HOLDER", "PLUGIN5-PLACE-HOLDER TX"}, \
{ name " MUX", "PLUGIN6-PLACE-HOLDER", "PLUGIN6-PLACE-HOLDER TX"}, \
{ name " MUX", "PLUGIN7-PLACE-HOLDER", "PLUGIN7-PLACE-HOLDER TX"}, \
{ name " MUX", "PLUGIN8-PLACE-HOLDER", "PLUGIN8-PLACE-HOLDER TX"}, \
{ name " MUX", "PLUGIN9-PLACE-HOLDER", "PLUGIN9-PLACE-HOLDER TX"}, \
{ name " MUX", "PLUGIN10-PLACE-HOLDER", "PLUGIN10-PLACE-HOLDER TX"}
#define ADSP_EP_MUX_ROUTES(name) \
{ name " RX", NULL, name " Receive"}, \
@@ -2697,16 +2697,16 @@ static const struct snd_soc_dapm_route tegra210_adsp_routes[] = {
ADSP_ADMA_MUX_ROUTES("ADMA9"),
ADSP_ADMA_MUX_ROUTES("ADMA10"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN1"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN2"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN3"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN4"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN5"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN6"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN7"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN8"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN9"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN10"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN1-PLACE-HOLDER"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN2-PLACE-HOLDER"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN3-PLACE-HOLDER"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN4-PLACE-HOLDER"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN5-PLACE-HOLDER"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN6-PLACE-HOLDER"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN7-PLACE-HOLDER"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN8-PLACE-HOLDER"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN9-PLACE-HOLDER"),
ADSP_PLUGIN_MUX_ROUTES("PLUGIN10-PLACE-HOLDER"),
};
static void tegra210_adsp_wt_replace(char *dest, const char *src)
@@ -3110,25 +3110,25 @@ static int tegra210_adsp_apm_put(struct snd_kcontrol *kcontrol,
static const struct snd_kcontrol_new tegra210_adsp_controls[] = {
SOC_SINGLE_BOOL_EXT("ADSP init", 0,
tegra210_adsp_init_get, tegra210_adsp_init_put),
SND_SOC_PARAM_EXT("PLUGIN1 set params",
SND_SOC_PARAM_EXT("PLUGIN1-PLACE-HOLDER set params",
TEGRA210_ADSP_PLUGIN1),
SND_SOC_PARAM_EXT("PLUGIN2 set params",
SND_SOC_PARAM_EXT("PLUGIN2-PLACE-HOLDER set params",
TEGRA210_ADSP_PLUGIN2),
SND_SOC_PARAM_EXT("PLUGIN3 set params",
SND_SOC_PARAM_EXT("PLUGIN3-PLACE-HOLDER set params",
TEGRA210_ADSP_PLUGIN3),
SND_SOC_PARAM_EXT("PLUGIN4 set params",
SND_SOC_PARAM_EXT("PLUGIN4-PLACE-HOLDER set params",
TEGRA210_ADSP_PLUGIN4),
SND_SOC_PARAM_EXT("PLUGIN5 set params",
SND_SOC_PARAM_EXT("PLUGIN5-PLACE-HOLDER set params",
TEGRA210_ADSP_PLUGIN5),
SND_SOC_PARAM_EXT("PLUGIN6 set params",
SND_SOC_PARAM_EXT("PLUGIN6-PLACE-HOLDER set params",
TEGRA210_ADSP_PLUGIN6),
SND_SOC_PARAM_EXT("PLUGIN7 set params",
SND_SOC_PARAM_EXT("PLUGIN7-PLACE-HOLDER set params",
TEGRA210_ADSP_PLUGIN7),
SND_SOC_PARAM_EXT("PLUGIN8 set params",
SND_SOC_PARAM_EXT("PLUGIN8-PLACE-HOLDER set params",
TEGRA210_ADSP_PLUGIN8),
SND_SOC_PARAM_EXT("PLUGIN9 set params",
SND_SOC_PARAM_EXT("PLUGIN9-PLACE-HOLDER set params",
TEGRA210_ADSP_PLUGIN9),
SND_SOC_PARAM_EXT("PLUGIN10 set params",
SND_SOC_PARAM_EXT("PLUGIN10-PLACE-HOLDER set params",
TEGRA210_ADSP_PLUGIN10),
SND_SOC_PARAM_EXT("ADMA1 set params",
TEGRA210_ADSP_PLUGIN_ADMA1),
@@ -3150,25 +3150,25 @@ static const struct snd_kcontrol_new tegra210_adsp_controls[] = {
TEGRA210_ADSP_PLUGIN_ADMA9),
SND_SOC_PARAM_EXT("ADMA10 set params",
TEGRA210_ADSP_PLUGIN_ADMA10),
SND_SOC_PARAM_TLV("PLUGIN1 send bytes",
SND_SOC_PARAM_TLV("PLUGIN1-PLACE-HOLDER send bytes",
TEGRA210_ADSP_PLUGIN1, 0x1000),
SND_SOC_PARAM_TLV("PLUGIN2 send bytes",
SND_SOC_PARAM_TLV("PLUGIN2-PLACE-HOLDER send bytes",
TEGRA210_ADSP_PLUGIN2, 0x1000),
SND_SOC_PARAM_TLV("PLUGIN3 send bytes",
SND_SOC_PARAM_TLV("PLUGIN3-PLACE-HOLDER send bytes",
TEGRA210_ADSP_PLUGIN3, 0x1000),
SND_SOC_PARAM_TLV("PLUGIN4 send bytes",
SND_SOC_PARAM_TLV("PLUGIN4-PLACE-HOLDER send bytes",
TEGRA210_ADSP_PLUGIN4, 0x1000),
SND_SOC_PARAM_TLV("PLUGIN5 send bytes",
SND_SOC_PARAM_TLV("PLUGIN5-PLACE-HOLDER send bytes",
TEGRA210_ADSP_PLUGIN5, 0x1000),
SND_SOC_PARAM_TLV("PLUGIN6 send bytes",
SND_SOC_PARAM_TLV("PLUGIN6-PLACE-HOLDER send bytes",
TEGRA210_ADSP_PLUGIN6, 0x1000),
SND_SOC_PARAM_TLV("PLUGIN7 send bytes",
SND_SOC_PARAM_TLV("PLUGIN7-PLACE-HOLDER send bytes",
TEGRA210_ADSP_PLUGIN7, 0x1000),
SND_SOC_PARAM_TLV("PLUGIN8 send bytes",
SND_SOC_PARAM_TLV("PLUGIN8-PLACE-HOLDER send bytes",
TEGRA210_ADSP_PLUGIN8, 0x1000),
SND_SOC_PARAM_TLV("PLUGIN9 send bytes",
SND_SOC_PARAM_TLV("PLUGIN9-PLACE-HOLDER send bytes",
TEGRA210_ADSP_PLUGIN9, 0x1000),
SND_SOC_PARAM_TLV("PLUGIN10 send bytes",
SND_SOC_PARAM_TLV("PLUGIN10-PLACE-HOLDER send bytes",
TEGRA210_ADSP_PLUGIN10, 0x1000),
APM_CONTROL("Priority", APM_PRIORITY_MAX),
APM_CONTROL("Min ADSP Clock", INT_MAX),
@@ -3352,6 +3352,14 @@ static int tegra210_adsp_audio_platform_probe(struct platform_device *pdev)
/* override the widget names from DT if any */
mux_idx = TEGRA210_ADSP_PLUGIN1 + i;
wt_idx = TEGRA210_ADSP_WIDGET_BASE + (2*i);
if (strlen(tegra210_adsp_mux_texts[mux_idx]) <
strlen(adsp_app_desc[i].wt_name)) {
dev_err(&pdev->dev,
"Widget name too long %s, allowed len %zu\n",
adsp_app_desc[i].wt_name,
strlen(tegra210_adsp_mux_texts[mux_idx]));
continue;
}
tegra210_adsp_route_modify(
tegra210_adsp_mux_texts[mux_idx],
adsp_app_desc[i].wt_name);