Skip to contentSkip to conversation

Add reset-gpios handling for max98927

PATCH In review Alejandro Tafalla 3 participants 8 messages Oct 7, 2021

Subsystems (3)
lore
Share & tools
lore
#1 lore raw

PATCH v4 1/2 ASoC: max98927: Handle reset gpio when probing i2c

In reply to Alejandro Tafalla

The max98927 codec on some devices requires pulling a reset gpio before responding to any i2c command. This commit adds support for it through an optional reset-gpios property.

---
 sound/soc/codecs/max98927.c | 25 +++++++++++++++++++++++++
 sound/soc/codecs/max98927.h |  1 +
 2 files changed, 26 insertions(+)
sound/soc/codecs/max98927.c +25 -0
index 8b206ee77709..5ba5f876eab8 100644
@@ -897,6 +897,19 @@ static int max98927_i2c_probe(struct i2c_client *i2c,
 			"Failed to allocate regmap: %d\n", ret);
 		return ret;
 	}
+	
+	max98927->reset_gpio 
+		= devm_gpiod_get_optional(&i2c->dev, "reset", GPIOD_OUT_HIGH);
+	if (IS_ERR(max98927->reset_gpio)) {
+		ret = PTR_ERR(max98927->reset_gpio);
+		return dev_err_probe(&i2c->dev, ret, "failed to request GPIO reset pin");
+	}
+
+	if (max98927->reset_gpio) {
+		gpiod_set_value_cansleep(max98927->reset_gpio, 0);
+		/* Wait for i2c port to be ready */
+		usleep_range(5000, 6000);
+	}
 
 	/* Check Revision ID */
 	ret = regmap_read(max98927->regmap,
@@ -921,6 +934,17 @@ static int max98927_i2c_probe(struct i2c_client *i2c,
 	return ret;
 }
 
+static int max98927_i2c_remove(struct i2c_client *i2c)
+{
+	struct max98927_priv *max98927 = i2c_get_clientdata(i2c);
+
+	if (max98927->reset_gpio) {
+		gpiod_set_value_cansleep(max98927->reset_gpio, 1);
+	}
+
+	return 0;
+}
+
 static const struct i2c_device_id max98927_i2c_id[] = {
 	{ "max98927", 0},
 	{ },
@@ -952,6 +976,7 @@ static struct i2c_driver max98927_i2c_driver = {
 		.pm = &max98927_pm,
 	},
 	.probe  = max98927_i2c_probe,
+	.remove = max98927_i2c_remove,
 	.id_table = max98927_i2c_id,
 };
 
sound/soc/codecs/max98927.h +1 -0
index 05f495db914d..13f5066d7419 100644
@@ -255,6 +255,7 @@ struct max98927_priv {
 	struct regmap *regmap;
 	struct snd_soc_component *component;
 	struct max98927_pdata *pdata;
+	struct gpio_desc *reset_gpio; 
 	unsigned int spk_gain;
 	unsigned int sysclk;
 	unsigned int v_l_slot;
Signature · 1 line
2.33.0
#0 lore raw

v4 cover Add reset-gpios handling for max98927

The max98927 codec on some devices (i.e. Xiaomi Mi A2 Lite phone) requires hardware-resetting the codec by driving a reset-gpio. This series adds support for it through an optional reset-gpios property.

v4:
* Correctly assert/deassert the GPIO states
* Wait for the i2c port to be ready after reset
* Reset device when removed

v3:
* Fix indentation on the dev_err_probe line

v2:
* Use dev_err_probe instead of dev_err

Alejandro Tafalla (2):
ASoC: max98927: Handle reset gpio when probing i2c
dt-bindings: sound: max98927: Add reset-gpios optional property

 .../devicetree/bindings/sound/max9892x.txt    |  3 +++
 sound/soc/codecs/max98927.c                   | 25 +++++++++++++++++++
 sound/soc/codecs/max98927.h                   |  1 +
 3 files changed, 29 insertions(+)
Signature · 1 line
2.33.0
#2 lore raw

PATCH v4 2/2 dt-bindings: sound: max98927: Add reset-gpios optional property

---
 Documentation/devicetree/bindings/sound/max9892x.txt | 3 +++
 1 file changed, 3 insertions(+)
Documentation/devicetree/bindings/sound/max9892x.txt +3 -0
index f6171591ddc6..98cb9ba5b328 100644
@@ -30,6 +30,9 @@ Required properties:
 
   - reg : the I2C address of the device for I2C
 
+Optional properties:
+  - reset-gpios : GPIO to reset the device
+
 Example:
 
 codec: max98927@3a {
Signature · 1 line
2.33.0
#3 lore raw

Re: [PATCH v4 2/2] dt-bindings: sound: max98927: Add reset-gpios optional property

Quoted 4 lines · On 7/10/21 4:38 Alejandro Tafalla wrote:
---
 Documentation/devicetree/bindings/sound/max9892x.txt | 3 +++
 1 file changed, 3 insertions(+)

Sorry, I forgot to add: Acked-by: Rob Herring <[email protected]>

Signature · 1 line
Alejandro Tafalla
#4 lore raw

Re: [PATCH v4 2/2] dt-bindings: sound: max98927: Add reset-gpios optional property

Quoted 7 lines · Alejandro Tafalla
Quoted 4 lines · On 7/10/21 4:38 Alejandro Tafalla wrote:
---
 Documentation/devicetree/bindings/sound/max9892x.txt | 3 +++
 1 file changed, 3 insertions(+)

Sorry, I forgot to add: Acked-by: Rob Herring <[email protected]>

And commit messages?

Signature · 2 lines
With Best Regards,
Andy Shevchenko
#5 lore raw

Re: [PATCH v4 2/2] dt-bindings: sound: max98927: Add reset-gpios optional property

Quoted 11 lines · On 7/10/21 9:06 Andy Shevchenko wrote:
Quoted 8 lines · Alejandro Tafalla
Quoted 5 lines · On 7/10/21 4:38 Alejandro Tafalla wrote:

---

 Documentation/devicetree/bindings/sound/max9892x.txt | 3 +++
 1 file changed, 3 insertions(+)

Sorry, I forgot to add: Acked-by: Rob Herring <[email protected]>

And commit messages?

Right, can I resend this patch with the commit message or I have to resend the other one too?

Signature · 1 line
Alejandro Tafalla
maintainer
#6 lore raw

Re: [PATCH v4 2/2] dt-bindings: sound: max98927: Add reset-gpios optional property

In reply to Alejandro Tafalla
Quoted 1 line · Alejandro Tafalla

Please submit patches using subject lines reflecting the style for the subsystem, this makes it easier for people to identify relevant patches. Look at what existing commits in the area you're changing are doing and make sure your subject lines visually resemble what they're doing. There's no need to resubmit to fix this alone.

maintainer
#7 lore raw
In reply to Alejandro Tafalla
Quoted 10 lines · Alejandro Tafalla

The max98927 codec on some devices (i.e. Xiaomi Mi A2 Lite phone) requires hardware-resetting the codec by driving a reset-gpio. This series adds support for it through an optional reset-gpios property.

v4:
* Correctly assert/deassert the GPIO states
* Wait for the i2c port to be ready after reset
* Reset device when removed

[...]

Applied to

https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/2] ASoC: max98927: Handle reset gpio when probing i2c

      commit: 4d67dc1998f1890a9d22d03208037075ea9f2562
[2/2] dt-bindings: sound: max98927: Add reset-gpios optional property
      commit: b23d3189c038c091adc8de382d20a8f5321645a1

All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying to this mail.

Thanks,
Mark