Merge remote-tracking branch 'regulator/topic/coupled' into regulator-next
[sfrench/cifs-2.6.git] / include / linux / regulator / driver.h
index 377da235711895321220522f3d3595817c1485a9..9a911bb5fb61aed06c3f026bb62fcbc0fe3525a5 100644 (file)
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * driver.h -- SoC Regulator driver support.
  *
@@ -5,18 +6,12 @@
  *
  * Author: Liam Girdwood <lrg@slimlogic.co.uk>
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
  * Regulator Driver Interface.
  */
 
 #ifndef __LINUX_REGULATOR_DRIVER_H_
 #define __LINUX_REGULATOR_DRIVER_H_
 
-#define MAX_COUPLED            2
-
 #include <linux/device.h>
 #include <linux/notifier.h>
 #include <linux/regulator/consumer.h>
@@ -286,6 +281,11 @@ enum regulator_type {
  * @vsel_range_mask: Mask for register bitfield used for range selector
  * @vsel_reg: Register for selector when using regulator_regmap_X_voltage_
  * @vsel_mask: Mask for register bitfield used for selector
+ * @vsel_step: Specify the resolution of selector stepping when setting
+ *            voltage. If 0, then no stepping is done (requested selector is
+ *            set directly), if >0 then the regulator API will ramp the
+ *            voltage up/down gradually each time increasing/decreasing the
+ *            selector by the specified step value.
  * @csel_reg: Register for current limit selector using regmap set_current_limit
  * @csel_mask: Mask for register bitfield used for current limit selector
  * @apply_reg: Register for initiate voltage change on the output when
@@ -360,6 +360,7 @@ struct regulator_desc {
        unsigned int vsel_range_mask;
        unsigned int vsel_reg;
        unsigned int vsel_mask;
+       unsigned int vsel_step;
        unsigned int csel_reg;
        unsigned int csel_mask;
        unsigned int apply_reg;
@@ -426,7 +427,8 @@ struct regulator_config {
  * incremented.
  */
 struct coupling_desc {
-       struct regulator_dev *coupled_rdevs[MAX_COUPLED];
+       struct regulator_dev **coupled_rdevs;
+       struct regulator_coupler *coupler;
        int n_resolved;
        int n_coupled;
 };
@@ -552,4 +554,5 @@ void regulator_unlock(struct regulator_dev *rdev);
  */
 int regulator_desc_list_voltage_linear_range(const struct regulator_desc *desc,
                                             unsigned int selector);
+
 #endif