Commit 7c197881 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Mark Brown

ASoC: Intel: byt-max98090: Add GPIO ACPI mapping table

In order to make GPIO ACPI library stricter prepare users of
gpiod_get_index() to correctly behave when there no mapping is
provided by firmware.

Here we add explicit mapping between _CRS GpioIo() resources and
their names used in the driver.
Reviewed-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
Tested-by: default avatarNicolas Porcel <nicolasporcel06@gmail.com>
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 617647ae
...@@ -67,20 +67,27 @@ static struct snd_soc_jack_pin hs_jack_pins[] = { ...@@ -67,20 +67,27 @@ static struct snd_soc_jack_pin hs_jack_pins[] = {
static struct snd_soc_jack_gpio hs_jack_gpios[] = { static struct snd_soc_jack_gpio hs_jack_gpios[] = {
{ {
.name = "hp-gpio", .name = "hp",
.idx = 0,
.report = SND_JACK_HEADPHONE | SND_JACK_LINEOUT, .report = SND_JACK_HEADPHONE | SND_JACK_LINEOUT,
.debounce_time = 200, .debounce_time = 200,
}, },
{ {
.name = "mic-gpio", .name = "mic",
.idx = 1,
.invert = 1, .invert = 1,
.report = SND_JACK_MICROPHONE, .report = SND_JACK_MICROPHONE,
.debounce_time = 200, .debounce_time = 200,
}, },
}; };
static const struct acpi_gpio_params hp_gpios = { 0, 0, false };
static const struct acpi_gpio_params mic_gpios = { 1, 0, false };
static const struct acpi_gpio_mapping acpi_byt_max98090_gpios[] = {
{ "hp-gpios", &hp_gpios, 1 },
{ "mic-gpios", &mic_gpios, 1 },
{},
};
static int byt_max98090_init(struct snd_soc_pcm_runtime *runtime) static int byt_max98090_init(struct snd_soc_pcm_runtime *runtime)
{ {
int ret; int ret;
...@@ -140,8 +147,9 @@ static struct snd_soc_card byt_max98090_card = { ...@@ -140,8 +147,9 @@ static struct snd_soc_card byt_max98090_card = {
static int byt_max98090_probe(struct platform_device *pdev) static int byt_max98090_probe(struct platform_device *pdev)
{ {
int ret_val = 0; struct device *dev = &pdev->dev;
struct byt_max98090_private *priv; struct byt_max98090_private *priv;
int ret_val;
priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_ATOMIC); priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_ATOMIC);
if (!priv) { if (!priv) {
...@@ -149,6 +157,10 @@ static int byt_max98090_probe(struct platform_device *pdev) ...@@ -149,6 +157,10 @@ static int byt_max98090_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
} }
ret_val = devm_acpi_dev_add_driver_gpios(dev->parent, acpi_byt_max98090_gpios);
if (ret_val)
dev_dbg(dev, "Unable to add GPIO mapping table\n");
byt_max98090_card.dev = &pdev->dev; byt_max98090_card.dev = &pdev->dev;
snd_soc_card_set_drvdata(&byt_max98090_card, priv); snd_soc_card_set_drvdata(&byt_max98090_card, priv);
ret_val = devm_snd_soc_register_card(&pdev->dev, &byt_max98090_card); ret_val = devm_snd_soc_register_card(&pdev->dev, &byt_max98090_card);
...@@ -158,7 +170,7 @@ static int byt_max98090_probe(struct platform_device *pdev) ...@@ -158,7 +170,7 @@ static int byt_max98090_probe(struct platform_device *pdev)
return ret_val; return ret_val;
} }
return ret_val; return 0;
} }
static int byt_max98090_remove(struct platform_device *pdev) static int byt_max98090_remove(struct platform_device *pdev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment