On Sat, 2017-06-10 at 19:37 +0300, Andy Shevchenko wrote:
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.
Mark, we agreed with Takashi that the patch is okay in its initial form. Should I resend it, or maybe you can take it from this thread?
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
- update device node to which the mapping table is attached - remove idx assignment to 0 (it's by default) - add Nicolas' tag (sent privately) sound/soc/intel/boards/byt-max98090.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/sound/soc/intel/boards/byt-max98090.c b/sound/soc/intel/boards/byt-max98090.c index d9f81b8d915d..047be7fa0ce9 100644 --- a/sound/soc/intel/boards/byt-max98090.c +++ b/sound/soc/intel/boards/byt-max98090.c @@ -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)