summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorSumit Bhattacharya <sumitb@nvidia.com>2011-09-07 02:20:26 +0530
committerRohan Somvanshi <rsomvanshi@nvidia.com>2011-09-16 08:26:37 -0700
commite5abaf6e4e56ea669159b01210313d3568ecfdbd (patch)
tree0a1b37d34d9f0fe8890ae8786eb52e136511f362 /sound
parent2f252db4a7dfe7b4681efe41f38587f5f35801ab (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.c23
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);