From 540f5ece2c20f6a3cf9218e59cdc1fc1acf2e685 Mon Sep 17 00:00:00 2001 From: Hariharan Sivaraman Date: Wed, 21 Feb 2018 12:31:46 +0530 Subject: [PATCH] tegra-adsp-alt: increase num of plugins Increase number of supported plugins by ADSP from 10 to 20 Bug 2048629 Change-Id: I44410252635fafb4b4d484ce75e642286e954ab2 Signed-off-by: Hariharan Sivaraman Reviewed-on: https://git-master.nvidia.com/r/1664190 Reviewed-by: mobile promotions Tested-by: mobile promotions --- .../soc/tegra-alt/include/tegra210_adsp_alt.h | 15 ++- sound/soc/tegra-alt/tegra210_adsp_alt.c | 100 +++++++++++++++++- 2 files changed, 112 insertions(+), 3 deletions(-) diff --git a/sound/soc/tegra-alt/include/tegra210_adsp_alt.h b/sound/soc/tegra-alt/include/tegra210_adsp_alt.h index f5d810c8..19e083c4 100644 --- a/sound/soc/tegra-alt/include/tegra210_adsp_alt.h +++ b/sound/soc/tegra-alt/include/tegra210_adsp_alt.h @@ -1,7 +1,7 @@ /* * tegra210_adsp_alt.h - Tegra210 ADSP header * - * Copyright (c) 2014-2017 NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2014-2018 NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -154,6 +154,16 @@ enum tegra210_adsp_virt_regs { TEGRA210_ADSP_PLUGIN8, TEGRA210_ADSP_PLUGIN9, TEGRA210_ADSP_PLUGIN10, + TEGRA210_ADSP_PLUGIN11, + TEGRA210_ADSP_PLUGIN12, + TEGRA210_ADSP_PLUGIN13, + TEGRA210_ADSP_PLUGIN14, + TEGRA210_ADSP_PLUGIN15, + TEGRA210_ADSP_PLUGIN16, + TEGRA210_ADSP_PLUGIN17, + TEGRA210_ADSP_PLUGIN18, + TEGRA210_ADSP_PLUGIN19, + TEGRA210_ADSP_PLUGIN20, TEGRA210_ADSP_VIRT_REG_MAX, }; @@ -182,7 +192,8 @@ enum tegra210_adsp_virt_regs { #define ADMA_TX_START TEGRA210_ADSP_PLUGIN_ADMA1_TX #define ADMA_TX_END TEGRA210_ADSP_PLUGIN_ADMA15_TX #define PLUGIN_START TEGRA210_ADSP_PLUGIN1 -#define PLUGIN_END TEGRA210_ADSP_PLUGIN10 +#define PLUGIN_END TEGRA210_ADSP_PLUGIN20 +#define PLUGIN_NUM (PLUGIN_END - PLUGIN_START) + 1 #define ADSP_MAX_NULL_SINK (ADSP_ADMAIF_END - ADSP_NULL_SINK_START + 1) #define IS_NULL_SINK(reg) ((reg >= ADSP_NULL_SINK_START) && \ diff --git a/sound/soc/tegra-alt/tegra210_adsp_alt.c b/sound/soc/tegra-alt/tegra210_adsp_alt.c index cff0cc68..3372ce5a 100644 --- a/sound/soc/tegra-alt/tegra210_adsp_alt.c +++ b/sound/soc/tegra-alt/tegra210_adsp_alt.c @@ -3492,6 +3492,16 @@ static const char *tegra210_adsp_mux_texts[] = { "PLUGIN8-PLACE-HOLDER", "PLUGIN9-PLACE-HOLDER", "PLUGIN10-PLACE-HOLDER", + "PLUGIN11-PLACE-HOLDER", + "PLUGIN12-PLACE-HOLDER", + "PLUGIN13-PLACE-HOLDER", + "PLUGIN14-PLACE-HOLDER", + "PLUGIN15-PLACE-HOLDER", + "PLUGIN16-PLACE-HOLDER", + "PLUGIN17-PLACE-HOLDER", + "PLUGIN18-PLACE-HOLDER", + "PLUGIN19-PLACE-HOLDER", + "PLUGIN20-PLACE-HOLDER", }; #define ADSP_MUX_ENUM_CTRL_DECL(ename, reg) \ @@ -3623,6 +3633,16 @@ static ADSP_MUX_ENUM_CTRL_DECL(plugin7, TEGRA210_ADSP_PLUGIN7); static ADSP_MUX_ENUM_CTRL_DECL(plugin8, TEGRA210_ADSP_PLUGIN8); static ADSP_MUX_ENUM_CTRL_DECL(plugin9, TEGRA210_ADSP_PLUGIN9); static ADSP_MUX_ENUM_CTRL_DECL(plugin10, TEGRA210_ADSP_PLUGIN10); +static ADSP_MUX_ENUM_CTRL_DECL(plugin11, TEGRA210_ADSP_PLUGIN11); +static ADSP_MUX_ENUM_CTRL_DECL(plugin12, TEGRA210_ADSP_PLUGIN12); +static ADSP_MUX_ENUM_CTRL_DECL(plugin13, TEGRA210_ADSP_PLUGIN13); +static ADSP_MUX_ENUM_CTRL_DECL(plugin14, TEGRA210_ADSP_PLUGIN14); +static ADSP_MUX_ENUM_CTRL_DECL(plugin15, TEGRA210_ADSP_PLUGIN15); +static ADSP_MUX_ENUM_CTRL_DECL(plugin16, TEGRA210_ADSP_PLUGIN16); +static ADSP_MUX_ENUM_CTRL_DECL(plugin17, TEGRA210_ADSP_PLUGIN17); +static ADSP_MUX_ENUM_CTRL_DECL(plugin18, TEGRA210_ADSP_PLUGIN18); +static ADSP_MUX_ENUM_CTRL_DECL(plugin19, TEGRA210_ADSP_PLUGIN19); +static ADSP_MUX_ENUM_CTRL_DECL(plugin20, TEGRA210_ADSP_PLUGIN20); #define ADSP_EP_WIDGETS(sname, ename) \ SND_SOC_DAPM_AIF_IN(sname " RX", NULL, 0, SND_SOC_NOPM, 0, 0), \ @@ -3779,6 +3799,16 @@ static struct snd_soc_dapm_widget tegra210_adsp_widgets[] = { 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), + ADSP_WIDGETS("PLUGIN11-PLACE-HOLDER", plugin11, TEGRA210_ADSP_PLUGIN11), + ADSP_WIDGETS("PLUGIN12-PLACE-HOLDER", plugin12, TEGRA210_ADSP_PLUGIN12), + ADSP_WIDGETS("PLUGIN13-PLACE-HOLDER", plugin13, TEGRA210_ADSP_PLUGIN13), + ADSP_WIDGETS("PLUGIN14-PLACE-HOLDER", plugin14, TEGRA210_ADSP_PLUGIN14), + ADSP_WIDGETS("PLUGIN15-PLACE-HOLDER", plugin15, TEGRA210_ADSP_PLUGIN15), + ADSP_WIDGETS("PLUGIN16-PLACE-HOLDER", plugin16, TEGRA210_ADSP_PLUGIN16), + ADSP_WIDGETS("PLUGIN17-PLACE-HOLDER", plugin17, TEGRA210_ADSP_PLUGIN17), + ADSP_WIDGETS("PLUGIN18-PLACE-HOLDER", plugin18, TEGRA210_ADSP_PLUGIN18), + ADSP_WIDGETS("PLUGIN19-PLACE-HOLDER", plugin19, TEGRA210_ADSP_PLUGIN19), + ADSP_WIDGETS("PLUGIN20-PLACE-HOLDER", plugin20, TEGRA210_ADSP_PLUGIN20), }; #define ADSP_EP_ROUTES(name) \ @@ -3896,7 +3926,17 @@ static struct snd_soc_dapm_widget tegra210_adsp_widgets[] = { { 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"} + { name " MUX", "PLUGIN10-PLACE-HOLDER", "PLUGIN10-PLACE-HOLDER TX"}, \ + { name " MUX", "PLUGIN11-PLACE-HOLDER", "PLUGIN11-PLACE-HOLDER TX"}, \ + { name " MUX", "PLUGIN12-PLACE-HOLDER", "PLUGIN12-PLACE-HOLDER TX"}, \ + { name " MUX", "PLUGIN13-PLACE-HOLDER", "PLUGIN13-PLACE-HOLDER TX"}, \ + { name " MUX", "PLUGIN14-PLACE-HOLDER", "PLUGIN14-PLACE-HOLDER TX"}, \ + { name " MUX", "PLUGIN15-PLACE-HOLDER", "PLUGIN15-PLACE-HOLDER TX"}, \ + { name " MUX", "PLUGIN16-PLACE-HOLDER", "PLUGIN16-PLACE-HOLDER TX"}, \ + { name " MUX", "PLUGIN17-PLACE-HOLDER", "PLUGIN17-PLACE-HOLDER TX"}, \ + { name " MUX", "PLUGIN18-PLACE-HOLDER", "PLUGIN18-PLACE-HOLDER TX"}, \ + { name " MUX", "PLUGIN19-PLACE-HOLDER", "PLUGIN19-PLACE-HOLDER TX"}, \ + { name " MUX", "PLUGIN20-PLACE-HOLDER", "PLUGIN20-PLACE-HOLDER TX"} #define ADSP_EP_MUX_ROUTES(name) \ { name " RX", NULL, name " Receive"}, \ @@ -4062,6 +4102,16 @@ static struct snd_soc_dapm_route tegra210_adsp_routes[] = { ADSP_PLUGIN_MUX_ROUTES("PLUGIN8-PLACE-HOLDER"), ADSP_PLUGIN_MUX_ROUTES("PLUGIN9-PLACE-HOLDER"), ADSP_PLUGIN_MUX_ROUTES("PLUGIN10-PLACE-HOLDER"), + ADSP_PLUGIN_MUX_ROUTES("PLUGIN11-PLACE-HOLDER"), + ADSP_PLUGIN_MUX_ROUTES("PLUGIN12-PLACE-HOLDER"), + ADSP_PLUGIN_MUX_ROUTES("PLUGIN13-PLACE-HOLDER"), + ADSP_PLUGIN_MUX_ROUTES("PLUGIN14-PLACE-HOLDER"), + ADSP_PLUGIN_MUX_ROUTES("PLUGIN15-PLACE-HOLDER"), + ADSP_PLUGIN_MUX_ROUTES("PLUGIN16-PLACE-HOLDER"), + ADSP_PLUGIN_MUX_ROUTES("PLUGIN17-PLACE-HOLDER"), + ADSP_PLUGIN_MUX_ROUTES("PLUGIN18-PLACE-HOLDER"), + ADSP_PLUGIN_MUX_ROUTES("PLUGIN19-PLACE-HOLDER"), + ADSP_PLUGIN_MUX_ROUTES("PLUGIN20-PLACE-HOLDER"), }; static void tegra210_adsp_wt_replace(struct device *dev, char **dest1, @@ -4848,6 +4898,26 @@ static struct snd_kcontrol_new tegra210_adsp_controls[] = { TEGRA210_ADSP_PLUGIN9), SND_SOC_PARAM_EXT("PLUGIN10-PLACE-HOLDER set params", TEGRA210_ADSP_PLUGIN10), + SND_SOC_PARAM_EXT("PLUGIN11-PLACE-HOLDER set params", + TEGRA210_ADSP_PLUGIN11), + SND_SOC_PARAM_EXT("PLUGIN12-PLACE-HOLDER set params", + TEGRA210_ADSP_PLUGIN12), + SND_SOC_PARAM_EXT("PLUGIN13-PLACE-HOLDER set params", + TEGRA210_ADSP_PLUGIN13), + SND_SOC_PARAM_EXT("PLUGIN14-PLACE-HOLDER set params", + TEGRA210_ADSP_PLUGIN14), + SND_SOC_PARAM_EXT("PLUGIN15-PLACE-HOLDER set params", + TEGRA210_ADSP_PLUGIN15), + SND_SOC_PARAM_EXT("PLUGIN16-PLACE-HOLDER set params", + TEGRA210_ADSP_PLUGIN16), + SND_SOC_PARAM_EXT("PLUGIN17-PLACE-HOLDER set params", + TEGRA210_ADSP_PLUGIN17), + SND_SOC_PARAM_EXT("PLUGIN18-PLACE-HOLDER set params", + TEGRA210_ADSP_PLUGIN18), + SND_SOC_PARAM_EXT("PLUGIN19-PLACE-HOLDER set params", + TEGRA210_ADSP_PLUGIN19), + SND_SOC_PARAM_EXT("PLUGIN20-PLACE-HOLDER set params", + TEGRA210_ADSP_PLUGIN20), SND_SOC_PARAM_TLV("PLUGIN1-PLACE-HOLDER send bytes", TEGRA210_ADSP_PLUGIN1, 0x1000), SND_SOC_PARAM_TLV("PLUGIN2-PLACE-HOLDER send bytes", @@ -4868,6 +4938,26 @@ static struct snd_kcontrol_new tegra210_adsp_controls[] = { TEGRA210_ADSP_PLUGIN9, 0x1000), SND_SOC_PARAM_TLV("PLUGIN10-PLACE-HOLDER send bytes", TEGRA210_ADSP_PLUGIN10, 0x1000), + SND_SOC_PARAM_TLV("PLUGIN11-PLACE-HOLDER send bytes", + TEGRA210_ADSP_PLUGIN11, 0x1000), + SND_SOC_PARAM_TLV("PLUGIN12-PLACE-HOLDER send bytes", + TEGRA210_ADSP_PLUGIN12, 0x1000), + SND_SOC_PARAM_TLV("PLUGIN13-PLACE-HOLDER send bytes", + TEGRA210_ADSP_PLUGIN13, 0x1000), + SND_SOC_PARAM_TLV("PLUGIN14-PLACE-HOLDER send bytes", + TEGRA210_ADSP_PLUGIN14, 0x1000), + SND_SOC_PARAM_TLV("PLUGIN15-PLACE-HOLDER send bytes", + TEGRA210_ADSP_PLUGIN15, 0x1000), + SND_SOC_PARAM_TLV("PLUGIN16-PLACE-HOLDER send bytes", + TEGRA210_ADSP_PLUGIN16, 0x1000), + SND_SOC_PARAM_TLV("PLUGIN17-PLACE-HOLDER send bytes", + TEGRA210_ADSP_PLUGIN17, 0x1000), + SND_SOC_PARAM_TLV("PLUGIN18-PLACE-HOLDER send bytes", + TEGRA210_ADSP_PLUGIN18, 0x1000), + SND_SOC_PARAM_TLV("PLUGIN19-PLACE-HOLDER send bytes", + TEGRA210_ADSP_PLUGIN19, 0x1000), + SND_SOC_PARAM_TLV("PLUGIN20-PLACE-HOLDER send bytes", + TEGRA210_ADSP_PLUGIN20, 0x1000), SND_SOC_PARAM_EXT("ADMA1 set params", TEGRA210_ADSP_PLUGIN_ADMA1), SND_SOC_PARAM_EXT("ADMA2 set params", @@ -5137,6 +5227,14 @@ static int tegra210_adsp_audio_platform_probe(struct platform_device *pdev) adsp_app_count = 0; } + /* check for maximum number of plugins */ + if (adsp_app_count > PLUGIN_NUM) { + dev_err(&pdev->dev, "num-plugin: %d\n", adsp_app_count); + dev_err(&pdev->dev, "Max plugins supported: %d\n", + PLUGIN_NUM); + adsp_app_count = PLUGIN_NUM; + } + /* allocate memory for app descritors */ adsp_app_desc = devm_kzalloc(&pdev->dev, (adsp_app_count + ARRAY_SIZE(adsp_app_minimal))