[PATCH 04/11] ASoC: cs35l41: Create function for init array of Supplies

From: Lucas Tanure
Date: Tue Nov 23 2021 - 11:33:15 EST


Both ASoC and HDA system have to initialize the arrays of supplies
in the same way, so create a function for that in shared code

Signed-off-by: Lucas Tanure <tanureal@xxxxxxxxxxxxxxxxxxxxx>
---
include/sound/cs35l41.h | 5 ++++-
sound/soc/codecs/cs35l41-lib.c | 29 +++++++++++++++++++++++++++++
sound/soc/codecs/cs35l41.c | 23 +++--------------------
3 files changed, 36 insertions(+), 21 deletions(-)

diff --git a/include/sound/cs35l41.h b/include/sound/cs35l41.h
index ced80ede1def..5039e876bad1 100644
--- a/include/sound/cs35l41.h
+++ b/include/sound/cs35l41.h
@@ -536,7 +536,6 @@
#define CS35L41_NUM_OTP_MAPS 5

#define CS35L41_VALID_PDATA 0x80000000
-#define CS35L41_NUM_SUPPLIES 2

#define CS35L41_SCLK_MSTR_MASK 0x10
#define CS35L41_SCLK_MSTR_SHIFT 4
@@ -724,6 +723,8 @@
#define CS35L41_SPI_MAX_FREQ 4000000
#define CS35L41_REGSTRIDE 4

+#define CS35L41_NUM_SUPPLIES 2
+
enum cs35l41_clk_ids {
CS35L41_CLKID_SCLK = 0,
CS35L41_CLKID_LRCLK = 1,
@@ -762,4 +763,6 @@ struct cs35l41_otp_map_element_t {
extern struct regmap_config cs35l41_regmap_i2c;
extern struct regmap_config cs35l41_regmap_spi;

+int cs35l41_init_supplies(struct device *dev, struct regulator_bulk_data *supplies);
+
#endif /* __CS35L41_H */
diff --git a/sound/soc/codecs/cs35l41-lib.c b/sound/soc/codecs/cs35l41-lib.c
index 04f59cda5126..4aba0f90b876 100644
--- a/sound/soc/codecs/cs35l41-lib.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -7,6 +7,7 @@
// Author: David Rhodes <david.rhodes@xxxxxxxxxx>
// Author: Lucas Tanure <lucas.tanure@xxxxxxxxxx>

+#include <linux/regulator/consumer.h>
#include <sound/cs35l41.h>

const struct reg_default cs35l41_reg[] = {
@@ -690,6 +691,11 @@ const struct cs35l41_otp_map_element_t cs35l41_otp_map_map[CS35L41_NUM_OTP_MAPS]
},
};

+static const char * const cs35l41_supplies[CS35L41_NUM_SUPPLIES] = {
+ "VA",
+ "VP",
+};
+
struct regmap_config cs35l41_regmap_i2c = {
.reg_bits = 32,
.val_bits = 32,
@@ -720,3 +726,26 @@ struct regmap_config cs35l41_regmap_spi = {
.precious_reg = cs35l41_precious_reg,
.cache_type = REGCACHE_RBTREE,
};
+
+int cs35l41_init_supplies(struct device *dev, struct regulator_bulk_data *supplies)
+{
+ int i, ret;
+
+ for (i = 0; i < CS35L41_NUM_SUPPLIES; i++)
+ supplies[i].supply = cs35l41_supplies[i];
+
+ ret = devm_regulator_bulk_get(dev, CS35L41_NUM_SUPPLIES, supplies);
+ if (ret != 0) {
+ dev_err(dev, "Failed to request core supplies: %d\n", ret);
+ return ret;
+ }
+
+ ret = regulator_bulk_enable(CS35L41_NUM_SUPPLIES, supplies);
+ if (ret != 0) {
+ dev_err(dev, "Failed to enable core supplies: %d\n", ret);
+ return ret;
+ }
+
+ return 0;
+}
+
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index e8e997efaa8b..c8709de41aaf 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -24,11 +24,6 @@

#include "cs35l41.h"

-static const char * const cs35l41_supplies[CS35L41_NUM_SUPPLIES] = {
- "VA",
- "VP",
-};
-
struct cs35l41_pll_sysclk_config {
int freq;
int clk_cfg;
@@ -1526,7 +1521,7 @@ static int cs35l41_dsp_init(struct cs35l41_private *cs35l41)
int cs35l41_probe(struct cs35l41_private *cs35l41,
struct cs35l41_platform_data *pdata)
{
- u32 regid, reg_revid, i, mtl_revid, int_status, chipid_match;
+ u32 regid, reg_revid, mtl_revid, int_status, chipid_match;
int irq_pol = 0;
int ret;

@@ -1538,21 +1533,9 @@ int cs35l41_probe(struct cs35l41_private *cs35l41,
return ret;
}

- for (i = 0; i < CS35L41_NUM_SUPPLIES; i++)
- cs35l41->supplies[i].supply = cs35l41_supplies[i];
-
- ret = devm_regulator_bulk_get(cs35l41->dev, CS35L41_NUM_SUPPLIES,
- cs35l41->supplies);
- if (ret != 0) {
- dev_err(cs35l41->dev, "Failed to request core supplies: %d\n", ret);
+ ret = cs35l41_init_supplies(cs35l41->dev, cs35l41->supplies);
+ if (ret)
return ret;
- }
-
- ret = regulator_bulk_enable(CS35L41_NUM_SUPPLIES, cs35l41->supplies);
- if (ret != 0) {
- dev_err(cs35l41->dev, "Failed to enable core supplies: %d\n", ret);
- return ret;
- }

/* returning NULL can be an option if in stereo mode */
cs35l41->reset_gpio = devm_gpiod_get_optional(cs35l41->dev, "reset",
--
2.34.0