Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -67,20 +67,27 @@ static struct snd_soc_jack_pin hs_jack_pins[] = {

static struct snd_soc_jack_gpio hs_jack_gpios[] = {
	{
		.name		= "hp-gpio",
		.idx		= 0,
		.name		= "hp",
		.report		= SND_JACK_HEADPHONE | SND_JACK_LINEOUT,
		.debounce_time	= 200,
	},
	{
		.name		= "mic-gpio",
		.idx		= 1,
		.name		= "mic",
		.invert		= 1,
		.report		= SND_JACK_MICROPHONE,
		.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)
{
	int ret;
@@ -140,8 +147,9 @@ static struct snd_soc_card byt_max98090_card = {

static int byt_max98090_probe(struct platform_device *pdev)
{
	int ret_val = 0;
	struct device *dev = &pdev->dev;
	struct byt_max98090_private *priv;
	int ret_val;

	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_ATOMIC);
	if (!priv) {
@@ -149,6 +157,10 @@ static int byt_max98090_probe(struct platform_device *pdev)
		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;
	snd_soc_card_set_drvdata(&byt_max98090_card, priv);
	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 0;
}

static int byt_max98090_remove(struct platform_device *pdev)