[alsa-devel] [PATCH 1/2] ASoC: rt5645: fix error handling for gpio detection

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Thu Feb 2 06:41:38 CET 2017


>>      if (IS_ERR(rt5645->gpiod_hp_det)) {
>> -        dev_err(&i2c->dev, "failed to initialize gpiod\n");
>> -        return PTR_ERR(rt5645->gpiod_hp_det);
>> +        dev_info(&i2c->dev, "failed to initialize gpiod\n");
>> +        ret = PTR_ERR(rt5645->gpiod_hp_det);
>> +        /*
>> +         * Continue if optional gpiod is missing, bail for all other
>> +         * errors, including -EPROBE_DEFER
>> +         */
>> +        if (ret != -ENOENT)
>> +            return ret;
>>      }
>>
>>      for (i = 0; i < ARRAY_SIZE(rt5645->supplies); i++)
>
> (sound/soc/codecs/rt5645.c)
> rt5645_i2c_probe()
>  (drivers/gpio/devres.c)
>  ->devm_gpiod_get_optional()
>    ->devm_gpiod_get_index_optional()
>
> As long as seeing current implementation of 
> 'devm_gpiod_get_index_optional()', this function never returns ENOENT. 
> In this case, it returns NULL.
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/gpio/devres.c#n185 
>
Thanks for pointing this out, I didn't see it and naively thought that 
everyone followed the same conventions. Oh well. I'll respin a v2.



More information about the Alsa-devel mailing list