Re: [PATCH] ASoC: es8316: Handle optional IRQ assignment

From: Hans de Goede
Date: Tue Mar 28 2023 - 06:16:30 EST


Hi,

On 3/28/23 11:49, Cristian Ciocaltea wrote:
> The driver is able to work fine without relying on a mandatory interrupt
> being assigned to the I2C device. This is only needed when making use of
> the jack-detect support.
>
> However, the following warning message is always emitted when there is
> no such interrupt available:
>
> es8316 0-0011: Failed to get IRQ 0: -22
>
> Do not attempt to request an IRQ if it is not available/valid. This also
> ensures the rather misleading message is not displayed anymore.
>
> Also note the IRQ validation relies on commit dab472eb931bc291 ("i2c /
> ACPI: Use 0 to indicate that device does not have interrupt assigned").
>
> Fixes: 822257661031 ("ASoC: es8316: Add jack-detect support")
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@xxxxxxxxxxxxx>

Thanks, patch looks good to me:

Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx>

Regards,

Hans



> ---
> sound/soc/codecs/es8316.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/sound/soc/codecs/es8316.c b/sound/soc/codecs/es8316.c
> index 056c3082fe02..f7d7a9c91e04 100644
> --- a/sound/soc/codecs/es8316.c
> +++ b/sound/soc/codecs/es8316.c
> @@ -842,12 +842,14 @@ static int es8316_i2c_probe(struct i2c_client *i2c_client)
> es8316->irq = i2c_client->irq;
> mutex_init(&es8316->lock);
>
> - ret = devm_request_threaded_irq(dev, es8316->irq, NULL, es8316_irq,
> - IRQF_TRIGGER_HIGH | IRQF_ONESHOT | IRQF_NO_AUTOEN,
> - "es8316", es8316);
> - if (ret) {
> - dev_warn(dev, "Failed to get IRQ %d: %d\n", es8316->irq, ret);
> - es8316->irq = -ENXIO;
> + if (es8316->irq > 0) {
> + ret = devm_request_threaded_irq(dev, es8316->irq, NULL, es8316_irq,
> + IRQF_TRIGGER_HIGH | IRQF_ONESHOT | IRQF_NO_AUTOEN,
> + "es8316", es8316);
> + if (ret) {
> + dev_warn(dev, "Failed to get IRQ %d: %d\n", es8316->irq, ret);
> + es8316->irq = -ENXIO;
> + }
> }
>
> return devm_snd_soc_register_component(&i2c_client->dev,