[PATCH 0/8] Adjust usage of rt5682(s) power supply properties
This series sets straight the usage of power supply properties for the rt5682 and rt5682s audio codecs.
These properties were already being used by sc7180-trogdor.dtsi (and derived DTs like sc7180-trogdor-kingoftown.dtsi).
We start by documenting the power supplies that are already in use and then add few others that were missing to the bindings.
Then we update the drivers to also support the new supplies.
Finally we update the trogdor DTs so they have the newly added but required supplies and remove a superfluous one that was causing warnings.
Nícolas F. R. A. Prado (8): ASoC: dt-bindings: realtek,rt5682s: Add AVDD and MICVDD supplies ASoC: dt-bindings: realtek,rt5682s: Add dbvdd and ldo1-in supplies ASoC: dt-bindings: rt5682: Add AVDD, MICVDD and VBAT supplies ASoC: dt-bindings: rt5682: Add dbvdd and ldo1-in supplies ASoC: rt5682s: Support dbvdd and ldo1-in supplies ASoC: rt5682: Support dbvdd and ldo1-in supplies arm64: dts: qcom: sc7180-trogdor: Add missing supplies for rt5682 arm64: dts: qcom: sc7180-trogdor: Remove VBAT supply from rt5682s
.../bindings/sound/realtek,rt5682s.yaml | 23 +++++++++++++++++++ .../devicetree/bindings/sound/rt5682.txt | 20 ++++++++++++++++ .../dts/qcom/sc7180-trogdor-kingoftown.dtsi | 1 + ...0-trogdor-wormdingler-rev1-boe-rt5682s.dts | 1 + ...0-trogdor-wormdingler-rev1-inx-rt5682s.dts | 1 + arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 2 ++ sound/soc/codecs/rt5682.c | 2 ++ sound/soc/codecs/rt5682.h | 2 +- sound/soc/codecs/rt5682s.c | 22 ++++++++++++++++++ sound/soc/codecs/rt5682s.h | 2 ++ 10 files changed, 75 insertions(+), 1 deletion(-)
The rt5682s codec has two supplies - AVDD and MICVDD - which are already used by sc7180-trogdor-kingoftown.dtsi. Document them in the binding.
Acked-by: Krzysztof Kozlowski krzysztof.kozlowski@linaro.org Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com
--- Commit adapted from [1], changes: - Made supplies required - Added description for supplies
[1] https://lore.kernel.org/all/20221024220015.1759428-3-nfraprado@collabora.com
.../devicetree/bindings/sound/realtek,rt5682s.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/realtek,rt5682s.yaml b/Documentation/devicetree/bindings/sound/realtek,rt5682s.yaml index 1c0b06d82369..b7338bfc0f5a 100644 --- a/Documentation/devicetree/bindings/sound/realtek,rt5682s.yaml +++ b/Documentation/devicetree/bindings/sound/realtek,rt5682s.yaml @@ -90,11 +90,20 @@ properties: "#sound-dai-cells": const: 1
+ AVDD-supply: + description: Regulator supplying analog power through the AVDD pin. + + MICVDD-supply: + description: Regulator supplying power for the microphone bias through the + MICVDD pin. + additionalProperties: false
required: - compatible - reg + - AVDD-supply + - MICVDD-supply
examples: - | @@ -120,5 +129,8 @@ examples:
clocks = <&osc>; clock-names = "mclk"; + + AVDD-supply = <&avdd_reg>; + MICVDD-supply = <&micvdd_reg>; }; };
Il 28/10/22 22:55, Nícolas F. R. A. Prado ha scritto:
The rt5682s codec has two supplies - AVDD and MICVDD - which are already used by sc7180-trogdor-kingoftown.dtsi. Document them in the binding.
Acked-by: Krzysztof Kozlowski krzysztof.kozlowski@linaro.org Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com
Reviewed-by: AngeloGioacchino Del Regno angelogioacchino.delregno@collabora.com
The rt5682s codec has two additional power supply pins, DBVDD and LDO1_IN, that aren't currently described in the binding. Add them.
Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com ---
.../devicetree/bindings/sound/realtek,rt5682s.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/realtek,rt5682s.yaml b/Documentation/devicetree/bindings/sound/realtek,rt5682s.yaml index b7338bfc0f5a..5b2bbf6f9156 100644 --- a/Documentation/devicetree/bindings/sound/realtek,rt5682s.yaml +++ b/Documentation/devicetree/bindings/sound/realtek,rt5682s.yaml @@ -97,6 +97,13 @@ properties: description: Regulator supplying power for the microphone bias through the MICVDD pin.
+ dbvdd-supply: + description: Regulator supplying I/O power through the DBVDD pin. + + ldo1-in-supply: + description: Regulator supplying power to the digital core and charge pump + through the LDO1_IN pin. + additionalProperties: false
required: @@ -104,6 +111,8 @@ required: - reg - AVDD-supply - MICVDD-supply + - dbvdd-supply + - ldo1-in-supply
examples: - | @@ -132,5 +141,7 @@ examples:
AVDD-supply = <&avdd_reg>; MICVDD-supply = <&micvdd_reg>; + dbvdd-supply = <&dbvdd_reg>; + ldo1-in-supply = <&ldo1_in_reg>; }; };
Il 28/10/22 22:55, Nícolas F. R. A. Prado ha scritto:
The rt5682s codec has two additional power supply pins, DBVDD and LDO1_IN, that aren't currently described in the binding. Add them.
Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com
Reviewed-by: AngeloGioacchino Del Regno angelogioacchino.delregno@collabora.com
On 28/10/2022 16:55, Nícolas F. R. A. Prado wrote:
The rt5682s codec has two additional power supply pins, DBVDD and LDO1_IN, that aren't currently described in the binding. Add them.
Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com
Acked-by: Krzysztof Kozlowski krzysztof.kozlowski@linaro.org
Best regards, Krzysztof
The rt5682 codec has three supplies - AVDD, MICVDD and VBAT - which are already used by sc7180-trogdor.dtsi. Document them in the binding.
Acked-by: Krzysztof Kozlowski krzysztof.kozlowski@linaro.org Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com
--- Commit adapted from [1], changes: - Made supplies required - Improved supplies descriptions
[1] https://lore.kernel.org/all/20221024220015.1759428-5-nfraprado@collabora.com
Documentation/devicetree/bindings/sound/rt5682.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/rt5682.txt b/Documentation/devicetree/bindings/sound/rt5682.txt index 6b87db68337c..89e6245b870e 100644 --- a/Documentation/devicetree/bindings/sound/rt5682.txt +++ b/Documentation/devicetree/bindings/sound/rt5682.txt @@ -8,6 +8,15 @@ Required properties:
- reg : The I2C address of the device.
+- AVDD-supply: phandle to the regulator supplying analog power through the + AVDD pin + +- MICVDD-supply: phandle to the regulator supplying power for the microphone + bias through the MICVDD pin. Either MICVDD or VBAT should be present. + +- VBAT-supply: phandle to the regulator supplying battery power through the + VBAT pin. Either MICVDD or VBAT should be present. + Optional properties:
- interrupts : The CODEC's interrupt output. @@ -75,4 +84,7 @@ rt5682 {
clocks = <&osc>; clock-names = "mclk"; + + AVDD-supply = <&avdd_reg>; + MICVDD-supply = <&micvdd_reg>; };
The rt5682 codec has two additional power supply pins, DBVDD and LDO1_IN, that aren't currently described in the binding. Add them.
Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com ---
Documentation/devicetree/bindings/sound/rt5682.txt | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/rt5682.txt b/Documentation/devicetree/bindings/sound/rt5682.txt index 89e6245b870e..948109ff0db3 100644 --- a/Documentation/devicetree/bindings/sound/rt5682.txt +++ b/Documentation/devicetree/bindings/sound/rt5682.txt @@ -17,6 +17,12 @@ Required properties: - VBAT-supply: phandle to the regulator supplying battery power through the VBAT pin. Either MICVDD or VBAT should be present.
+- dbvdd-supply: phandle to the regulator supplying I/O power through the DBVDD + pin. + +- ldo1-in-supply: phandle to the regulator supplying power to the digital core + and charge pump through the LDO1_IN pin. + Optional properties:
- interrupts : The CODEC's interrupt output. @@ -87,4 +93,6 @@ rt5682 {
AVDD-supply = <&avdd_reg>; MICVDD-supply = <&micvdd_reg>; + dbvdd-supply = <&dbvdd_reg>; + ldo1-in-supply = <&ldo1_in_reg>; };
On 28/10/2022 16:55, Nícolas F. R. A. Prado wrote:
The rt5682 codec has two additional power supply pins, DBVDD and LDO1_IN, that aren't currently described in the binding. Add them.
Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com
Acked-by: Krzysztof Kozlowski krzysztof.kozlowski@linaro.org
Best regards, Krzysztof
Add support for the dbvdd and ldo1-in supplies.
Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com ---
sound/soc/codecs/rt5682s.c | 22 ++++++++++++++++++++++ sound/soc/codecs/rt5682s.h | 2 ++ 2 files changed, 24 insertions(+)
diff --git a/sound/soc/codecs/rt5682s.c b/sound/soc/codecs/rt5682s.c index 80c673aa14db..de686004e504 100644 --- a/sound/soc/codecs/rt5682s.c +++ b/sound/soc/codecs/rt5682s.c @@ -44,6 +44,8 @@ static const struct rt5682s_platform_data i2s_default_platform_data = { static const char *rt5682s_supply_names[RT5682S_NUM_SUPPLIES] = { [RT5682S_SUPPLY_AVDD] = "AVDD", [RT5682S_SUPPLY_MICVDD] = "MICVDD", + [RT5682S_SUPPLY_DBVDD] = "dbvdd", + [RT5682S_SUPPLY_LDO1_IN] = "ldo1-in", };
static const struct reg_sequence patch_list[] = { @@ -3089,6 +3091,14 @@ static void rt5682s_i2c_disable_regulators(void *data) if (ret) dev_err(dev, "Failed to disable supply AVDD: %d\n", ret);
+ ret = regulator_disable(rt5682s->supplies[RT5682S_SUPPLY_DBVDD].consumer); + if (ret) + dev_err(dev, "Failed to disable supply dbvdd: %d\n", ret); + + ret = regulator_disable(rt5682s->supplies[RT5682S_SUPPLY_LDO1_IN].consumer); + if (ret) + dev_err(dev, "Failed to disable supply ldo1-in: %d\n", ret); + usleep_range(1000, 1500);
ret = regulator_disable(rt5682s->supplies[RT5682S_SUPPLY_MICVDD].consumer); @@ -3150,6 +3160,18 @@ static int rt5682s_i2c_probe(struct i2c_client *i2c) return ret; }
+ ret = regulator_enable(rt5682s->supplies[RT5682S_SUPPLY_DBVDD].consumer); + if (ret) { + dev_err(&i2c->dev, "Failed to enable supply dbvdd: %d\n", ret); + return ret; + } + + ret = regulator_enable(rt5682s->supplies[RT5682S_SUPPLY_LDO1_IN].consumer); + if (ret) { + dev_err(&i2c->dev, "Failed to enable supply ldo1-in: %d\n", ret); + return ret; + } + if (gpio_is_valid(rt5682s->pdata.ldo1_en)) { if (devm_gpio_request_one(&i2c->dev, rt5682s->pdata.ldo1_en, GPIOF_OUT_INIT_HIGH, "rt5682s")) diff --git a/sound/soc/codecs/rt5682s.h b/sound/soc/codecs/rt5682s.h index 45464a041765..67f86a38a1cc 100644 --- a/sound/soc/codecs/rt5682s.h +++ b/sound/soc/codecs/rt5682s.h @@ -1438,6 +1438,8 @@ struct pll_calc_map { enum { RT5682S_SUPPLY_AVDD, RT5682S_SUPPLY_MICVDD, + RT5682S_SUPPLY_DBVDD, + RT5682S_SUPPLY_LDO1_IN, RT5682S_NUM_SUPPLIES, };
Il 28/10/22 22:55, Nícolas F. R. A. Prado ha scritto:
Add support for the dbvdd and ldo1-in supplies.
Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com
Reviewed-by: AngeloGioacchino Del Regno angelogioacchino.delregno@collabora.com
Add support for the dbvdd and ldo1-in supplies.
Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com ---
sound/soc/codecs/rt5682.c | 2 ++ sound/soc/codecs/rt5682.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/rt5682.c b/sound/soc/codecs/rt5682.c index 2df95e792900..f0a400285dcf 100644 --- a/sound/soc/codecs/rt5682.c +++ b/sound/soc/codecs/rt5682.c @@ -35,6 +35,8 @@ const char *rt5682_supply_names[RT5682_NUM_SUPPLIES] = { "AVDD", "MICVDD", "VBAT", + "dbvdd", + "ldo1-in", }; EXPORT_SYMBOL_GPL(rt5682_supply_names);
diff --git a/sound/soc/codecs/rt5682.h b/sound/soc/codecs/rt5682.h index 52ff0d9c36c5..d568c6993c33 100644 --- a/sound/soc/codecs/rt5682.h +++ b/sound/soc/codecs/rt5682.h @@ -1424,7 +1424,7 @@ enum { RT5682_CLK_SEL_I2S2_ASRC, };
-#define RT5682_NUM_SUPPLIES 3 +#define RT5682_NUM_SUPPLIES 5
struct rt5682_priv { struct snd_soc_component *component;
Il 28/10/22 22:55, Nícolas F. R. A. Prado ha scritto:
Add support for the dbvdd and ldo1-in supplies.
Signed-off-by: Nícolas F. R. A. Prado nfraprado@collabora.com
Reviewed-by: AngeloGioacchino Del Regno angelogioacchino.delregno@collabora.com
On Fri, Oct 28, 2022 at 04:55:38PM -0400, Nícolas F. R. A. Prado wrote:
@@ -35,6 +35,8 @@ const char *rt5682_supply_names[RT5682_NUM_SUPPLIES] = { "AVDD", "MICVDD", "VBAT",
- "dbvdd",
- "ldo1-in",
Why are we making these inconsistent in style with the other supplies?
Il 31/10/22 14:09, Mark Brown ha scritto:
On Fri, Oct 28, 2022 at 04:55:38PM -0400, Nícolas F. R. A. Prado wrote:
@@ -35,6 +35,8 @@ const char *rt5682_supply_names[RT5682_NUM_SUPPLIES] = { "AVDD", "MICVDD", "VBAT",
- "dbvdd",
- "ldo1-in",
Why are we making these inconsistent in style with the other supplies?
Right. That would be the same for rt5682s, and for the entire series. :\
Cheers, angelo
On Mon, Oct 31, 2022 at 01:09:28PM +0000, Mark Brown wrote:
On Fri, Oct 28, 2022 at 04:55:38PM -0400, Nícolas F. R. A. Prado wrote:
@@ -35,6 +35,8 @@ const char *rt5682_supply_names[RT5682_NUM_SUPPLIES] = { "AVDD", "MICVDD", "VBAT",
- "dbvdd",
- "ldo1-in",
Why are we making these inconsistent in style with the other supplies?
In short because the other supplies already have users while these are new ones. My understanding was that new supplies should have lowercase names, following DT convention. But I do see the argument on having them all be consistent for a single driver/binding. If there are no remarks from Rob or Krzysztof I can change it in the next version.
Thanks, Nícolas
On Mon, Oct 31, 2022 at 12:31:40PM -0400, Nícolas F. R. A. Prado wrote:
On Mon, Oct 31, 2022 at 01:09:28PM +0000, Mark Brown wrote:
On Fri, Oct 28, 2022 at 04:55:38PM -0400, Nícolas F. R. A. Prado wrote:
@@ -35,6 +35,8 @@ const char *rt5682_supply_names[RT5682_NUM_SUPPLIES] = { "AVDD", "MICVDD", "VBAT",
- "dbvdd",
- "ldo1-in",
Why are we making these inconsistent in style with the other supplies?
In short because the other supplies already have users while these are new ones. My understanding was that new supplies should have lowercase names, following DT convention. But I do see the argument on having them all be consistent for a single driver/binding. If there are no remarks from Rob or Krzysztof I can change it in the next version.
We want lowercase and consistency... Between the 2, I pick consistency.
Rob
On Mon, Oct 31, 2022 at 02:09:38PM -0500, Rob Herring wrote:
On Mon, Oct 31, 2022 at 12:31:40PM -0400, Nícolas F. R. A. Prado wrote:
On Mon, Oct 31, 2022 at 01:09:28PM +0000, Mark Brown wrote:
On Fri, Oct 28, 2022 at 04:55:38PM -0400, Nícolas F. R. A. Prado wrote:
@@ -35,6 +35,8 @@ const char *rt5682_supply_names[RT5682_NUM_SUPPLIES] = { "AVDD", "MICVDD", "VBAT",
- "dbvdd",
- "ldo1-in",
Why are we making these inconsistent in style with the other supplies?
In short because the other supplies already have users while these are new ones. My understanding was that new supplies should have lowercase names, following DT convention. But I do see the argument on having them all be consistent for a single driver/binding. If there are no remarks from Rob or Krzysztof I can change it in the next version.
We want lowercase and consistency... Between the 2, I pick consistency.
We could have both if we converted the existing ones to lowercase first, but as I mentioned in [1] this requires using devm_regulator_get_optional() before falling back, which seemed like an abuse of that API and to unnecessarily complicate the code.
So leaving the existing ones as they are and just keeping the consistency for the new ones seems like the way forward.
[1] https://lore.kernel.org/all/20221028211224.iiphmwrpqqs27jr4@notapiano/
Thanks, Nícolas
On Mon, Oct 31, 2022 at 03:38:10PM -0400, Nícolas F. R. A. Prado wrote:
We could have both if we converted the existing ones to lowercase first, but as I mentioned in [1] this requires using devm_regulator_get_optional() before falling back, which seemed like an abuse of that API and to unnecessarily complicate the code.
Yeah, it's definitely not what the ABI is for and probably more trouble than it's worth. We *could* probably write some helpers that handle legacy supply names to the regulator core code if someone really wanted to retire old names, that way the complication would be shared between users which seems more managable but someone would still need the time and enthusiasm to write the code.
participants (5)
-
AngeloGioacchino Del Regno
-
Krzysztof Kozlowski
-
Mark Brown
-
Nícolas F. R. A. Prado
-
Rob Herring