Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

MCP16502 PMIC

Required properties:
- compatible: "microchip,mcp16502"
- reg: I2C slave address
- lpm-gpios: GPIO for LPM pin. Note that this GPIO *must* remain high during
	     suspend-to-ram, keeping the PMIC into HIBERNATE mode.
- regulators: A node that houses a sub-node for each regulator within
              the device. Each sub-node is identified using the node's
              name. The content of each sub-node is defined by the
              standard binding for regulators; see regulator.txt.

Regualtors of MCP16502 PMIC:
1) VDD_IO	- Buck (1.2 - 3.7 V)
2) VDD_DDR	- Buck (0.6 - 1.85 V)
3) VDD_CORE	- Buck (0.6 - 1.85 V)
4) VDD_OTHER	- BUCK (0.6 - 1.85 V)
5) LDO1		- LDO  (1.2 - 3.7 V)
6) LDO2		- LDO  (1.2 - 3.7 V)

Regulator modes:
2 - FPWM: higher precision, higher consumption
4 - AutoPFM: lower precision, lower consumption

Each regulator is defined using the standard binding for regulators.

Example:

mcp16502@5b {
	compatible = "microchip,mcp16502";
	reg = <0x5b>;
	status = "okay";
	lpm-gpios = <&pioBU 7 GPIO_ACTIVE_HIGH>;

	regulators {
		VDD_IO {
			regulator-name = "VDD_IO";
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <3700000>;
			regulator-initial-mode = <2>;
			regulator-allowed-modes = <2>, <4>;
			regulator-always-on;

			regulator-state-standby {
				regulator-on-in-suspend;
				regulator-mode = <4>;
			};

			regulator-state-mem {
				regulator-off-in-suspend;
				regulator-mode = <4>;
			};
		};

		VDD_DDR {
			regulator-name = "VDD_DDR";
			regulator-min-microvolt = <600000>;
			regulator-max-microvolt = <1850000>;
			regulator-initial-mode = <2>;
			regulator-allowed-modes = <2>, <4>;
			regulator-always-on;

			regulator-state-standby {
				regulator-on-in-suspend;
				regulator-mode = <4>;
			};

			regulator-state-mem {
				regulator-on-in-suspend;
				regulator-mode = <4>;
			};
		};

		VDD_CORE {
			regulator-name = "VDD_CORE";
			regulator-min-microvolt = <600000>;
			regulator-max-microvolt = <1850000>;
			regulator-initial-mode = <2>;
			regulator-allowed-modes = <2>, <4>;
			regulator-always-on;

			regulator-state-standby {
				regulator-on-in-suspend;
				regulator-mode = <4>;
			};

			regulator-state-mem {
				regulator-off-in-suspend;
				regulator-mode = <4>;
			};
		};

		VDD_OTHER {
			regulator-name = "VDD_OTHER";
			regulator-min-microvolt = <600000>;
			regulator-max-microvolt = <1850000>;
			regulator-initial-mode = <2>;
			regulator-allowed-modes = <2>, <4>;
			regulator-always-on;

			regulator-state-standby {
				regulator-on-in-suspend;
				regulator-mode = <4>;
			};

			regulator-state-mem {
				regulator-off-in-suspend;
				regulator-mode = <4>;
			};
		};

		LDO1 {
			regulator-name = "LDO1";
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <3700000>;
			regulator-always-on;

			regulator-state-standby {
				regulator-on-in-suspend;
			};

			regulator-state-mem {
				regulator-off-in-suspend;
			};
		};

		LDO2 {
			regulator-name = "LDO2";
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <3700000>;
			regulator-always-on;

			regulator-state-standby {
				regulator-on-in-suspend;
			};

			regulator-state-mem {
				regulator-off-in-suspend;
			};
		};

	};
};