1af41e8dbSPrzemyslaw MarczakVoltage/Current regulator
2af41e8dbSPrzemyslaw Marczak
3af41e8dbSPrzemyslaw MarczakBinding:
4af41e8dbSPrzemyslaw MarczakThe regulator devices don't use the "compatible" property. The binding is done
5bf802f5dSFelix Brackby the prefix of regulator node's name, or, if this fails, by the prefix of the
6bf802f5dSFelix Brackregulator's "regulator-name" property. Usually the pmic I/O driver will provide
7af41e8dbSPrzemyslaw Marczakthe array of 'struct pmic_child_info' with the prefixes and compatible drivers.
8af41e8dbSPrzemyslaw MarczakThe bind is done by calling function: pmic_bind_childs().
9af41e8dbSPrzemyslaw MarczakExample drivers:
10af41e8dbSPrzemyslaw Marczakpmic: drivers/power/pmic/max77686.c
11af41e8dbSPrzemyslaw Marczakregulator: drivers/power/regulator/max77686.c
12af41e8dbSPrzemyslaw Marczak
13af41e8dbSPrzemyslaw MarczakFor the node name e.g.: "prefix[:alpha:]num { ... }":
14bd2259e3SFelix Brack- the driver prefix should be: "prefix" - case sensitive
15af41e8dbSPrzemyslaw Marczak- the node name's "num" is set as "dev->driver_data" on bind
16af41e8dbSPrzemyslaw Marczak
17bd2259e3SFelix BrackExample the prefix "ldo" will pass for: "ldo1", "ldo@1", "ldoreg@1, ...
18af41e8dbSPrzemyslaw Marczak
19bf802f5dSFelix BrackBinding by means of the node's name is preferred. However if the node names
20bf802f5dSFelix Brackwould produce ambiguous prefixes (like "regulator@1" and "regualtor@11") and you
21bf802f5dSFelix Brackcan't or do not want to change them then binding against the "regulator-name"
22bf802f5dSFelix Brackproperty is possible. The syntax for the prefix of the "regulator-name" property
23bf802f5dSFelix Brackis the same as the one for the regulator's node name.
24bf802f5dSFelix BrackUse case: a regulator named "regulator@1" to be bound to a driver named
25bf802f5dSFelix Brack"LDO_DRV" and a regulator named "regualator@11" to be bound to an other driver
26bf802f5dSFelix Bracknamed "BOOST_DRV". Using prefix "regualtor@1" for driver matching would load
27bf802f5dSFelix Brackthe same driver for both regulators, hence the prefix is ambiguous.
28bf802f5dSFelix Brack
29af41e8dbSPrzemyslaw MarczakOptional properties:
30bf802f5dSFelix Brack- regulator-name: a string, required by the regulator uclass, used for driver
31bf802f5dSFelix Brack                  binding if binding by node's name prefix fails
32af41e8dbSPrzemyslaw Marczak- regulator-min-microvolt: a minimum allowed Voltage value
33af41e8dbSPrzemyslaw Marczak- regulator-max-microvolt: a maximum allowed Voltage value
34af41e8dbSPrzemyslaw Marczak- regulator-min-microamp: a minimum allowed Current value
35af41e8dbSPrzemyslaw Marczak- regulator-max-microamp: a maximum allowed Current value
36af41e8dbSPrzemyslaw Marczak- regulator-always-on: regulator should never be disabled
37af41e8dbSPrzemyslaw Marczak- regulator-boot-on: enabled by bootloader/firmware
38*e66d1cb3SKrzysztof Kozlowski- regulator-ramp-delay: ramp delay for regulator (in uV/us)
39af41e8dbSPrzemyslaw Marczak
4040ade2ceSPeng FanNote
4140ade2ceSPeng FanThe "regulator-name" constraint is used for setting the device's uclass
4240ade2ceSPeng Fanplatform data '.name' field. And the regulator device name is set from
4340ade2ceSPeng Fanit's node name. If "regulator-name" is not provided in dts, node name
4440ade2ceSPeng Fanis chosen for setting the device's uclass platform data '.name' field.
4540ade2ceSPeng Fan
46af41e8dbSPrzemyslaw MarczakOther kernel-style properties, are currently not used.
47af41e8dbSPrzemyslaw Marczak
48af41e8dbSPrzemyslaw MarczakNote:
49af41e8dbSPrzemyslaw MarczakFor the regulator autoset from constraints, the framework expects that:
50af41e8dbSPrzemyslaw Marczak- regulator-min-microvolt is equal to regulator-max-microvolt
51af41e8dbSPrzemyslaw Marczak- regulator-min-microamp is equal to regulator-max-microamp
52af41e8dbSPrzemyslaw Marczak- regulator-always-on or regulator-boot-on is set
53af41e8dbSPrzemyslaw Marczak
54af41e8dbSPrzemyslaw MarczakExample:
55af41e8dbSPrzemyslaw Marczakldo0 {
56af41e8dbSPrzemyslaw Marczak	/* Optional */
5740ade2ceSPeng Fan	regulator-name = "VDDQ_EMMC_1.8V";
58af41e8dbSPrzemyslaw Marczak	regulator-min-microvolt = <1800000>;
59af41e8dbSPrzemyslaw Marczak	regulator-max-microvolt = <1800000>;
60af41e8dbSPrzemyslaw Marczak	regulator-min-microamp = <100000>;
61af41e8dbSPrzemyslaw Marczak	regulator-max-microamp = <100000>;
62af41e8dbSPrzemyslaw Marczak	regulator-always-on;
63af41e8dbSPrzemyslaw Marczak	regulator-boot-on;
64*e66d1cb3SKrzysztof Kozlowski	regulator-ramp-delay = <12000>;
65af41e8dbSPrzemyslaw Marczak};
66