|
@@ -50,10 +50,6 @@
|
|
|
|
|
|
#define DRV_NAME "tegra-snd-wm8903"
|
|
|
|
|
|
-#define GPIO_SPKR_EN BIT(0)
|
|
|
-#define GPIO_HP_MUTE BIT(1)
|
|
|
-#define GPIO_INT_MIC_EN BIT(2)
|
|
|
-#define GPIO_EXT_MIC_EN BIT(3)
|
|
|
#define GPIO_HP_DET BIT(4)
|
|
|
|
|
|
struct tegra_wm8903 {
|
|
@@ -401,49 +397,41 @@ static __devinit int tegra_wm8903_driver_probe(struct platform_device *pdev)
|
|
|
}
|
|
|
|
|
|
if (gpio_is_valid(pdata->gpio_spkr_en)) {
|
|
|
- ret = gpio_request(pdata->gpio_spkr_en, "spkr_en");
|
|
|
+ ret = devm_gpio_request_one(&pdev->dev, pdata->gpio_spkr_en,
|
|
|
+ GPIOF_OUT_INIT_LOW, "spkr_en");
|
|
|
if (ret) {
|
|
|
dev_err(card->dev, "cannot get spkr_en gpio\n");
|
|
|
return ret;
|
|
|
}
|
|
|
- machine->gpio_requested |= GPIO_SPKR_EN;
|
|
|
-
|
|
|
- gpio_direction_output(pdata->gpio_spkr_en, 0);
|
|
|
}
|
|
|
|
|
|
if (gpio_is_valid(pdata->gpio_hp_mute)) {
|
|
|
- ret = gpio_request(pdata->gpio_hp_mute, "hp_mute");
|
|
|
+ ret = devm_gpio_request_one(&pdev->dev, pdata->gpio_hp_mute,
|
|
|
+ GPIOF_OUT_INIT_HIGH, "hp_mute");
|
|
|
if (ret) {
|
|
|
dev_err(card->dev, "cannot get hp_mute gpio\n");
|
|
|
return ret;
|
|
|
}
|
|
|
- machine->gpio_requested |= GPIO_HP_MUTE;
|
|
|
-
|
|
|
- gpio_direction_output(pdata->gpio_hp_mute, 1);
|
|
|
}
|
|
|
|
|
|
if (gpio_is_valid(pdata->gpio_int_mic_en)) {
|
|
|
- ret = gpio_request(pdata->gpio_int_mic_en, "int_mic_en");
|
|
|
+ /* Disable int mic; enable signal is active-high */
|
|
|
+ ret = devm_gpio_request_one(&pdev->dev, pdata->gpio_int_mic_en,
|
|
|
+ GPIOF_OUT_INIT_LOW, "int_mic_en");
|
|
|
if (ret) {
|
|
|
dev_err(card->dev, "cannot get int_mic_en gpio\n");
|
|
|
return ret;
|
|
|
}
|
|
|
- machine->gpio_requested |= GPIO_INT_MIC_EN;
|
|
|
-
|
|
|
- /* Disable int mic; enable signal is active-high */
|
|
|
- gpio_direction_output(pdata->gpio_int_mic_en, 0);
|
|
|
}
|
|
|
|
|
|
if (gpio_is_valid(pdata->gpio_ext_mic_en)) {
|
|
|
- ret = gpio_request(pdata->gpio_ext_mic_en, "ext_mic_en");
|
|
|
+ /* Enable ext mic; enable signal is active-low */
|
|
|
+ ret = devm_gpio_request_one(&pdev->dev, pdata->gpio_ext_mic_en,
|
|
|
+ GPIOF_OUT_INIT_LOW, "ext_mic_en");
|
|
|
if (ret) {
|
|
|
dev_err(card->dev, "cannot get ext_mic_en gpio\n");
|
|
|
return ret;
|
|
|
}
|
|
|
- machine->gpio_requested |= GPIO_EXT_MIC_EN;
|
|
|
-
|
|
|
- /* Enable ext mic; enable signal is active-low */
|
|
|
- gpio_direction_output(pdata->gpio_ext_mic_en, 0);
|
|
|
}
|
|
|
|
|
|
ret = tegra_asoc_utils_init(&machine->util_data, &pdev->dev);
|
|
@@ -469,21 +457,11 @@ static int __devexit tegra_wm8903_driver_remove(struct platform_device *pdev)
|
|
|
{
|
|
|
struct snd_soc_card *card = platform_get_drvdata(pdev);
|
|
|
struct tegra_wm8903 *machine = snd_soc_card_get_drvdata(card);
|
|
|
- struct tegra_wm8903_platform_data *pdata = &machine->pdata;
|
|
|
|
|
|
if (machine->gpio_requested & GPIO_HP_DET)
|
|
|
snd_soc_jack_free_gpios(&tegra_wm8903_hp_jack,
|
|
|
1,
|
|
|
&tegra_wm8903_hp_jack_gpio);
|
|
|
- if (machine->gpio_requested & GPIO_EXT_MIC_EN)
|
|
|
- gpio_free(pdata->gpio_ext_mic_en);
|
|
|
- if (machine->gpio_requested & GPIO_INT_MIC_EN)
|
|
|
- gpio_free(pdata->gpio_int_mic_en);
|
|
|
- if (machine->gpio_requested & GPIO_HP_MUTE)
|
|
|
- gpio_free(pdata->gpio_hp_mute);
|
|
|
- if (machine->gpio_requested & GPIO_SPKR_EN)
|
|
|
- gpio_free(pdata->gpio_spkr_en);
|
|
|
- machine->gpio_requested = 0;
|
|
|
|
|
|
snd_soc_unregister_card(card);
|
|
|
|