Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

Loading...
* Maxim MAX8998, National/TI LP3974 multi-function device

The Maxim MAX8998 is a multi-function device which includes voltage/current
regulators, real time clock, battery charging controller and several
other sub-blocks. It is interfaced using an I2C interface. Each sub-block
is addressed by the host system using different i2c slave address.

PMIC sub-block
--------------

The PMIC sub-block contains a number of voltage and current regulators,
with controllable parameters and dynamic voltage scaling capability.
In addition, it includes a real time clock and battery charging controller
as well. It is accessible at I2C address 0x66.

Required properties:
- compatible: Should be one of the following:
    - "maxim,max8998" for Maxim MAX8998
    - "national,lp3974" or "ti,lp3974" for National/TI LP3974.
- reg: Specifies the i2c slave address of the pmic block. It should be 0x66.

Optional properties:
- interrupts: Interrupt specifiers for two interrupt sources.
  - First interrupt specifier is for main interrupt.
  - Second interrupt specifier is for power-on/-off interrupt.
- max8998,pmic-buck1-dvs-gpios: GPIO specifiers for two host gpios used
  for buck 1 dvs. The format of the gpio specifier depends on the gpio
  controller.
- max8998,pmic-buck2-dvs-gpio: GPIO specifier for host gpio used
  for buck 2 dvs. The format of the gpio specifier depends on the gpio
  controller.
- max8998,pmic-buck1-default-dvs-idx: Default voltage setting selected from
  the possible 4 options selectable by the dvs gpios. The value of this
  property should be 0, 1, 2 or 3. If not specified or out of range,
  a default value of 0 is taken.
- max8998,pmic-buck2-default-dvs-idx: Default voltage setting selected from
  the possible 2 options selectable by the dvs gpios. The value of this
  property should be 0 or 1. If not specified or out of range, a default
  value of 0 is taken.
- max8998,pmic-buck-voltage-lock: If present, disallows changing of
  preprogrammed buck dvfs voltages.

Additional properties required if max8998,pmic-buck1-dvs-gpios is defined:
- max8998,pmic-buck1-dvs-voltage: An array of 4 voltage values in microvolts
  for buck1 regulator that can be selected using dvs gpio.

Additional properties required if max8998,pmic-buck2-dvs-gpio is defined:
- max8998,pmic-buck2-dvs-voltage: An array of 2 voltage values in microvolts
  for buck2 regulator that can be selected using dvs gpio.

Regulators: All the regulators of MAX8998 to be instantiated shall be
listed in a child node named 'regulators'. Each regulator is represented
by a child node of the 'regulators' node.

	regulator-name {
		/* standard regulator bindings here */
	};

Following regulators of the MAX8998 PMIC block are supported. Note that
the 'n' in regulator name, as in LDOn or BUCKn, represents the LDO or BUCK
number as described in MAX8998 datasheet.

	- LDOn
		  - valid values for n are 2 to 17
		  - Example: LDO2, LDO10, LDO17
	- BUCKn
		  - valid values for n are 1 to 4.
		  - Example: BUCK1, BUCK2, BUCK3, BUCK4

	- ENVICHG: Battery Charging Current Monitor Output. This is a fixed
		   voltage type regulator

	- ESAFEOUT1: (ldo19)
	- ESAFEOUT2: (ld020)

	- CHARGER: main battery charger current control

Standard regulator bindings are used inside regulator subnodes. Check
  Documentation/devicetree/bindings/regulator/regulator.txt
for more details.

Example:

	pmic@66 {
		compatible = "maxim,max8998-pmic";
		reg = <0x66>;
		interrupt-parent = <&wakeup_eint>;
		interrupts = <4 0>, <3 0>;

		/* Buck 1 DVS settings */
		max8998,pmic-buck1-default-dvs-idx = <0>;
		max8998,pmic-buck1-dvs-gpios = <&gpx0 0 1 0 0>, /* SET1 */
					       <&gpx0 1 1 0 0>; /* SET2 */
		max8998,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
						 <1000000>, <950000>;

		/* Buck 2 DVS settings */
		max8998,pmic-buck2-default-dvs-idx = <0>;
		max8998,pmic-buck2-dvs-gpio = <&gpx0 0 3 0 0>; /* SET3 */
		max8998,pmic-buck2-dvs-voltage = <1350000>, <1300000>;

		/* Regulators to instantiate */
		regulators {
			ldo2_reg: LDO2 {
				regulator-name = "VDD_ALIVE_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
			};

			buck1_reg: BUCK1 {
				regulator-name = "VDD_ARM_1.2V";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
			};

			charger_reg: CHARGER {
				regulator-name = "CHARGER";
				regulator-min-microamp = <90000>;
				regulator-max-microamp = <800000>;
			};
		};
	};