Commit 39db65a0 authored by Cristian Ciocaltea's avatar Cristian Ciocaltea Committed by Mark Brown

ASoC: es8316: Handle optional IRQ assignment

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 dab472eb ("i2c /
ACPI: Use 0 to indicate that device does not have interrupt assigned").

Fixes: 82225766 ("ASoC: es8316: Add jack-detect support")
Signed-off-by: default avatarCristian Ciocaltea <cristian.ciocaltea@collabora.com>
Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230328094901.50763-1-cristian.ciocaltea@collabora.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent d23d50de
...@@ -842,6 +842,7 @@ static int es8316_i2c_probe(struct i2c_client *i2c_client) ...@@ -842,6 +842,7 @@ static int es8316_i2c_probe(struct i2c_client *i2c_client)
es8316->irq = i2c_client->irq; es8316->irq = i2c_client->irq;
mutex_init(&es8316->lock); mutex_init(&es8316->lock);
if (es8316->irq > 0) {
ret = devm_request_threaded_irq(dev, es8316->irq, NULL, es8316_irq, ret = devm_request_threaded_irq(dev, es8316->irq, NULL, es8316_irq,
IRQF_TRIGGER_HIGH | IRQF_ONESHOT | IRQF_NO_AUTOEN, IRQF_TRIGGER_HIGH | IRQF_ONESHOT | IRQF_NO_AUTOEN,
"es8316", es8316); "es8316", es8316);
...@@ -849,6 +850,7 @@ static int es8316_i2c_probe(struct i2c_client *i2c_client) ...@@ -849,6 +850,7 @@ static int es8316_i2c_probe(struct i2c_client *i2c_client)
dev_warn(dev, "Failed to get IRQ %d: %d\n", es8316->irq, ret); dev_warn(dev, "Failed to get IRQ %d: %d\n", es8316->irq, ret);
es8316->irq = -ENXIO; es8316->irq = -ENXIO;
} }
}
return devm_snd_soc_register_component(&i2c_client->dev, return devm_snd_soc_register_component(&i2c_client->dev,
&soc_component_dev_es8316, &soc_component_dev_es8316,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment