diff options
author | Sumit Bhattacharya <sumitb@nvidia.com> | 2011-09-07 02:20:26 +0530 |
---|---|---|
committer | Rohan Somvanshi <rsomvanshi@nvidia.com> | 2011-09-16 08:26:37 -0700 |
commit | e5abaf6e4e56ea669159b01210313d3568ecfdbd (patch) | |
tree | 0a1b37d34d9f0fe8890ae8786eb52e136511f362 /sound | |
parent | 2f252db4a7dfe7b4681efe41f38587f5f35801ab (diff) |
ASoC: tegra: WM8753: Enable avddio_audio in ALSA
Bug 862023
Change-Id: Ifed4a2b524369d59f475ac6380f95db4e8c9ed44
Reviewed-on: http://git-master/r/52523
Tested-by: Sumit Bhattacharya <sumitb@nvidia.com>
Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: Mayuresh Kulkarni <mkulkarni@nvidia.com>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/tegra/tegra_wm8753.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sound/soc/tegra/tegra_wm8753.c b/sound/soc/tegra/tegra_wm8753.c index ffd97bbffc2f..1674a9b38476 100644 --- a/sound/soc/tegra/tegra_wm8753.c +++ b/sound/soc/tegra/tegra_wm8753.c @@ -34,6 +34,7 @@ #include <linux/platform_device.h> #include <linux/slab.h> #include <linux/gpio.h> +#include <linux/regulator/consumer.h> #include <mach/tegra_wm8753_pdata.h> @@ -58,6 +59,7 @@ struct tegra_wm8753 { struct tegra_asoc_utils_data util_data; struct tegra_wm8753_platform_data *pdata; + struct regulator *audio_reg; int gpio_requested; }; @@ -230,6 +232,23 @@ static int tegra_wm8753_init(struct snd_soc_pcm_runtime *rtd) struct tegra_wm8753_platform_data *pdata = machine->pdata; int ret; + if (machine_is_whistler()) { + machine->audio_reg = regulator_get(NULL, "avddio_audio"); + if (IS_ERR(machine->audio_reg)) { + dev_err(card->dev, "cannot get avddio_audio reg\n"); + ret = PTR_ERR(machine->audio_reg); + return ret; + } + + ret = regulator_enable(machine->audio_reg); + if (ret) { + dev_err(card->dev, "cannot enable avddio_audio reg\n"); + regulator_put(machine->audio_reg); + machine->audio_reg = NULL; + return ret; + } + } + if (gpio_is_valid(pdata->gpio_spkr_en)) { ret = gpio_request(pdata->gpio_spkr_en, "spkr_en"); if (ret) { @@ -389,6 +408,10 @@ static int __devexit tegra_wm8753_driver_remove(struct platform_device *pdev) gpio_free(pdata->gpio_hp_mute); if (machine->gpio_requested & GPIO_SPKR_EN) gpio_free(pdata->gpio_spkr_en); + if (machine->audio_reg) { + regulator_disable(machine->audio_reg); + regulator_put(machine->audio_reg); + } kfree(machine); |