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@xxxxxxxxx> > Tested-by: Nicolas Porcel <nicolasporcel06@xxxxxxxxx> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > - 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) -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel