mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 00:04:15 +08:00
GPIO inclusion fixes to misc sound drivers
Merge series from Linus Walleij <linus.walleij@linaro.org>: Mostly dropping unused headers, and a single driver rewrite.
This commit is contained in:
commit
aefe7a8e26
@ -446,7 +446,7 @@
|
||||
tegra_ac97: ac97@70002000 {
|
||||
status = "okay";
|
||||
nvidia,codec-reset-gpio =
|
||||
<&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_HIGH>;
|
||||
<&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
|
||||
nvidia,codec-sync-gpio =
|
||||
<&gpio TEGRA_GPIO(P, 0) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
@ -9,7 +9,6 @@
|
||||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
|
@ -8,7 +8,6 @@
|
||||
// based on ${LINUX}/sound/soc/generic/audio-graph-card.c
|
||||
#include <linux/clk.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
|
@ -5,7 +5,6 @@
|
||||
// Copyright (c) 2016 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
|
||||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
|
@ -15,7 +15,6 @@
|
||||
#include <linux/clk.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <sound/core.h>
|
||||
#include <sound/pcm.h>
|
||||
#include <sound/pcm_params.h>
|
||||
|
@ -6,7 +6,6 @@
|
||||
|
||||
#include <dt-bindings/sound/sc7180-lpass.h>
|
||||
#include <dt-bindings/sound/qcom,q6afe.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
|
@ -12,12 +12,11 @@
|
||||
#include <linux/clk.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/reset.h>
|
||||
@ -39,11 +38,15 @@ static void tegra20_ac97_codec_reset(struct snd_ac97 *ac97)
|
||||
u32 readback;
|
||||
unsigned long timeout;
|
||||
|
||||
/* reset line is not driven by DAC pad group, have to toggle GPIO */
|
||||
gpio_set_value(workdata->reset_gpio, 0);
|
||||
/*
|
||||
* The reset line is not driven by DAC pad group, have to toggle GPIO.
|
||||
* The RESET line is active low but this is abstracted by the GPIO
|
||||
* library.
|
||||
*/
|
||||
gpiod_set_value(workdata->reset_gpio, 1);
|
||||
udelay(2);
|
||||
|
||||
gpio_set_value(workdata->reset_gpio, 1);
|
||||
gpiod_set_value(workdata->reset_gpio, 0);
|
||||
udelay(2);
|
||||
|
||||
timeout = jiffies + msecs_to_jiffies(100);
|
||||
@ -66,14 +69,10 @@ static void tegra20_ac97_codec_warm_reset(struct snd_ac97 *ac97)
|
||||
* the controller cmd is not working, have to toggle sync line
|
||||
* manually.
|
||||
*/
|
||||
gpio_request(workdata->sync_gpio, "codec-sync");
|
||||
|
||||
gpio_direction_output(workdata->sync_gpio, 1);
|
||||
|
||||
gpiod_direction_output(workdata->sync_gpio, 1);
|
||||
udelay(2);
|
||||
gpio_set_value(workdata->sync_gpio, 0);
|
||||
gpiod_set_value(workdata->sync_gpio, 0);
|
||||
udelay(2);
|
||||
gpio_free(workdata->sync_gpio);
|
||||
|
||||
timeout = jiffies + msecs_to_jiffies(100);
|
||||
|
||||
@ -342,28 +341,26 @@ static int tegra20_ac97_platform_probe(struct platform_device *pdev)
|
||||
goto err_clk_put;
|
||||
}
|
||||
|
||||
ac97->reset_gpio = of_get_named_gpio(pdev->dev.of_node,
|
||||
"nvidia,codec-reset-gpio", 0);
|
||||
if (gpio_is_valid(ac97->reset_gpio)) {
|
||||
ret = devm_gpio_request_one(&pdev->dev, ac97->reset_gpio,
|
||||
GPIOF_OUT_INIT_HIGH, "codec-reset");
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "could not get codec-reset GPIO\n");
|
||||
goto err_clk_put;
|
||||
}
|
||||
} else {
|
||||
dev_err(&pdev->dev, "no codec-reset GPIO supplied\n");
|
||||
ret = -EINVAL;
|
||||
/* Obtain RESET de-asserted */
|
||||
ac97->reset_gpio = devm_gpiod_get(&pdev->dev,
|
||||
"nvidia,codec-reset",
|
||||
GPIOD_OUT_LOW);
|
||||
if (IS_ERR(ac97->reset_gpio)) {
|
||||
ret = PTR_ERR(ac97->reset_gpio);
|
||||
dev_err(&pdev->dev, "no RESET GPIO supplied: %d\n", ret);
|
||||
goto err_clk_put;
|
||||
}
|
||||
gpiod_set_consumer_name(ac97->reset_gpio, "codec-reset");
|
||||
|
||||
ac97->sync_gpio = of_get_named_gpio(pdev->dev.of_node,
|
||||
"nvidia,codec-sync-gpio", 0);
|
||||
if (!gpio_is_valid(ac97->sync_gpio)) {
|
||||
dev_err(&pdev->dev, "no codec-sync GPIO supplied\n");
|
||||
ret = -EINVAL;
|
||||
ac97->sync_gpio = devm_gpiod_get(&pdev->dev,
|
||||
"nvidia,codec-sync",
|
||||
GPIOD_OUT_LOW);
|
||||
if (IS_ERR(ac97->sync_gpio)) {
|
||||
ret = PTR_ERR(ac97->sync_gpio);
|
||||
dev_err(&pdev->dev, "no codec-sync GPIO supplied: %d\n", ret);
|
||||
goto err_clk_put;
|
||||
}
|
||||
gpiod_set_consumer_name(ac97->sync_gpio, "codec-sync");
|
||||
|
||||
ac97->capture_dma_data.addr = mem->start + TEGRA20_AC97_FIFO_RX1;
|
||||
ac97->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
||||
|
@ -80,7 +80,7 @@ struct tegra20_ac97 {
|
||||
struct snd_dmaengine_dai_dma_data playback_dma_data;
|
||||
struct reset_control *reset;
|
||||
struct regmap *regmap;
|
||||
int reset_gpio;
|
||||
int sync_gpio;
|
||||
struct gpio_desc *reset_gpio;
|
||||
struct gpio_desc *sync_gpio;
|
||||
};
|
||||
#endif /* __TEGRA20_AC97_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user