2023-04-05 17:17:21

by Benjamin Bara

[permalink] [raw]
Subject: [PATCH v3 0/3] regulator: da9063: disable unused voltage monitors

Hi!

Follow-up for my initial patch regarding the disabling of unused
voltage monitors. We use the PWR_OK functionality, which asserts GP_FB2
if every monitored voltage is in range. This patch should provide the
possibility to deactivate a voltage monitor from the DT if the regulator
might be disabled during run time. For this purpose, the regulator
notification support is used:
https://lore.kernel.org/all/[email protected]/

v2: https://lore.kernel.org/r/[email protected]

---
Changelog:
v3:
2:
- add clarifications, reword XVP to voltage monitoring
- improve error messages
- ensure that only one severity is set
3:
- document that ov and uv require same severity and level

v2:
- reworked solution, based on Adam Thomson's feedback

---
Benjamin Bara (3):
regulator: da9063: add voltage monitoring registers
regulator: da9063: implement setter for voltage monitoring
dt-bindings: mfd: dlg,da9063: document voltage monitoring

.../devicetree/bindings/mfd/dlg,da9063.yaml | 17 ++-
drivers/regulator/da9063-regulator.c | 147 +++++++++++++++++----
include/linux/mfd/da9063/registers.h | 23 ++++
3 files changed, 157 insertions(+), 30 deletions(-)
---
base-commit: 7e364e56293bb98cae1b55fd835f5991c4e96e7d
change-id: 20230403-da9063-disable-unused-15836e2f4539

Best regards,
--
Benjamin Bara <[email protected]>


2023-04-05 17:19:55

by Benjamin Bara

[permalink] [raw]
Subject: [PATCH v3 1/3] regulator: da9063: add voltage monitoring registers

From: Benjamin Bara <[email protected]>

Add the definitions for the registers responsible for voltage
monitoring. Add a voltage monitor enable bitfield per regulator.

Reviewed-by: Matti Vaittinen <[email protected]>
Signed-off-by: Benjamin Bara <[email protected]>
---
drivers/regulator/da9063-regulator.c | 29 +++++++++++++++++++++++++++++
include/linux/mfd/da9063/registers.h | 23 +++++++++++++++++++++++
2 files changed, 52 insertions(+)

diff --git a/drivers/regulator/da9063-regulator.c b/drivers/regulator/da9063-regulator.c
index 82f52a2a031a..1c720fc595b3 100644
--- a/drivers/regulator/da9063-regulator.c
+++ b/drivers/regulator/da9063-regulator.c
@@ -83,6 +83,9 @@ struct da9063_regulator_info {

/* DA9063 event detection bit */
struct reg_field oc_event;
+
+ /* DA9063 voltage monitor bit */
+ struct reg_field vmon;
};

/* Macros for LDO */
@@ -148,6 +151,7 @@ struct da9063_regulator {
struct regmap_field *suspend;
struct regmap_field *sleep;
struct regmap_field *suspend_sleep;
+ struct regmap_field *vmon;
};

/* Encapsulates all information for the regulators driver */
@@ -581,36 +585,42 @@ static const struct da9063_regulator_info da9063_regulator_info[] = {
da9063_buck_a_limits,
DA9063_REG_BUCK_ILIM_C, DA9063_BCORE1_ILIM_MASK),
DA9063_BUCK_COMMON_FIELDS(BCORE1),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_4, DA9063_BCORE1_MON_EN),
},
{
DA9063_BUCK(DA9063, BCORE2, 300, 10, 1570,
da9063_buck_a_limits,
DA9063_REG_BUCK_ILIM_C, DA9063_BCORE2_ILIM_MASK),
DA9063_BUCK_COMMON_FIELDS(BCORE2),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_4, DA9063_BCORE2_MON_EN),
},
{
DA9063_BUCK(DA9063, BPRO, 530, 10, 1800,
da9063_buck_a_limits,
DA9063_REG_BUCK_ILIM_B, DA9063_BPRO_ILIM_MASK),
DA9063_BUCK_COMMON_FIELDS(BPRO),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_4, DA9063_BPRO_MON_EN),
},
{
DA9063_BUCK(DA9063, BMEM, 800, 20, 3340,
da9063_buck_b_limits,
DA9063_REG_BUCK_ILIM_A, DA9063_BMEM_ILIM_MASK),
DA9063_BUCK_COMMON_FIELDS(BMEM),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_4, DA9063_BMEM_MON_EN),
},
{
DA9063_BUCK(DA9063, BIO, 800, 20, 3340,
da9063_buck_b_limits,
DA9063_REG_BUCK_ILIM_A, DA9063_BIO_ILIM_MASK),
DA9063_BUCK_COMMON_FIELDS(BIO),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_4, DA9063_BIO_MON_EN),
},
{
DA9063_BUCK(DA9063, BPERI, 800, 20, 3340,
da9063_buck_b_limits,
DA9063_REG_BUCK_ILIM_B, DA9063_BPERI_ILIM_MASK),
DA9063_BUCK_COMMON_FIELDS(BPERI),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_4, DA9063_BPERI_MON_EN),
},
{
DA9063_BUCK(DA9063, BCORES_MERGED, 300, 10, 1570,
@@ -618,6 +628,7 @@ static const struct da9063_regulator_info da9063_regulator_info[] = {
DA9063_REG_BUCK_ILIM_C, DA9063_BCORE1_ILIM_MASK),
/* BCORES_MERGED uses the same register fields as BCORE1 */
DA9063_BUCK_COMMON_FIELDS(BCORE1),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_4, DA9063_BCORE1_MON_EN),
},
{
DA9063_BUCK(DA9063, BMEM_BIO_MERGED, 800, 20, 3340,
@@ -625,47 +636,59 @@ static const struct da9063_regulator_info da9063_regulator_info[] = {
DA9063_REG_BUCK_ILIM_A, DA9063_BMEM_ILIM_MASK),
/* BMEM_BIO_MERGED uses the same register fields as BMEM */
DA9063_BUCK_COMMON_FIELDS(BMEM),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_4, DA9063_BMEM_MON_EN),
},
{
DA9063_LDO(DA9063, LDO3, 900, 20, 3440),
.oc_event = BFIELD(DA9063_REG_STATUS_D, DA9063_LDO3_LIM),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_2, DA9063_LDO3_MON_EN),
},
{
DA9063_LDO(DA9063, LDO7, 900, 50, 3600),
.oc_event = BFIELD(DA9063_REG_STATUS_D, DA9063_LDO7_LIM),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_2, DA9063_LDO7_MON_EN),
},
{
DA9063_LDO(DA9063, LDO8, 900, 50, 3600),
.oc_event = BFIELD(DA9063_REG_STATUS_D, DA9063_LDO8_LIM),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_2, DA9063_LDO8_MON_EN),
},
{
DA9063_LDO(DA9063, LDO9, 950, 50, 3600),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_3, DA9063_LDO9_MON_EN),
},
{
DA9063_LDO(DA9063, LDO11, 900, 50, 3600),
.oc_event = BFIELD(DA9063_REG_STATUS_D, DA9063_LDO11_LIM),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_3, DA9063_LDO11_MON_EN),
},

/* The following LDOs are present only on DA9063, not on DA9063L */
{
DA9063_LDO(DA9063, LDO1, 600, 20, 1860),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_2, DA9063_LDO1_MON_EN),
},
{
DA9063_LDO(DA9063, LDO2, 600, 20, 1860),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_2, DA9063_LDO2_MON_EN),
},
{
DA9063_LDO(DA9063, LDO4, 900, 20, 3440),
.oc_event = BFIELD(DA9063_REG_STATUS_D, DA9063_LDO4_LIM),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_2, DA9063_LDO4_MON_EN),
},
{
DA9063_LDO(DA9063, LDO5, 900, 50, 3600),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_2, DA9063_LDO5_MON_EN),
},
{
DA9063_LDO(DA9063, LDO6, 900, 50, 3600),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_2, DA9063_LDO6_MON_EN),
},

{
DA9063_LDO(DA9063, LDO10, 900, 50, 3600),
+ .vmon = BFIELD(DA9063_BB_REG_MON_REG_3, DA9063_LDO10_MON_EN),
},
};

@@ -932,6 +955,12 @@ static int da9063_regulator_probe(struct platform_device *pdev)
if (IS_ERR(regl->suspend_sleep))
return PTR_ERR(regl->suspend_sleep);
}
+ if (regl->info->vmon.reg) {
+ regl->vmon = devm_regmap_field_alloc(&pdev->dev,
+ da9063->regmap, regl->info->vmon);
+ if (IS_ERR(regl->vmon))
+ return PTR_ERR(regl->vmon);
+ }

/* Register regulator */
memset(&config, 0, sizeof(config));
diff --git a/include/linux/mfd/da9063/registers.h b/include/linux/mfd/da9063/registers.h
index 6e0f66a2e727..7b8364bd08a0 100644
--- a/include/linux/mfd/da9063/registers.h
+++ b/include/linux/mfd/da9063/registers.h
@@ -1040,6 +1040,29 @@
/* DA9063_REG_CONFIG_J (addr=0x10F) */
#define DA9063_TWOWIRE_TO 0x40

+/* DA9063_REG_MON_REG_2 (addr=0x115) */
+#define DA9063_LDO1_MON_EN 0x01
+#define DA9063_LDO2_MON_EN 0x02
+#define DA9063_LDO3_MON_EN 0x04
+#define DA9063_LDO4_MON_EN 0x08
+#define DA9063_LDO5_MON_EN 0x10
+#define DA9063_LDO6_MON_EN 0x20
+#define DA9063_LDO7_MON_EN 0x40
+#define DA9063_LDO8_MON_EN 0x80
+
+/* DA9063_REG_MON_REG_3 (addr=0x116) */
+#define DA9063_LDO9_MON_EN 0x01
+#define DA9063_LDO10_MON_EN 0x02
+#define DA9063_LDO11_MON_EN 0x04
+
+/* DA9063_REG_MON_REG_4 (addr=0x117) */
+#define DA9063_BCORE1_MON_EN 0x04
+#define DA9063_BCORE2_MON_EN 0x08
+#define DA9063_BPRO_MON_EN 0x10
+#define DA9063_BIO_MON_EN 0x20
+#define DA9063_BMEM_MON_EN 0x40
+#define DA9063_BPERI_MON_EN 0x80
+
/* DA9063_REG_MON_REG_5 (addr=0x116) */
#define DA9063_MON_A8_IDX_MASK 0x07
#define DA9063_MON_A8_IDX_NONE 0x00

--
2.34.1

2023-04-05 17:20:02

by Benjamin Bara

[permalink] [raw]
Subject: [PATCH v3 2/3] regulator: da9063: implement setter for voltage monitoring

From: Benjamin Bara <[email protected]>

Allow to en- and disable voltage monitoring from the device tree.
Consider that the da9063 only monitors under- *and* over-voltage
together, so both must be set to the same severity and value.

Signed-off-by: Benjamin Bara <[email protected]>
---
drivers/regulator/da9063-regulator.c | 118 ++++++++++++++++++++++++++---------
1 file changed, 90 insertions(+), 28 deletions(-)

diff --git a/drivers/regulator/da9063-regulator.c b/drivers/regulator/da9063-regulator.c
index 1c720fc595b3..6f1d77e486fc 100644
--- a/drivers/regulator/da9063-regulator.c
+++ b/drivers/regulator/da9063-regulator.c
@@ -207,6 +207,24 @@ static const unsigned int da9063_bmem_bio_merged_limits[] = {
4600000, 4800000, 5000000, 5200000, 5400000, 5600000, 5800000, 6000000
};

+static int da9063_set_xvp(struct regulator_dev *rdev, int lim_uV, int severity, bool enable)
+{
+ struct da9063_regulator *regl = rdev_get_drvdata(rdev);
+ struct device *dev = regl->hw->dev;
+
+ dev_dbg(dev, "%s: lim: %d, sev: %d, en: %d\n", regl->desc.name, lim_uV, severity, enable);
+
+ /*
+ * only support enable and disable.
+ * the da9063 offers a GPIO (GP_FB2) which is unasserted if an XV happens.
+ * therefore ignore severity here, as there might be handlers in hardware.
+ */
+ if (lim_uV)
+ return -EINVAL;
+
+ return regmap_field_write(regl->vmon, enable ? 1 : 0);
+}
+
static int da9063_buck_set_mode(struct regulator_dev *rdev, unsigned int mode)
{
struct da9063_regulator *regl = rdev_get_drvdata(rdev);
@@ -545,37 +563,41 @@ static int da9063_buck_get_current_limit(struct regulator_dev *rdev)
}

static const struct regulator_ops da9063_buck_ops = {
- .enable = regulator_enable_regmap,
- .disable = regulator_disable_regmap,
- .is_enabled = regulator_is_enabled_regmap,
- .get_voltage_sel = regulator_get_voltage_sel_regmap,
- .set_voltage_sel = regulator_set_voltage_sel_regmap,
- .list_voltage = regulator_list_voltage_linear,
- .set_current_limit = da9063_buck_set_current_limit,
- .get_current_limit = da9063_buck_get_current_limit,
- .set_mode = da9063_buck_set_mode,
- .get_mode = da9063_buck_get_mode,
- .get_status = da9063_buck_get_status,
- .set_suspend_voltage = da9063_set_suspend_voltage,
- .set_suspend_enable = da9063_suspend_enable,
- .set_suspend_disable = da9063_suspend_disable,
- .set_suspend_mode = da9063_buck_set_suspend_mode,
+ .enable = regulator_enable_regmap,
+ .disable = regulator_disable_regmap,
+ .is_enabled = regulator_is_enabled_regmap,
+ .get_voltage_sel = regulator_get_voltage_sel_regmap,
+ .set_voltage_sel = regulator_set_voltage_sel_regmap,
+ .list_voltage = regulator_list_voltage_linear,
+ .set_current_limit = da9063_buck_set_current_limit,
+ .get_current_limit = da9063_buck_get_current_limit,
+ .set_mode = da9063_buck_set_mode,
+ .get_mode = da9063_buck_get_mode,
+ .get_status = da9063_buck_get_status,
+ .set_suspend_voltage = da9063_set_suspend_voltage,
+ .set_suspend_enable = da9063_suspend_enable,
+ .set_suspend_disable = da9063_suspend_disable,
+ .set_suspend_mode = da9063_buck_set_suspend_mode,
+ .set_over_voltage_protection = da9063_set_xvp,
+ .set_under_voltage_protection = da9063_set_xvp,
};

static const struct regulator_ops da9063_ldo_ops = {
- .enable = regulator_enable_regmap,
- .disable = regulator_disable_regmap,
- .is_enabled = regulator_is_enabled_regmap,
- .get_voltage_sel = regulator_get_voltage_sel_regmap,
- .set_voltage_sel = regulator_set_voltage_sel_regmap,
- .list_voltage = regulator_list_voltage_linear,
- .set_mode = da9063_ldo_set_mode,
- .get_mode = da9063_ldo_get_mode,
- .get_status = da9063_ldo_get_status,
- .set_suspend_voltage = da9063_set_suspend_voltage,
- .set_suspend_enable = da9063_suspend_enable,
- .set_suspend_disable = da9063_suspend_disable,
- .set_suspend_mode = da9063_ldo_set_suspend_mode,
+ .enable = regulator_enable_regmap,
+ .disable = regulator_disable_regmap,
+ .is_enabled = regulator_is_enabled_regmap,
+ .get_voltage_sel = regulator_get_voltage_sel_regmap,
+ .set_voltage_sel = regulator_set_voltage_sel_regmap,
+ .list_voltage = regulator_list_voltage_linear,
+ .set_mode = da9063_ldo_set_mode,
+ .get_mode = da9063_ldo_get_mode,
+ .get_status = da9063_ldo_get_status,
+ .set_suspend_voltage = da9063_set_suspend_voltage,
+ .set_suspend_enable = da9063_suspend_enable,
+ .set_suspend_disable = da9063_suspend_disable,
+ .set_suspend_mode = da9063_ldo_set_suspend_mode,
+ .set_over_voltage_protection = da9063_set_xvp,
+ .set_under_voltage_protection = da9063_set_xvp,
};

/* Info of regulators for DA9063 */
@@ -749,6 +771,41 @@ static const struct regulator_init_data *da9063_get_regulator_initdata(
return NULL;
}

+static int da9063_check_xvp_constraints(struct regulator_config *config)
+{
+ struct da9063_regulator *regl = config->driver_data;
+ const struct regulation_constraints *constr = &config->init_data->constraints;
+ const struct notification_limit *uv_l = &constr->under_voltage_limits;
+ const struct notification_limit *ov_l = &constr->over_voltage_limits;
+
+ /* make sure that only one severity is used to clarify if unchanged, enabled or disabled */
+ if ((!!uv_l->prot + !!uv_l->err + !!uv_l->warn) > 1) {
+ dev_err(config->dev, "%s: at most one voltage monitoring severity allowed!\n",
+ regl->desc.name);
+ return -EINVAL;
+ }
+
+ /* make sure that UV and OV monitoring is set to the same severity and value */
+ if (uv_l->prot != ov_l->prot) {
+ dev_err(config->dev,
+ "%s: protection-microvolt: value must be equal for uv and ov!\n",
+ regl->desc.name);
+ return -EINVAL;
+ }
+ if (uv_l->err != ov_l->err) {
+ dev_err(config->dev, "%s: error-microvolt: value must be equal for uv and ov!\n",
+ regl->desc.name);
+ return -EINVAL;
+ }
+ if (uv_l->warn != ov_l->warn) {
+ dev_err(config->dev, "%s: warn-microvolt: value must be equal for uv and ov!\n",
+ regl->desc.name);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
static struct of_regulator_match da9063_matches[] = {
[DA9063_ID_BCORE1] = { .name = "bcore1" },
[DA9063_ID_BCORE2] = { .name = "bcore2" },
@@ -970,6 +1027,11 @@ static int da9063_regulator_probe(struct platform_device *pdev)
if (da9063_reg_matches)
config.of_node = da9063_reg_matches[id].of_node;
config.regmap = da9063->regmap;
+
+ ret = da9063_check_xvp_constraints(&config);
+ if (ret)
+ return ret;
+
regl->rdev = devm_regulator_register(&pdev->dev, &regl->desc,
&config);
if (IS_ERR(regl->rdev)) {

--
2.34.1

2023-04-05 17:21:55

by Benjamin Bara

[permalink] [raw]
Subject: [PATCH v3 3/3] dt-bindings: mfd: dlg,da9063: document voltage monitoring

From: Benjamin Bara <[email protected]>

Document that the da9063 only provides under- *and* over-voltage
monitoring in one, and therefore requires both to be configured with the
same severity and value. Add an example for clarification.

Signed-off-by: Benjamin Bara <[email protected]>
---
Documentation/devicetree/bindings/mfd/dlg,da9063.yaml | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/mfd/dlg,da9063.yaml b/Documentation/devicetree/bindings/mfd/dlg,da9063.yaml
index e8e74e91070c..c5a7e10d7d80 100644
--- a/Documentation/devicetree/bindings/mfd/dlg,da9063.yaml
+++ b/Documentation/devicetree/bindings/mfd/dlg,da9063.yaml
@@ -12,6 +12,11 @@ maintainers:
description: |
For device-tree bindings of other sub-modules refer to the binding documents
under the respective sub-system directories.
+ Using regulator-{uv,ov}-{warn,error,protection}-microvolt requires special
+ handling: First, when GP_FB2 is used, it must be ensured that there is no
+ moment where all voltage monitors are disabled. Next, as da9063 only supports
+ UV *and* OV monitoring, both must be set to the same severity and value
+ (0: disable, 1: enable).

properties:
compatible:
@@ -121,11 +126,19 @@ examples:
regulator-max-microamp = <2000000>;
regulator-boot-on;
};
+ ldo6 {
+ /* UNUSED */
+ regulator-name = "LDO_6";
+ regulator-uv-protection-microvolt = <0>;
+ regulator-ov-protection-microvolt = <0>;
+ };
ldo11 {
regulator-name = "LDO_11";
regulator-min-microvolt = <900000>;
- regulator-max-microvolt = <3600000>;
- regulator-boot-on;
+ regulator-max-microvolt = <900000>;
+ regulator-uv-protection-microvolt = <1>;
+ regulator-ov-protection-microvolt = <1>;
+ regulator-always-on;
};
};
};

--
2.34.1

2023-04-06 08:37:51

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v3 3/3] dt-bindings: mfd: dlg,da9063: document voltage monitoring

On 05/04/2023 19:14, Benjamin Bara wrote:
> From: Benjamin Bara <[email protected]>
>
> Document that the da9063 only provides under- *and* over-voltage
> monitoring in one, and therefore requires both to be configured with the
> same severity and value. Add an example for clarification.
>
> Signed-off-by: Benjamin Bara <[email protected]>

This is a friendly reminder during the review process.

It looks like you received a tag and forgot to add it.

If you do not know the process, here is a short explanation:
Please add Acked-by/Reviewed-by/Tested-by tags when posting new
versions. However, there's no need to repost patches *only* to add the
tags. The upstream maintainer will do that for acks received on the
version they apply.

https://elixir.bootlin.com/linux/v5.17/source/Documentation/process/submitting-patches.rst#L540

If a tag was not added on purpose, please state why and what changed.

Best regards,
Krzysztof

2023-04-06 08:41:22

by Benjamin Bara

[permalink] [raw]
Subject: Re: [PATCH v3 3/3] dt-bindings: mfd: dlg,da9063: document voltage monitoring

On Thu, 6 Apr 2023 at 10:28, Krzysztof Kozlowski <[email protected]> wrote:
> It looks like you received a tag and forgot to add it.
> If a tag was not added on purpose, please state why and what changed.

I slightly modified the description:
Basically clarified that both, uv and ov, must be set to the same severity and
value. I guess that wasn't very clear before.

I mentioned the change in the cover letter. Maybe I should have added it here
too, sorry for that.

Best regards,
Benjamin

2023-04-06 09:33:49

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v3 3/3] dt-bindings: mfd: dlg,da9063: document voltage monitoring

On 06/04/2023 10:38, Benjamin Bara wrote:
> On Thu, 6 Apr 2023 at 10:28, Krzysztof Kozlowski <[email protected]> wrote:
>> It looks like you received a tag and forgot to add it.
>> If a tag was not added on purpose, please state why and what changed.
>
> I slightly modified the description:
> Basically clarified that both, uv and ov, must be set to the same severity and
> value. I guess that wasn't very clear before.

That's not really a reason to drop tags.

>
> I mentioned the change in the cover letter. Maybe I should have added it here
> too, sorry for that.

Yes, the change was there, but nothing about dropping tags.

Best regards,
Krzysztof

2023-04-06 09:34:12

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v3 3/3] dt-bindings: mfd: dlg,da9063: document voltage monitoring

On 05/04/2023 19:14, Benjamin Bara wrote:
> From: Benjamin Bara <[email protected]>
>
> Document that the da9063 only provides under- *and* over-voltage
> monitoring in one, and therefore requires both to be configured with the
> same severity and value. Add an example for clarification.
>
> Signed-off-by: Benjamin Bara <[email protected]>
> ---
> Documentation/devicetree/bindings/mfd/dlg,da9063.yaml | 17 +++++++++++++++--


Acked-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Krzysztof

2023-04-11 15:39:37

by DLG Adam Ward

[permalink] [raw]
Subject: RE: [PATCH v3 0/3] regulator: da9063: disable unused voltage monitors

On 05/04/2023, 19:14, Benjamin Bara wrote:

>Hi!
>
>Follow-up for my initial patch regarding the disabling of unused
>voltage monitors. We use the PWR_OK functionality, which asserts GP_FB2
>if every monitored voltage is in range. This patch should provide the
>possibility to deactivate a voltage monitor from the DT if the regulator
>might be disabled during run time. For this purpose, the regulator
>notification support is used:
>https://lore.kernel.org/all/cover.1622628333.git.matti.vaittinen@xxxxxxxxxxxxxxxxx/
>
>v2: https://lore.kernel.org/r/20230403-da9063-disable-unused-v2-0-2f1bd2a2434a@xxxxxxxxxxx
>
>---
>Changelog:
>v3:
>2:
>- add clarifications, reword XVP to voltage monitoring
>- improve error messages
>- ensure that only one severity is set
>3:
-> document that ov and uv require same severity and level
>
>v2:
>- reworked solution, based on Adam Thomson's feedback
>
>---
>Benjamin Bara (3):
> regulator: da9063: add voltage monitoring registers
> regulator: da9063: implement setter for voltage monitoring
> dt-bindings: mfd: dlg,da9063: document voltage monitoring
>
> .../devicetree/bindings/mfd/dlg,da9063.yaml | 17 ++-
> drivers/regulator/da9063-regulator.c | 147 +++++++++++++++++----
> include/linux/mfd/da9063/registers.h | 23 ++++
> 3 files changed, 157 insertions(+), 30 deletions(-)
>---
>base-commit: 7e364e56293bb98cae1b55fd835f5991c4e96e7d
>change-id: 20230403-da9063-disable-unused-15836e2f4539
>
>Best regards,
>--
>Benjamin Bara <benjamin.bara@xxxxxxxxxxx>

Hi Benjamin,

FYI, Adam Thomson has left the company - but, being on excellent terms, kindly added his informed reading of your latest patch set to my own.

Reviewed-by: Adam Ward <[email protected]>

Thanks and kind regards,
Adam

2023-04-12 16:46:45

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH v3 0/3] regulator: da9063: disable unused voltage monitors

On Wed, 05 Apr 2023 19:14:33 +0200, Benjamin Bara wrote:
> Follow-up for my initial patch regarding the disabling of unused
> voltage monitors. We use the PWR_OK functionality, which asserts GP_FB2
> if every monitored voltage is in range. This patch should provide the
> possibility to deactivate a voltage monitor from the DT if the regulator
> might be disabled during run time. For this purpose, the regulator
> notification support is used:
> https://lore.kernel.org/all/[email protected]/
>
> [...]

Applied to

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

Thanks!

[1/3] regulator: da9063: add voltage monitoring registers
commit: 13186dae182ab1a2a52a53424672f49cf3e81f9b
[2/3] regulator: da9063: implement setter for voltage monitoring
commit: b8717a80e6ee6500ae396d21aac2a00947bba993
[3/3] dt-bindings: mfd: dlg,da9063: document voltage monitoring
commit: 0271b61ba3bb06fff4726951667f46e68412b8c2

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

2023-04-20 11:06:31

by Lee Jones

[permalink] [raw]
Subject: Re: [PATCH v3 3/3] dt-bindings: mfd: dlg,da9063: document voltage monitoring

On Wed, 05 Apr 2023, Benjamin Bara wrote:

> From: Benjamin Bara <[email protected]>
>
> Document that the da9063 only provides under- *and* over-voltage
> monitoring in one, and therefore requires both to be configured with the
> same severity and value. Add an example for clarification.
>
> Signed-off-by: Benjamin Bara <[email protected]>
> ---
> Documentation/devicetree/bindings/mfd/dlg,da9063.yaml | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)

Applied, thanks

--
Lee Jones [李琼斯]