Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d460fd3 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull regulator updates from Mark Brown:
 "Lots and lots of fixes from Axel and some others here, plus some
  framework enhancements which continue the theme of factoring code out
  of the drivers and into the core.

   - Initial framework support for GPIO controlled enable signals,
     saving a bunch of code in drivers.
   - Move fixed regulator enable time and voltage mapping table
     specifications to data.
   - Used some of the recent framework enhancements to make voltage
     change notifications more useful, passing the voltage in as an
     argument to the notification.
   - Fixed the pattern used for finding individual regulators on a
     device to not rely on the node name, supporting the use of multiple
     PMICs of the same type in the system.
   - New drivers for Maxim MAX77686, TI LP872x and LP8788, Samsung
     S2MPS11, and Wolfson Arizona microphone supplies and LDOs."

* tag 'regulator-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (176 commits)
  regulator: add new lp8788 regulator driver
  regulator: mc13xxx: Remove extern function declaration for mc13xxx_sw_regulator
  regulator: tps65910: set input_supply on desc unconditionally
  regulator: palmas: Fix calcuating selector in palmas_map_voltage_smps
  regulator: lp872x: Simplify implementation of lp872x_find_regulator_init_data()
  regulator: twl: Fix list_voltate for twl6030ldo_ops
  regulator: twl: Convert twl6030ldo_ops to [get|set]_voltage_sel
  regulator: twl: Fix the formula to calculate vsel and voltage for twl6030ldo
  regulator: s5m8767: Properly handle gpio_request failure
  regulator: max8997: Properly handle gpio_request failure
  regulator: tps62360: use devm_* for gpio request
  regulator: tps6586x: add support for input supply
  regulator: tps65217: Add device tree support
  regulator: aat2870: Remove unused min_uV and max_uV from struct aat2870_regulator
  regulator: aat2870: Convert to regulator_list_voltage_table
  regulator: da9052: initialize of_node param for regulator register
  regulator: Add REGULATOR_STATUS_UNDEFINED.
  regulator: Fix a typo in regulator_mode_to_status() core function.
  regulator: s2mps11: Use sec_reg_write rather than sec_reg_update when mask is 0xff
  regulator: s2mps11: Fix wrong setting for config.dev
  ...
parents 7cd58b0a 3384fb98
Loading
Loading
Loading
Loading
+77 −13
Original line number Diff line number Diff line
@@ -17,18 +17,46 @@ Required properties:
  device need to be present. The definition for each of these nodes is defined
  using the standard binding for regulators found at
  Documentation/devicetree/bindings/regulator/regulator.txt.
  The regulator is matched with the regulator-compatible.

  The valid names for regulators are:
  The valid regulator-compatible values are:
  tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1,
            vaux2, vaux33, vmmc
  tps65911: vrtc, vio, vdd1, vdd3, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5,
            ldo6, ldo7, ldo8

- xxx-supply: Input voltage supply regulator.
  These entries are require if regulators are enabled for a device. Missing of these
  properties can cause the regulator registration fails.
  If some of input supply is powered through battery or always-on supply then
  also it is require to have these parameters with proper node handle of always
  on power supply.
  tps65910:
	vcc1-supply: VDD1 input.
	vcc2-supply: VDD2 input.
	vcc3-supply: VAUX33 and VMMC input.
	vcc4-supply: VAUX1 and VAUX2 input.
	vcc5-supply: VPLL and VDAC input.
	vcc6-supply: VDIG1 and VDIG2 input.
	vcc7-supply: VRTC input.
	vccio-supply: VIO input.
  tps65911:
	vcc1-supply: VDD1 input.
	vcc2-supply: VDD2 input.
	vcc3-supply: LDO6, LDO7 and LDO8 input.
	vcc4-supply: LDO5 input.
	vcc5-supply: LDO3 and LDO4 input.
	vcc6-supply: LDO1 and LDO2 input.
	vcc7-supply: VRTC input.
	vccio-supply: VIO input.

Optional properties:
- ti,vmbch-threshold: (tps65911) main battery charged threshold
  comparator. (see VMBCH_VSEL in TPS65910 datasheet)
- ti,vmbch2-threshold: (tps65911) main battery discharged threshold
  comparator. (see VMBCH_VSEL in TPS65910 datasheet)
- ti,en-ck32k-xtal: enable external 32-kHz crystal oscillator (see CK32K_CTRL
  in TPS6591X datasheet)
- ti,en-gpio-sleep: enable sleep control for gpios
  There should be 9 entries here, one for each gpio.

@@ -56,74 +84,110 @@ Example:

		ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;

		vcc1-supply = <&reg_parent>;
		vcc2-supply = <&some_reg>;
		vcc3-supply = <...>;
		vcc4-supply = <...>;
		vcc5-supply = <...>;
		vcc6-supply = <...>;
		vcc7-supply = <...>;
		vccio-supply = <...>;

		regulators {
			vdd1_reg: vdd1 {
			#address-cells = <1>;
			#size-cells = <0>;

			vdd1_reg: regulator@0 {
				regulator-compatible = "vdd1";
				reg = <0>;
				regulator-min-microvolt = < 600000>;
				regulator-max-microvolt = <1500000>;
				regulator-always-on;
				regulator-boot-on;
				ti,regulator-ext-sleep-control = <0>;
			};
			vdd2_reg: vdd2 {
			vdd2_reg: regulator@1 {
				regulator-compatible = "vdd2";
				reg = <1>;
				regulator-min-microvolt = < 600000>;
				regulator-max-microvolt = <1500000>;
				regulator-always-on;
				regulator-boot-on;
				ti,regulator-ext-sleep-control = <4>;
			};
			vddctrl_reg: vddctrl {
			vddctrl_reg: regulator@2 {
				regulator-compatible = "vddctrl";
				reg = <2>;
				regulator-min-microvolt = < 600000>;
				regulator-max-microvolt = <1400000>;
				regulator-always-on;
				regulator-boot-on;
				ti,regulator-ext-sleep-control = <0>;
			};
			vio_reg: vio {
			vio_reg: regulator@3 {
				regulator-compatible = "vio";
				reg = <3>;
				regulator-min-microvolt = <1500000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
				ti,regulator-ext-sleep-control = <1>;
			};
			ldo1_reg: ldo1 {
			ldo1_reg: regulator@4 {
				regulator-compatible = "ldo1";
				reg = <4>;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo2_reg: ldo2 {
			ldo2_reg: regulator@5 {
				regulator-compatible = "ldo2";
				reg = <5>;
				regulator-min-microvolt = <1050000>;
				regulator-max-microvolt = <1050000>;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo3_reg: ldo3 {
			ldo3_reg: regulator@6 {
				regulator-compatible = "ldo3";
				reg = <6>;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo4_reg: ldo4 {
			ldo4_reg: regulator@7 {
				regulator-compatible = "ldo4";
				reg = <7>;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo5_reg: ldo5 {
			ldo5_reg: regulator@8 {
				regulator-compatible = "ldo5";
				reg = <8>;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo6_reg: ldo6 {
			ldo6_reg: regulator@9 {
				regulator-compatible = "ldo6";
				reg = <9>;
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo7_reg: ldo7 {
			ldo7_reg: regulator@10 {
				regulator-compatible = "ldo7";
				reg = <10>;
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				regulator-boot-on;
				ti,regulator-ext-sleep-control = <1>;
			};
			ldo8_reg: ldo8 {
			ldo8_reg: regulator@11 {
				regulator-compatible = "ldo8";
				reg = <11>;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
+2 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ Optional properties:
If this property is missing, the default assumed is Active low.
- gpio-open-drain: GPIO is open drain type.
  If this property is missing then default assumption is false.
-vin-supply: Input supply name.

Any property defined as part of the core regulator
binding, defined in regulator.txt, can also be used.
@@ -29,4 +30,5 @@ Example:
		enable-active-high;
		regulator-boot-on;
		gpio-open-drain;
		vin-supply = <&parent_reg>;
	};
+5 −0
Original line number Diff line number Diff line
@@ -10,6 +10,11 @@ Optional properties:
- regulator-always-on: boolean, regulator should never be disabled
- regulator-boot-on: bootloader/firmware enabled regulator
- <name>-supply: phandle to the parent supply/regulator node
- regulator-ramp-delay: ramp delay for regulator(in uV/uS)
- regulator-compatible: If a regulator chip contains multiple
  regulators, and if the chip's binding contains a child node that
  describes each regulator, then this property indicates which regulator
  this child node is intended to configure.

Example:

+91 −0
Original line number Diff line number Diff line
TPS65217 family of regulators

Required properties:
- compatible: "ti,tps65217"
- reg: I2C slave address
- regulators: list of regulators provided by this controller, must be named
  after their hardware counterparts: dcdc[1-3] and ldo[1-4]
- regulators: This is the list of child nodes that specify the regulator
  initialization data for defined regulators. Not all regulators for the given
  device need to be present. The definition for each of these nodes is defined
  using the standard binding for regulators found at
  Documentation/devicetree/bindings/regulator/regulator.txt.

  The valid names for regulators are:
  tps65217: dcdc1, dcdc2, dcdc3, ldo1, ldo2, ldo3 and ldo4

Each regulator is defined using the standard binding for regulators.

Example:

	tps: tps@24 {
		compatible = "ti,tps65217";

		regulators {
			#address-cells = <1>;
			#size-cells = <0>;

			dcdc1_reg: regulator@0 {
				reg = <0>;
				regulator-compatible = "dcdc1";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1800000>;
				regulator-boot-on;
				regulator-always-on;
			};

			dcdc2_reg: regulator@1 {
				reg = <1>;
				regulator-compatible = "dcdc2";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			dcdc3_reg: regulator@2 {
				reg = <2>;
				regulator-compatible = "dcdc3";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <1500000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo1_reg: regulator@3 {
				reg = <3>;
				regulator-compatible = "ldo1";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo2_reg: regulator@4 {
				reg = <4>;
				regulator-compatible = "ldo2";
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo3_reg: regulator@5 {
				reg = <5>;
				regulator-compatible = "ldo3";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo4_reg: regulator@6 {
				reg = <6>;
				regulator-compatible = "ldo4";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};
		};
	};
+62 −15
Original line number Diff line number Diff line
@@ -6,8 +6,17 @@ Required properties:
- interrupts: the interrupt outputs of the controller
- #gpio-cells: number of cells to describe a GPIO
- gpio-controller: mark the device as a GPIO controller
- regulators: list of regulators provided by this controller, must be named
  after their hardware counterparts: sm[0-2], ldo[0-9] and ldo_rtc
- regulators: list of regulators provided by this controller, must have
  property "regulator-compatible" to match their hardware counterparts:
  sm[0-2], ldo[0-9] and ldo_rtc
- sm0-supply: The input supply for the SM0.
- sm1-supply: The input supply for the SM1.
- sm2-supply: The input supply for the SM2.
- vinldo01-supply: The input supply for the LDO1 and LDO2
- vinldo23-supply: The input supply for the LDO2 and LDO3
- vinldo4-supply: The input supply for the LDO4
- vinldo678-supply: The input supply for the LDO6, LDO7 and LDO8
- vinldo9-supply: The input supply for the LDO9

Each regulator is defined using the standard binding for regulators.

@@ -21,75 +30,113 @@ Example:
		#gpio-cells = <2>;
		gpio-controller;

		sm0-supply = <&some_reg>;
		sm1-supply = <&some_reg>;
		sm2-supply = <&some_reg>;
		vinldo01-supply = <...>;
		vinldo23-supply = <...>;
		vinldo4-supply = <...>;
		vinldo678-supply = <...>;
		vinldo9-supply = <...>;

		regulators {
			sm0_reg: sm0 {
			#address-cells = <1>;
			#size-cells = <0>;

			sm0_reg: regulator@0 {
				reg = <0>;
				regulator-compatible = "sm0";
				regulator-min-microvolt = < 725000>;
				regulator-max-microvolt = <1500000>;
				regulator-boot-on;
				regulator-always-on;
			};

			sm1_reg: sm1 {
			sm1_reg: regulator@1 {
				reg = <1>;
				regulator-compatible = "sm1";
				regulator-min-microvolt = < 725000>;
				regulator-max-microvolt = <1500000>;
				regulator-boot-on;
				regulator-always-on;
			};

			sm2_reg: sm2 {
			sm2_reg: regulator@2 {
				reg = <2>;
				regulator-compatible = "sm2";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <4550000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo0_reg: ldo0 {
			ldo0_reg: regulator@3 {
				reg = <3>;
				regulator-compatible = "ldo0";
				regulator-name = "PCIE CLK";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo1_reg: ldo1 {
			ldo1_reg: regulator@4 {
				reg = <4>;
				regulator-compatible = "ldo1";
				regulator-min-microvolt = < 725000>;
				regulator-max-microvolt = <1500000>;
			};

			ldo2_reg: ldo2 {
			ldo2_reg: regulator@5 {
				reg = <5>;
				regulator-compatible = "ldo2";
				regulator-min-microvolt = < 725000>;
				regulator-max-microvolt = <1500000>;
			};

			ldo3_reg: ldo3 {
			ldo3_reg: regulator@6 {
				reg = <6>;
				regulator-compatible = "ldo3";
				regulator-min-microvolt = <1250000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo4_reg: ldo4 {
			ldo4_reg: regulator@7 {
				reg = <7>;
				regulator-compatible = "ldo4";
				regulator-min-microvolt = <1700000>;
				regulator-max-microvolt = <2475000>;
			};

			ldo5_reg: ldo5 {
			ldo5_reg: regulator@8 {
				reg = <8>;
				regulator-compatible = "ldo5";
				regulator-min-microvolt = <1250000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo6_reg: ldo6 {
			ldo6_reg: regulator@9 {
				reg = <9>;
				regulator-compatible = "ldo6";
				regulator-min-microvolt = <1250000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo7_reg: ldo7 {
			ldo7_reg: regulator@10 {
				reg = <10>;
				regulator-compatible = "ldo7";
				regulator-min-microvolt = <1250000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo8_reg: ldo8 {
			ldo8_reg: regulator@11 {
				reg = <11>;
				regulator-compatible = "ldo8";
				regulator-min-microvolt = <1250000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo9_reg: ldo9 {
			ldo9_reg: regulator@12 {
				reg = <12>;
				regulator-compatible = "ldo9";
				regulator-min-microvolt = <1250000>;
				regulator-max-microvolt = <3300000>;
			};
Loading