[alsa-devel] [PATCH v2] ASoC: Intel: byt-max98090: Add GPIO ACPI mapping table

Andy Shevchenko andriy.shevchenko at linux.intel.com
Mon Jun 12 10:54:58 CEST 2017


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 at gmail.com>
> Tested-by: Nicolas Porcel <nicolasporcel06 at gmail.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko at 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)

-- 
Andy Shevchenko <andriy.shevchenko at linux.intel.com>
Intel Finland Oy


More information about the Alsa-devel mailing list