ASoC: tegra-alt: don't init ADSP at boot

Do not initialize ADSP using work queue. Initialization will be
done from userspace by setting mixer control "ADSP init" to 1.

Bug 1552863

Change-Id: I0fd435b581a4fb9e851e8505e451c52cf0746df2
Signed-off-by: Viraj Karandikar <vkarandikar@nvidia.com>
Reviewed-on: http://git-master/r/499313
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sumit Bhattacharya <sumitb@nvidia.com>
This commit is contained in:
Viraj Karandikar
2014-09-16 16:53:31 +05:30
committed by Sameer Pujar
parent 193082c2b1
commit 3cc29c8795

View File

@@ -34,7 +34,6 @@
#include <linux/platform_device.h>
#include <linux/firmware.h>
#include <linux/kthread.h>
#include <linux/workqueue.h>
#include <linux/tegra_nvadsp.h>
#include <linux/irqchip/tegra-agic.h>
@@ -104,7 +103,6 @@ struct tegra210_adsp_compr_rtd {
struct tegra210_adsp {
struct device *dev;
struct work_struct work;
struct tegra210_adsp_app apps[TEGRA210_ADSP_VIRT_REG_MAX];
atomic_t reg_val[TEGRA210_ADSP_VIRT_REG_MAX];
DECLARE_BITMAP(adma_usage, TEGRA210_ADSP_ADMA_CHANNEL_COUNT);
@@ -323,24 +321,6 @@ static void tegra210_adsp_deinit(struct tegra210_adsp *adsp)
mutex_unlock(&adsp->mutex);
}
static void tegra210_adsp_init_work(struct work_struct *work)
{
struct tegra210_adsp *adsp =
container_of(work, struct tegra210_adsp, work);
int retry = 10;
int ret = 0;
while (retry) {
ret = tegra210_adsp_init(adsp);
if (!ret)
break;
dev_warn(adsp->dev, "Failed to load adsp OS. Will retry.");
msleep(5000);
retry--;
}
}
/* ADSP-CPU message send-receive utility functions */
static int tegra210_adsp_get_msg(apm_shared_state_t *apm, apm_msg_t *apm_msg)
{
@@ -1428,6 +1408,9 @@ static int tegra210_adsp_mux_put(struct snd_kcontrol *kcontrol,
uint32_t cur_val = 0;
int ret = 0;
if (!adsp->init_done)
return -ENODEV;
/* Init or de-init app based on connection */
if (IS_ADSP_APP(e->reg)) {
app = &adsp->apps[e->reg];
@@ -1973,8 +1956,6 @@ static int tegra210_adsp_audio_platform_probe(struct platform_device *pdev)
}
/* HACK end */
INIT_WORK(&adsp->work, tegra210_adsp_init_work);
for (i = 0; i < TEGRA210_ADSP_VIRT_REG_MAX; i++)
adsp->apps[i].reg = i;
@@ -2005,10 +1986,6 @@ static int tegra210_adsp_audio_platform_probe(struct platform_device *pdev)
goto err_unregister_platform;
}
#if ENABLE_ADSP
schedule_work(&adsp->work);
#endif
pr_info("tegra210_adsp_audio_platform_probe probe successfull.");
return 0;