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: Dmitry Torokhov <dmitry.torokhov@gmail.com> Tested-by: Nicolas Porcel <nicolasporcel06@gmail.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
617647ae28
commit
7c197881e1
|
@ -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 = {
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
|
|
Loading…
Reference in New Issue