Commit 30d46827 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull regulator updates from Mark Brown:
 "This has not been a busy release for the regulator framework, though
  we do have the first parts of some ongoing work from Bjorn Andersson
  to allow us to support more complex modern systems with dynamic
  configuration of regulators in suspend and idle states.

   - Support for device-specific properties on regulator nodes when
     using simplified DT parsing in the core from Krzysztof Kozlowski.

   - Restructuring of the load tracking code, intended to support future
     improvements in this area for more complex system designs.

   - New drivers for Maxim MAX77843 and Mediatek MT6397.

   - Lots of smaller fixes and improvements"

* tag 'regulator-v3.20' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (29 commits)
  regulator: max77843: Add max77843 regulator driver
  regulator: Fix build breakage on !REGULATOR
  regulator: Build sysfs entries with static attribute groups
  regulator: qcom-rpm: Make it possible to specify supply
  regulator: core: Consolidate drms update handling
  regulator: qcom-rpm: signedness bug in probe()
  regulator: da9211: Add gpio control for enable/disable of buck
  regulator: qcom_rpm: Don't update vreg->uV/mV if rpm_reg_write fails
  regulator: lp872x: Remove **regulators from struct lp872x
  regulator: da9211: fix unmatched of_node
  regulator: Update documentation after renaming function argument
  regulator: axp20x: Migrate to regulator core's simplified DT parsing code
  regulator: axp20x: Fill regulators_node and of_match descriptor fields
  regulator: pfuze100-regulator: add pfuze3000 support
  regulator: max77686: Document gpio properties
  regulator: Allow parsing custom properties when using simplified DT parsing
  regulator: max77686: Add GPIO control
  regulator: Copy config passed during registration
  regulator: tps65023: Constify struct regmap_config and regulator_ops
  regulator: max8649: Constify struct regmap_config and regulator_ops
  ...
parents b0c1936c dd7c2e72
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -39,6 +39,12 @@ to get matched with their hardware counterparts as follow:
	-BUCKn	:	1-4.
  Use standard regulator bindings for it ('regulator-off-in-suspend').

  LDO20, LDO21, LDO22, BUCK8 and BUCK9 can be configured to GPIO enable
  control. To turn this feature on this property must be added to the regulator
  sub-node:
	- maxim,ena-gpios :	one GPIO specifier enable control (the gpio
				flags are actually ignored and always
				ACTIVE_HIGH is used)

Example:

@@ -65,4 +71,12 @@ Example:
				regulator-always-on;
				regulator-boot-on;
			};

			buck9_reg {
				regulator-compatible = "BUCK9";
				regulator-name = "CAM_ISP_CORE_1.2V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1200000>;
				maxim,ena-gpios = <&gpm0 3 GPIO_ACTIVE_HIGH>;
			};
	}
+6 −1
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ Required properties:
  BUCKA and BUCKB.

Optional properties:
- enable-gpios: platform gpio for control of BUCKA/BUCKB.
- Any optional property defined in regulator.txt

Example 1) DA9211
@@ -27,6 +28,7 @@ Example 1) DA9211
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <2000000>;
				regulator-max-microamp 	= <5000000>;
				enable-gpios = <&gpio 27 0>;
			};
			BUCKB {
				regulator-name = "VBUCKB";
@@ -34,11 +36,12 @@ Example 1) DA9211
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <2000000>;
				regulator-max-microamp 	= <5000000>;
				enable-gpios = <&gpio 17 0>;
			};
		};
	};

Example 2) DA92113
Example 2) DA9213
	pmic: da9213@68 {
		compatible = "dlg,da9213";
		reg = <0x68>;
@@ -51,6 +54,7 @@ Example 2) DA92113
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <3000000>;
				regulator-max-microamp 	= <6000000>;
				enable-gpios = <&gpio 27 0>;
			};
			BUCKB {
				regulator-name = "VBUCKB";
@@ -58,6 +62,7 @@ Example 2) DA92113
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <3000000>;
				regulator-max-microamp 	= <6000000>;
				enable-gpios = <&gpio 17 0>;
			};
		};
	};
+2 −2
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ Intersil ISL9305/ISL9305H voltage regulator

Required properties:

- compatible: "isl,isl9305" or "isl,isl9305h"
- compatible: "isil,isl9305" or "isil,isl9305h"
- reg: I2C slave address, usually 0x68.
- regulators: A node that houses a sub-node for each regulator within the
  device. Each sub-node is identified using the node's name, with valid
@@ -19,7 +19,7 @@ Optional properties:
Example

	pmic: isl9305@68 {
		compatible = "isl,isl9305";
		compatible = "isil,isl9305";
		reg = <0x68>;

		VINDCD1-supply = <&system_power>;
+217 −0
Original line number Diff line number Diff line
Mediatek MT6397 Regulator Driver

Required properties:
- compatible: "mediatek,mt6397-regulator"
- mt6397regulator: List of regulators provided by this controller. It is named
  according to its regulator type, buck_<name> and ldo_<name>.
  The definition for each of these nodes is defined using the standard binding
  for regulators at Documentation/devicetree/bindings/regulator/regulator.txt.

The valid names for regulators are::
BUCK:
  buck_vpca15, buck_vpca7, buck_vsramca15, buck_vsramca7, buck_vcore, buck_vgpu,
  buck_vdrm, buck_vio18
LDO:
  ldo_vtcxo, ldo_va28, ldo_vcama, ldo_vio28, ldo_vusb, ldo_vmc, ldo_vmch,
  ldo_vemc3v3, ldo_vgp1, ldo_vgp2, ldo_vgp3, ldo_vgp4, ldo_vgp5, ldo_vgp6,
  ldo_vibr

Example:
	pmic {
		compatible = "mediatek,mt6397";

		mt6397regulator: mt6397regulator {
			compatible = "mediatek,mt6397-regulator";

			mt6397_vpca15_reg: buck_vpca15 {
				regulator-compatible = "buck_vpca15";
				regulator-name = "vpca15";
				regulator-min-microvolt = < 850000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <200>;
			};

			mt6397_vpca7_reg: buck_vpca7 {
				regulator-compatible = "buck_vpca7";
				regulator-name = "vpca7";
				regulator-min-microvolt = < 850000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <115>;
			};

			mt6397_vsramca15_reg: buck_vsramca15 {
				regulator-compatible = "buck_vsramca15";
				regulator-name = "vsramca15";
				regulator-min-microvolt = < 850000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <115>;

			};

			mt6397_vsramca7_reg: buck_vsramca7 {
				regulator-compatible = "buck_vsramca7";
				regulator-name = "vsramca7";
				regulator-min-microvolt = < 850000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <115>;

			};

			mt6397_vcore_reg: buck_vcore {
				regulator-compatible = "buck_vcore";
				regulator-name = "vcore";
				regulator-min-microvolt = < 850000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <115>;
			};

			mt6397_vgpu_reg: buck_vgpu {
				regulator-compatible = "buck_vgpu";
				regulator-name = "vgpu";
				regulator-min-microvolt = < 700000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <115>;
			};

			mt6397_vdrm_reg: buck_vdrm {
				regulator-compatible = "buck_vdrm";
				regulator-name = "vdrm";
				regulator-min-microvolt = < 800000>;
				regulator-max-microvolt = <1400000>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <500>;
			};

			mt6397_vio18_reg: buck_vio18 {
				regulator-compatible = "buck_vio18";
				regulator-name = "vio18";
				regulator-min-microvolt = <1500000>;
				regulator-max-microvolt = <2120000>;
				regulator-ramp-delay = <12500>;
				regulator-enable-ramp-delay = <500>;
			};

			mt6397_vtcxo_reg: ldo_vtcxo {
				regulator-compatible = "ldo_vtcxo";
				regulator-name = "vtcxo";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-enable-ramp-delay = <90>;
			};

			mt6397_va28_reg: ldo_va28 {
				regulator-compatible = "ldo_va28";
				regulator-name = "va28";
				/* fixed output 2.8 V */
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vcama_reg: ldo_vcama {
				regulator-compatible = "ldo_vcama";
				regulator-name = "vcama";
				regulator-min-microvolt = <1500000>;
				regulator-max-microvolt = <2800000>;
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vio28_reg: ldo_vio28 {
				regulator-compatible = "ldo_vio28";
				regulator-name = "vio28";
				/* fixed output 2.8 V */
				regulator-enable-ramp-delay = <240>;
			};

			mt6397_usb_reg: ldo_vusb {
				regulator-compatible = "ldo_vusb";
				regulator-name = "vusb";
				/* fixed output 3.3 V */
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vmc_reg: ldo_vmc {
				regulator-compatible = "ldo_vmc";
				regulator-name = "vmc";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vmch_reg: ldo_vmch {
				regulator-compatible = "ldo_vmch";
				regulator-name = "vmch";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vemc_3v3_reg: ldo_vemc3v3 {
				regulator-compatible = "ldo_vemc3v3";
				regulator-name = "vemc_3v3";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vgp1_reg: ldo_vgp1 {
				regulator-compatible = "ldo_vgp1";
				regulator-name = "vcamd";
				regulator-min-microvolt = <1220000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <240>;
			};

			mt6397_vgp2_reg: ldo_vgp2 {
				egulator-compatible = "ldo_vgp2";
				regulator-name = "vcamio";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vgp3_reg: ldo_vgp3 {
				regulator-compatible = "ldo_vgp3";
				regulator-name = "vcamaf";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vgp4_reg: ldo_vgp4 {
				regulator-compatible = "ldo_vgp4";
				regulator-name = "vgp4";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vgp5_reg: ldo_vgp5 {
				regulator-compatible = "ldo_vgp5";
				regulator-name = "vgp5";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3000000>;
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vgp6_reg: ldo_vgp6 {
				regulator-compatible = "ldo_vgp6";
				regulator-name = "vgp6";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <218>;
			};

			mt6397_vibr_reg: ldo_vibr {
				regulator-compatible = "ldo_vibr";
				regulator-name = "vibr";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <218>;
			};
		};
	};
+93 −1
Original line number Diff line number Diff line
PFUZE100 family of regulators

Required properties:
- compatible: "fsl,pfuze100" or "fsl,pfuze200"
- compatible: "fsl,pfuze100", "fsl,pfuze200", "fsl,pfuze3000"
- reg: I2C slave address

Required child node:
@@ -14,6 +14,8 @@ Required child node:
  sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6
  --PFUZE200
  sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6
  --PFUZE3000
  sw1a,sw1b,sw2,sw3,swbst,vsnvs,vrefddr,vldo1,vldo2,vccsd,v33,vldo3,vldo4

Each regulator is defined using the standard binding for regulators.

@@ -205,3 +207,93 @@ Example 2: PFUZE200
			};
		};
	};

Example 3: PFUZE3000

	pmic: pfuze3000@08 {
		compatible = "fsl,pfuze3000";
		reg = <0x08>;

		regulators {
			sw1a_reg: sw1a {
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1475000>;
				regulator-boot-on;
				regulator-always-on;
				regulator-ramp-delay = <6250>;
			};
			/* use sw1c_reg to align with pfuze100/pfuze200 */
			sw1c_reg: sw1b {
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1475000>;
				regulator-boot-on;
				regulator-always-on;
				regulator-ramp-delay = <6250>;
			};

			sw2_reg: sw2 {
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			sw3a_reg: sw3 {
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1650000>;
				regulator-boot-on;
				regulator-always-on;
			};

			swbst_reg: swbst {
				regulator-min-microvolt = <5000000>;
				regulator-max-microvolt = <5150000>;
			};

			snvs_reg: vsnvs {
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3000000>;
				regulator-boot-on;
				regulator-always-on;
			};

			vref_reg: vrefddr {
				regulator-boot-on;
				regulator-always-on;
			};

			vgen1_reg: vldo1 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vgen2_reg: vldo2 {
				regulator-min-microvolt = <800000>;
				regulator-max-microvolt = <1550000>;
			};

			vgen3_reg: vccsd {
				regulator-min-microvolt = <2850000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vgen4_reg: v33 {
				regulator-min-microvolt = <2850000>;
				regulator-max-microvolt = <3300000>;
			};

			vgen5_reg: vldo3 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vgen6_reg: vldo4 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};
		};
	};
Loading