From: Antoniu Miclaus <antoniu.miclaus@analog.com>
To: <jic23@kernel.org>, <robh+dt@kernel.org>,
<krzysztof.kozlowski+dt@linaro.org>, <conor+dt@kernel.org>,
<linux-iio@vger.kernel.org>, <devicetree@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Cc: Antoniu Miclaus <antoniu.miclaus@analog.com>
Subject: [PATCH v2 2/2] drivers:iio:admv1013: add vcc regulators
Date: Thu, 27 Jul 2023 14:01:21 +0300 [thread overview]
Message-ID: <20230727110121.93546-2-antoniu.miclaus@analog.com> (raw)
In-Reply-To: <20230727110121.93546-1-antoniu.miclaus@analog.com>
Add regulators for the VCC supplies of the admv1013.
The patch aims to align the implementation with the current admv1014
driver where all the VCC supplies are handled as regulators.
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
---
no changes in v2.
drivers/iio/frequency/admv1013.c | 35 ++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/drivers/iio/frequency/admv1013.c b/drivers/iio/frequency/admv1013.c
index 9bf8337806fc..086e2f35b52c 100644
--- a/drivers/iio/frequency/admv1013.c
+++ b/drivers/iio/frequency/admv1013.c
@@ -73,6 +73,7 @@
#define ADMV1013_REG_ADDR_READ_MSK GENMASK(6, 1)
#define ADMV1013_REG_ADDR_WRITE_MSK GENMASK(22, 17)
#define ADMV1013_REG_DATA_MSK GENMASK(16, 1)
+#define ADMV1013_VCC_NUM_REGULATORS 10
enum {
ADMV1013_IQ_MODE,
@@ -96,6 +97,7 @@ struct admv1013_state {
/* Protect against concurrent accesses to the device and to data */
struct mutex lock;
struct regulator *reg;
+ struct regulator_bulk_data vcc_regs[ADMV1013_VCC_NUM_REGULATORS];
struct notifier_block nb;
unsigned int input_mode;
unsigned int quad_se_mode;
@@ -379,6 +381,11 @@ static const struct iio_info admv1013_info = {
.debugfs_reg_access = &admv1013_reg_access,
};
+static const char * const admv1013_reg_name[] = {
+ "vcc-drv", "vcc2-drv", "vcc-vva", "vcc-amp1", "vcc-amp2",
+ "vcc-env", "vcc-bg", "vcc-bg2", "vcc-mixer", "vcc-quad"
+};
+
static int admv1013_freq_change(struct notifier_block *nb, unsigned long action, void *data)
{
struct admv1013_state *st = container_of(nb, struct admv1013_state, nb);
@@ -495,6 +502,11 @@ static void admv1013_reg_disable(void *data)
regulator_disable(data);
}
+static void admv1013_vcc_reg_disable(void *data)
+{
+ regulator_bulk_disable(ADMV1013_VCC_NUM_REGULATORS, data);
+}
+
static void admv1013_powerdown(void *data)
{
unsigned int enable_reg, enable_reg_msk;
@@ -520,6 +532,7 @@ static void admv1013_powerdown(void *data)
static int admv1013_properties_parse(struct admv1013_state *st)
{
int ret;
+ unsigned int i;
const char *str;
struct spi_device *spi = st->spi;
@@ -554,6 +567,17 @@ static int admv1013_properties_parse(struct admv1013_state *st)
return dev_err_probe(&spi->dev, PTR_ERR(st->reg),
"failed to get the common-mode voltage\n");
+ for (i = 0; i < ADMV1013_VCC_NUM_REGULATORS; ++i)
+ st->vcc_regs[i].supply = admv1013_reg_name[i];
+
+ ret = devm_regulator_bulk_get(&st->spi->dev,
+ ADMV1013_VCC_NUM_REGULATORS,
+ st->vcc_regs);
+ if (ret) {
+ dev_err(&spi->dev, "Failed to request VCC regulators");
+ return ret;
+ }
+
return 0;
}
@@ -591,6 +615,17 @@ static int admv1013_probe(struct spi_device *spi)
if (ret)
return ret;
+ ret = regulator_bulk_enable(ADMV1013_VCC_NUM_REGULATORS, st->vcc_regs);
+ if (ret) {
+ dev_err(&spi->dev, "Failed to enable regulators");
+ return ret;
+ }
+
+ ret = devm_add_action_or_reset(&spi->dev, admv1013_vcc_reg_disable,
+ st->vcc_regs);
+ if (ret)
+ return ret;
+
st->clkin = devm_clk_get_enabled(&spi->dev, "lo_in");
if (IS_ERR(st->clkin))
return dev_err_probe(&spi->dev, PTR_ERR(st->clkin),
--
2.41.0
next prev parent reply other threads:[~2023-07-27 11:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-27 11:01 [PATCH v2 1/2] dt-bindings:iio:frequency:admv1013: add vcc regs Antoniu Miclaus
2023-07-27 11:01 ` Antoniu Miclaus [this message]
2023-07-27 11:07 ` [PATCH v2 2/2] drivers:iio:admv1013: add vcc regulators Krzysztof Kozlowski
2023-07-29 14:06 ` Jonathan Cameron
2023-07-27 11:06 ` [PATCH v2 1/2] dt-bindings:iio:frequency:admv1013: add vcc regs Krzysztof Kozlowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230727110121.93546-2-antoniu.miclaus@analog.com \
--to=antoniu.miclaus@analog.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jic23@kernel.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox