diff options
-rw-r--r-- | sound/soc/tegra/tegra_asoc_utils.c | 35 | ||||
-rw-r--r-- | sound/soc/tegra/tegra_asoc_utils.h | 2 |
2 files changed, 37 insertions, 0 deletions
diff --git a/sound/soc/tegra/tegra_asoc_utils.c b/sound/soc/tegra/tegra_asoc_utils.c index 51e8149fce98..5b3ee2308f48 100644 --- a/sound/soc/tegra/tegra_asoc_utils.c +++ b/sound/soc/tegra/tegra_asoc_utils.c @@ -112,6 +112,41 @@ int tegra_asoc_utils_set_rate(struct tegra_asoc_utils_data *data, int srate, } EXPORT_SYMBOL_GPL(tegra_asoc_utils_set_rate); +int tegra_asoc_utils_clk_enable(struct tegra_asoc_utils_data *data) +{ + int err; + + err = clk_enable(data->clk_pll_a); + if (err) { + dev_err(data->dev, "Can't enable pll_a: %d\n", err); + return err; + } + + err = clk_enable(data->clk_pll_a_out0); + if (err) { + dev_err(data->dev, "Can't enable pll_a_out0: %d\n", err); + return err; + } + + err = clk_enable(data->clk_cdev1); + if (err) { + dev_err(data->dev, "Can't enable cdev1: %d\n", err); + return err; + } + + return 0; +} +EXPORT_SYMBOL_GPL(tegra_asoc_utils_clk_enable); + +int tegra_asoc_utils_clk_disable(struct tegra_asoc_utils_data *data) +{ + clk_disable(data->clk_cdev1); + clk_disable(data->clk_pll_a_out0); + clk_disable(data->clk_pll_a); + return 0; +} +EXPORT_SYMBOL_GPL(tegra_asoc_utils_clk_disable); + int tegra_asoc_utils_init(struct tegra_asoc_utils_data *data, struct device *dev) { diff --git a/sound/soc/tegra/tegra_asoc_utils.h b/sound/soc/tegra/tegra_asoc_utils.h index 9aae91e0b4a5..9d8471861d6e 100644 --- a/sound/soc/tegra/tegra_asoc_utils.h +++ b/sound/soc/tegra/tegra_asoc_utils.h @@ -41,6 +41,8 @@ int tegra_asoc_utils_set_rate(struct tegra_asoc_utils_data *data, int srate, int tegra_asoc_utils_init(struct tegra_asoc_utils_data *data, struct device *dev); void tegra_asoc_utils_fini(struct tegra_asoc_utils_data *data); +int tegra_asoc_utils_clk_enable(struct tegra_asoc_utils_data *data); +int tegra_asoc_utils_clk_disable(struct tegra_asoc_utils_data *data); #endif |