mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-24 10:11:26 +03:00
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:
committed by
Sameer Pujar
parent
c279bec375
commit
fcd36dccf3
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user