mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 04:34:08 +08:00
regulator: Updates for v6.3
This has been a very quiet release for the regulator API, there's one new driver for the Maxim MAX20411, some DT schema conversions and some small tweaks and improvements but really nothing major at all. -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmPza80ACgkQJNaLcl1U h9BJkAf7B/o0QVtyCyJSsoJ9QelMjq8Pbps5aEYlwhSnqZQtJnZEcX3NucJJuLBJ IQ4K6XbDZtyODzRvB+Xy2/1QPEJC94oaxEN8Cw1rjolsJ8IL7NOa+h56gTRNouw+ 7DlbAbM3EcmwiizZT74Hw4yqYkTUWsrN0K/O5ygs5sL/QfDV1LTnWTqoympoTgeN UDk3B8VMmWmQ83i04oX/lZ28h9iKs8KVoB5rNRWHi0ypF/LMiADm1WWbhsou+vtO uJp7UzTqQiIXkLBgKv2Oz0i4cFHNFnBDyTT8M8hL76xs/R94K1gTidSMoZremJ0F RZX0UWHBK5fF24HIWKdzc+Iz57lgUA== =FSkC -----END PGP SIGNATURE----- Merge tag 'regulator-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator Pull regulator updates from Mark Brown: "This has been a very quiet release for the regulator API: there's one new driver for the Maxim MAX20411, some DT schema conversions and some small tweaks and improvements but really nothing major at all" * tag 'regulator-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (22 commits) regulator: max597x: Align for simple_mfd_i2c driver regulator: max20411: Fix off-by-one for n_voltages setting regulator: max597x: Remove unused variable regulator: tps65219: use generic set_bypass() regulator: s5m8767: Bounds check id indexing into arrays regulator: max77802: Bounds check regulator id against opmode regulator: max20411: Convert to i2c's .probe_new() regulator: scmi: Allow for zero voltage domains regulator: max20411: Directly include bitfield.h regulator: Introduce Maxim MAX20411 Step-Down converter regulator: dt-bindings: Describe Maxim MAX20411 regulator: dt-bindings: qcom-labibb: Allow regulator-common properties regulator: dt-bindings: fixed-regulator: allow gpios property regulator: tps65219: use IS_ERR() to detect an error pointer regulator: mcp16502: add enum MCP16502_REG_HPM description regulator: fixed-helper: use the correct function name in comment regulator: act8945a: fix non-kernel-doc comments dt-bindings: regulators: convert non-smd RPM Regulators bindings to dt-schema regulator: dt-bindings: Convert Fairchild FAN53555 to DT schema regulator: dt-bindings: qcom,usb-vbus-regulator: change node name ...
This commit is contained in:
commit
0175ec3a28
@ -1,117 +0,0 @@
|
||||
ACT88xx regulators
|
||||
-------------------
|
||||
|
||||
Required properties:
|
||||
- compatible: "active-semi,act8846" or "active-semi,act8865" or "active-semi,act8600"
|
||||
- reg: I2C slave address
|
||||
|
||||
Optional properties:
|
||||
- system-power-controller: Telling whether or not this pmic is controlling
|
||||
the system power. See Documentation/devicetree/bindings/power/power-controller.txt .
|
||||
- active-semi,vsel-high: Indicates the VSEL pin is high.
|
||||
If this property is missing, assume the VSEL pin is low(0).
|
||||
|
||||
Optional input supply properties:
|
||||
- for act8600:
|
||||
- vp1-supply: The input supply for DCDC_REG1
|
||||
- vp2-supply: The input supply for DCDC_REG2
|
||||
- vp3-supply: The input supply for DCDC_REG3
|
||||
- inl-supply: The input supply for LDO_REG5, LDO_REG6, LDO_REG7 and LDO_REG8
|
||||
SUDCDC_REG4, LDO_REG9 and LDO_REG10 do not have separate supplies.
|
||||
- for act8846:
|
||||
- vp1-supply: The input supply for REG1
|
||||
- vp2-supply: The input supply for REG2
|
||||
- vp3-supply: The input supply for REG3
|
||||
- vp4-supply: The input supply for REG4
|
||||
- inl1-supply: The input supply for REG5, REG6 and REG7
|
||||
- inl2-supply: The input supply for REG8 and LDO_REG9
|
||||
- inl3-supply: The input supply for REG10, REG11 and REG12
|
||||
- for act8865:
|
||||
- vp1-supply: The input supply for DCDC_REG1
|
||||
- vp2-supply: The input supply for DCDC_REG2
|
||||
- vp3-supply: The input supply for DCDC_REG3
|
||||
- inl45-supply: The input supply for LDO_REG1 and LDO_REG2
|
||||
- inl67-supply: The input supply for LDO_REG3 and LDO_REG4
|
||||
|
||||
Any standard regulator properties can be used to configure the single regulator.
|
||||
regulator-initial-mode, regulator-allowed-modes and regulator-mode could be specified
|
||||
for act8865 using mode values from dt-bindings/regulator/active-semi,8865-regulator.h
|
||||
file.
|
||||
|
||||
The valid names for regulators are:
|
||||
- for act8846:
|
||||
REG1, REG2, REG3, REG4, REG5, REG6, REG7, REG8, REG9, REG10, REG11, REG12
|
||||
- for act8865:
|
||||
DCDC_REG1, DCDC_REG2, DCDC_REG3, LDO_REG1, LDO_REG2, LDO_REG3, LDO_REG4.
|
||||
- for act8600:
|
||||
DCDC_REG1, DCDC_REG2, DCDC_REG3, SUDCDC_REG4, LDO_REG5, LDO_REG6, LDO_REG7,
|
||||
LDO_REG8, LDO_REG9, LDO_REG10,
|
||||
|
||||
Example:
|
||||
--------
|
||||
|
||||
#include <dt-bindings/regulator/active-semi,8865-regulator.h>
|
||||
|
||||
i2c1: i2c@f0018000 {
|
||||
pmic: act8865@5b {
|
||||
compatible = "active-semi,act8865";
|
||||
reg = <0x5b>;
|
||||
active-semi,vsel-high;
|
||||
|
||||
regulators {
|
||||
vcc_1v8_reg: DCDC_REG1 {
|
||||
regulator-name = "VCC_1V8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vcc_1v2_reg: DCDC_REG2 {
|
||||
regulator-name = "VCC_1V2";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-allowed-modes = <ACT8865_REGULATOR_MODE_FIXED>,
|
||||
<ACT8865_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8865_REGULATOR_MODE_FIXED>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-min-microvolt = <1150000>;
|
||||
regulator-suspend-max-microvolt = <1150000>;
|
||||
regulator-changeable-in-suspend;
|
||||
regulator-mode = <ACT8865_REGULATOR_MODE_LOWPOWER>;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_3v3_reg: DCDC_REG3 {
|
||||
regulator-name = "VCC_3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vddana_reg: LDO_REG1 {
|
||||
regulator-name = "VDDANA";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-allowed-modes = <ACT8865_REGULATOR_MODE_NORMAL>,
|
||||
<ACT8865_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8865_REGULATOR_MODE_NORMAL>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vddfuse_reg: LDO_REG2 {
|
||||
regulator-name = "FUSE_2V5";
|
||||
regulator-min-microvolt = <2500000>;
|
||||
regulator-max-microvolt = <2500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -1,113 +0,0 @@
|
||||
Device-Tree bindings for regulators of Active-semi ACT8945A Multi-Function Device
|
||||
|
||||
Required properties:
|
||||
- compatible: "active-semi,act8945a", please refer to ../mfd/act8945a.txt.
|
||||
|
||||
Optional properties:
|
||||
- active-semi,vsel-high: Indicates if the VSEL pin is set to logic-high.
|
||||
If this property is missing, assume the VSEL pin is set to logic-low.
|
||||
|
||||
Optional input supply properties:
|
||||
- vp1-supply: The input supply for REG_DCDC1
|
||||
- vp2-supply: The input supply for REG_DCDC2
|
||||
- vp3-supply: The input supply for REG_DCDC3
|
||||
- inl45-supply: The input supply for REG_LDO1 and REG_LDO2
|
||||
- inl67-supply: The input supply for REG_LDO3 and REG_LDO4
|
||||
|
||||
Any standard regulator properties can be used to configure the single regulator.
|
||||
regulator-initial-mode, regulator-allowed-modes and regulator-mode could be
|
||||
specified using mode values from dt-bindings/regulator/active-semi,8945a-regulator.h
|
||||
file.
|
||||
|
||||
The valid names for regulators are:
|
||||
REG_DCDC1, REG_DCDC2, REG_DCDC3, REG_LDO1, REG_LDO2, REG_LDO3, REG_LDO4.
|
||||
|
||||
Example:
|
||||
|
||||
#include <dt-bindings/regulator/active-semi,8945a-regulator.h>
|
||||
|
||||
pmic@5b {
|
||||
compatible = "active-semi,act8945a";
|
||||
reg = <0x5b>;
|
||||
|
||||
active-semi,vsel-high;
|
||||
|
||||
regulators {
|
||||
vdd_1v35_reg: REG_DCDC1 {
|
||||
regulator-name = "VDD_1V35";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_FIXED>,
|
||||
<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8945A_REGULATOR_MODE_FIXED>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-min-microvolt=<1400000>;
|
||||
regulator-suspend-max-microvolt=<1400000>;
|
||||
regulator-changeable-in-suspend;
|
||||
regulator-mode=<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_1v2_reg: REG_DCDC2 {
|
||||
regulator-name = "VDD_1V2";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_FIXED>,
|
||||
<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8945A_REGULATOR_MODE_FIXED>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_3v3_reg: REG_DCDC3 {
|
||||
regulator-name = "VDD_3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_fuse_reg: REG_LDO1 {
|
||||
regulator-name = "VDD_FUSE";
|
||||
regulator-min-microvolt = <2500000>;
|
||||
regulator-max-microvolt = <2500000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_NORMAL>,
|
||||
<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8945A_REGULATOR_MODE_NORMAL>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_3v3_lp_reg: REG_LDO2 {
|
||||
regulator-name = "VDD_3V3_LP";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_led_reg: REG_LDO3 {
|
||||
regulator-name = "VDD_LED";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vdd_sdhc_1v8_reg: REG_LDO4 {
|
||||
regulator-name = "VDD_SDHC_1V8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,139 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/active-semi,act8600.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Active-semi ACT8600 regulator
|
||||
|
||||
maintainers:
|
||||
- Paul Cercueil <paul@crapouillou.net>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: active-semi,act8600
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
system-power-controller:
|
||||
description:
|
||||
Indicates that the ACT8600 is responsible for powering OFF
|
||||
the system.
|
||||
type: boolean
|
||||
|
||||
active-semi,vsel-high:
|
||||
description:
|
||||
Indicates the VSEL pin is high. If this property is missing,
|
||||
the VSEL pin is assumed to be low.
|
||||
type: boolean
|
||||
|
||||
regulators:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
DCDC1:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp1-supply:
|
||||
description: Handle to the VP1 input supply
|
||||
|
||||
DCDC2:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp2-supply:
|
||||
description: Handle to the VP2 input supply
|
||||
|
||||
DCDC3:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp3-supply:
|
||||
description: Handle to the VP3 input supply
|
||||
|
||||
patternProperties:
|
||||
"^(SUDCDC_REG4|LDO_REG9|LDO_REG10)$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
"^LDO[5-8]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl-supply:
|
||||
description: Handle to the INL input supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- reg
|
||||
- compatible
|
||||
- regulators
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@5a {
|
||||
compatible = "active-semi,act8600";
|
||||
reg = <0x5a>;
|
||||
|
||||
regulators {
|
||||
SUDCDC_REG4 {
|
||||
regulator-min-microvolt = <5300000>;
|
||||
regulator-max-microvolt = <5300000>;
|
||||
inl-supply = <&vcc>;
|
||||
};
|
||||
|
||||
LDO5 {
|
||||
regulator-min-microvolt = <2500000>;
|
||||
regulator-max-microvolt = <2500000>;
|
||||
inl-supply = <&vcc>;
|
||||
};
|
||||
|
||||
LDO6 {
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
inl-supply = <&vcc>;
|
||||
};
|
||||
|
||||
LDO7 {
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
inl-supply = <&vcc>;
|
||||
};
|
||||
|
||||
LDO8 {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
inl-supply = <&vcc>;
|
||||
};
|
||||
|
||||
LDO_REG9 {
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
inl-supply = <&vcc>;
|
||||
};
|
||||
|
||||
LDO_REG10 {
|
||||
inl-supply = <&vcc>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,205 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/active-semi,act8846.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Active-semi ACT8846 regulator
|
||||
|
||||
maintainers:
|
||||
- Paul Cercueil <paul@crapouillou.net>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: active-semi,act8846
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
system-power-controller:
|
||||
description:
|
||||
Indicates that the ACT8846 is responsible for powering OFF
|
||||
the system.
|
||||
type: boolean
|
||||
|
||||
active-semi,vsel-high:
|
||||
description:
|
||||
Indicates the VSEL pin is high. If this property is missing,
|
||||
the VSEL pin is assumed to be low.
|
||||
type: boolean
|
||||
|
||||
regulators:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
REG1:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp1-supply:
|
||||
description: Handle to the VP1 input supply
|
||||
|
||||
REG2:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp2-supply:
|
||||
description: Handle to the VP2 input supply
|
||||
|
||||
REG3:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp3-supply:
|
||||
description: Handle to the VP3 input supply
|
||||
|
||||
REG4:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp4-supply:
|
||||
description: Handle to the VP4 input supply
|
||||
|
||||
patternProperties:
|
||||
"^REG[5-7]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl1-supply:
|
||||
description: Handle to the INL1 input supply
|
||||
|
||||
"^REG[8-9]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl2-supply:
|
||||
description: Handle to the INL2 input supply
|
||||
|
||||
"^REG1[0-2]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl3-supply:
|
||||
description: Handle to the INL3 input supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- reg
|
||||
- compatible
|
||||
- regulators
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@5a {
|
||||
compatible = "active-semi,act8846";
|
||||
reg = <0x5a>;
|
||||
|
||||
system-power-controller;
|
||||
|
||||
regulators {
|
||||
REG1 {
|
||||
regulator-name = "VCC_DDR";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG2 {
|
||||
regulator-name = "VCC_IO";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG3 {
|
||||
regulator-name = "VDD_LOG";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG4 {
|
||||
regulator-name = "VCC_20";
|
||||
regulator-min-microvolt = <2000000>;
|
||||
regulator-max-microvolt = <2000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG5 {
|
||||
regulator-name = "VCCIO_SD";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG6 {
|
||||
regulator-name = "VDD10_LCD";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG7 {
|
||||
regulator-name = "VCC_WL";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG8 {
|
||||
regulator-name = "VCCA_33";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG9 {
|
||||
regulator-name = "VCC_LAN";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG10 {
|
||||
regulator-name = "VDD_10";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG11 {
|
||||
regulator-name = "VCC_18";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
REG12 {
|
||||
regulator-name = "VCC18_LCD";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,158 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/active-semi,act8865.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Active-semi ACT8865 regulator
|
||||
|
||||
maintainers:
|
||||
- Paul Cercueil <paul@crapouillou.net>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: active-semi,act8865
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
system-power-controller:
|
||||
description:
|
||||
Indicates that the ACT8865 is responsible for powering OFF
|
||||
the system.
|
||||
type: boolean
|
||||
|
||||
active-semi,vsel-high:
|
||||
description:
|
||||
Indicates the VSEL pin is high. If this property is missing,
|
||||
the VSEL pin is assumed to be low.
|
||||
type: boolean
|
||||
|
||||
regulators:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
DCDC_REG1:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp1-supply:
|
||||
description: Handle to the VP1 input supply
|
||||
|
||||
DCDC_REG2:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp2-supply:
|
||||
description: Handle to the VP2 input supply
|
||||
|
||||
DCDC_REG3:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp3-supply:
|
||||
description: Handle to the VP3 input supply
|
||||
|
||||
patternProperties:
|
||||
"^LDO_REG[1-2]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl45-supply:
|
||||
description: Handle to the INL45 input supply
|
||||
|
||||
"^LDO_REG[3-4]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl67-supply:
|
||||
description: Handle to the INL67 input supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- reg
|
||||
- compatible
|
||||
- regulators
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/regulator/active-semi,8865-regulator.h>
|
||||
|
||||
i2c1 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@5b {
|
||||
compatible = "active-semi,act8865";
|
||||
reg = <0x5b>;
|
||||
active-semi,vsel-high;
|
||||
|
||||
regulators {
|
||||
DCDC_REG1 {
|
||||
regulator-name = "VCC_1V8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
DCDC_REG2 {
|
||||
regulator-name = "VCC_1V2";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-allowed-modes = <ACT8865_REGULATOR_MODE_FIXED>,
|
||||
<ACT8865_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8865_REGULATOR_MODE_FIXED>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-min-microvolt = <1150000>;
|
||||
regulator-suspend-max-microvolt = <1150000>;
|
||||
regulator-changeable-in-suspend;
|
||||
regulator-mode = <ACT8865_REGULATOR_MODE_LOWPOWER>;
|
||||
};
|
||||
};
|
||||
|
||||
DCDC_REG3 {
|
||||
regulator-name = "VCC_3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
LDO_REG1 {
|
||||
regulator-name = "VDDANA";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-allowed-modes = <ACT8865_REGULATOR_MODE_NORMAL>,
|
||||
<ACT8865_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8865_REGULATOR_MODE_NORMAL>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
LDO_REG2 {
|
||||
regulator-name = "FUSE_2V5";
|
||||
regulator-min-microvolt = <2500000>;
|
||||
regulator-max-microvolt = <2500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,258 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/active-semi,act8945a.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Active-semi ACT8945a regulator
|
||||
|
||||
maintainers:
|
||||
- Paul Cercueil <paul@crapouillou.net>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: active-semi,act8945a
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
system-power-controller:
|
||||
description:
|
||||
Indicates that the ACT8945a is responsible for powering OFF
|
||||
the system.
|
||||
type: boolean
|
||||
|
||||
active-semi,vsel-high:
|
||||
description:
|
||||
Indicates the VSEL pin is high. If this property is missing,
|
||||
the VSEL pin is assumed to be low.
|
||||
type: boolean
|
||||
|
||||
regulators:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
REG_DCDC1:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp1-supply:
|
||||
description: Handle to the VP1 input supply
|
||||
|
||||
REG_DCDC2:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp2-supply:
|
||||
description: Handle to the VP2 input supply
|
||||
|
||||
REG_DCDC3:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp3-supply:
|
||||
description: Handle to the VP3 input supply
|
||||
|
||||
patternProperties:
|
||||
"^REG_LDO[1-2]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl45-supply:
|
||||
description: Handle to the INL45 input supply
|
||||
|
||||
"^REG_LDO[3-4]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl67-supply:
|
||||
description: Handle to the INL67 input supply
|
||||
|
||||
charger:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: active-semi,act8945a-charger
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
active-semi,chglev-gpios:
|
||||
description: CGHLEV GPIO
|
||||
maxItems: 1
|
||||
|
||||
active-semi,lbo-gpios:
|
||||
description: LBO GPIO
|
||||
maxItems: 1
|
||||
|
||||
active-semi,input-voltage-threshold-microvolt:
|
||||
description: Input voltage threshold
|
||||
maxItems: 1
|
||||
|
||||
active-semi,precondition-timeout:
|
||||
description: Precondition timeout
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
active-semi,total-timeout:
|
||||
description: Total timeout
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- interrupts
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- reg
|
||||
- compatible
|
||||
- regulators
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/mfd/atmel-flexcom.h>
|
||||
#include <dt-bindings/regulator/active-semi,8945a-regulator.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@5b {
|
||||
compatible = "active-semi,act8945a";
|
||||
reg = <0x5b>;
|
||||
active-semi,vsel-high;
|
||||
|
||||
regulators {
|
||||
REG_DCDC1 {
|
||||
regulator-name = "VDD_1V35";
|
||||
regulator-min-microvolt = <1350000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_FIXED>,
|
||||
<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8945A_REGULATOR_MODE_FIXED>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-min-microvolt = <1400000>;
|
||||
regulator-suspend-max-microvolt = <1400000>;
|
||||
regulator-changeable-in-suspend;
|
||||
regulator-mode = <ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
};
|
||||
};
|
||||
|
||||
REG_DCDC2 {
|
||||
regulator-name = "VDD_1V2";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_FIXED>,
|
||||
<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8945A_REGULATOR_MODE_FIXED>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
REG_DCDC3 {
|
||||
regulator-name = "VDD_3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_FIXED>,
|
||||
<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8945A_REGULATOR_MODE_FIXED>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
REG_LDO1 {
|
||||
regulator-name = "VDD_FUSE";
|
||||
regulator-min-microvolt = <2500000>;
|
||||
regulator-max-microvolt = <2500000>;
|
||||
regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_NORMAL>,
|
||||
<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8945A_REGULATOR_MODE_NORMAL>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
REG_LDO2 {
|
||||
regulator-name = "VDD_3V3_LP";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_NORMAL>,
|
||||
<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8945A_REGULATOR_MODE_NORMAL>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
REG_LDO3 {
|
||||
regulator-name = "VDD_LED";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_NORMAL>,
|
||||
<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8945A_REGULATOR_MODE_NORMAL>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
REG_LDO4 {
|
||||
regulator-name = "VDD_SDHC_1V8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_NORMAL>,
|
||||
<ACT8945A_REGULATOR_MODE_LOWPOWER>;
|
||||
regulator-initial-mode = <ACT8945A_REGULATOR_MODE_NORMAL>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
charger {
|
||||
compatible = "active-semi,act8945a-charger";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_charger_chglev &pinctrl_charger_lbo &pinctrl_charger_irq>;
|
||||
interrupt-parent = <&pioA>;
|
||||
interrupts = <45 IRQ_TYPE_EDGE_RISING>;
|
||||
|
||||
active-semi,chglev-gpios = <&pioA 12 GPIO_ACTIVE_HIGH>;
|
||||
active-semi,lbo-gpios = <&pioA 72 GPIO_ACTIVE_LOW>;
|
||||
active-semi,input-voltage-threshold-microvolt = <6600>;
|
||||
active-semi,precondition-timeout = <40>;
|
||||
active-semi,total-timeout = <3>;
|
||||
};
|
||||
};
|
||||
};
|
@ -1,24 +0,0 @@
|
||||
Binding for Fairchild FAN53555 regulators
|
||||
|
||||
Required properties:
|
||||
- compatible: one of "fcs,fan53555", "fcs,fan53526", "silergy,syr827",
|
||||
"silergy,syr828" or "tcs,tcs4525".
|
||||
- reg: I2C address
|
||||
|
||||
Optional properties:
|
||||
- fcs,suspend-voltage-selector: declare which of the two available
|
||||
voltage selector registers should be used for the suspend
|
||||
voltage. The other one is used for the runtime voltage setting
|
||||
Possible values are either <0> or <1>
|
||||
- vin-supply: regulator supplying the vin pin
|
||||
|
||||
Example:
|
||||
|
||||
regulator@40 {
|
||||
compatible = "fcs,fan53555";
|
||||
regulator-name = "fan53555";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&parent_reg>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
};
|
@ -0,0 +1,64 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/fcs,fan53555.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Fairchild FAN53555 regulators
|
||||
|
||||
maintainers:
|
||||
- Heiko Stuebner <heiko@sntech.de>
|
||||
|
||||
allOf:
|
||||
- $ref: regulator.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- fcs,fan53555
|
||||
- fcs,fan53526
|
||||
- silergy,syr827
|
||||
- silergy,syr828
|
||||
- tcs,tcs4525
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
fcs,suspend-voltage-selector:
|
||||
description: Declares which of the two available voltage selector
|
||||
registers should be used for the suspend voltage. The other one is used
|
||||
for the runtime voltage setting.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [ 0, 1 ]
|
||||
|
||||
vin-supply:
|
||||
description: Supply for the vin pin
|
||||
|
||||
vsel-gpios:
|
||||
description: Voltage Select. When this pin is LOW, VOUT is set by the
|
||||
VSEL0 register. When this pin is HIGH, VOUT is set by the VSEL1 register.
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
regulator@40 {
|
||||
compatible = "fcs,fan53555";
|
||||
reg = <0x40>;
|
||||
regulator-name = "fan53555";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <&parent_reg>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
};
|
||||
};
|
||||
...
|
@ -35,6 +35,10 @@ allOf:
|
||||
required:
|
||||
- power-domains
|
||||
- required-opps
|
||||
- not:
|
||||
required:
|
||||
- gpio
|
||||
- gpios
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
@ -49,6 +53,9 @@ properties:
|
||||
description: gpio to use for enable control
|
||||
maxItems: 1
|
||||
|
||||
gpios:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
description:
|
||||
clock to use for enable control. This binding is only available if
|
||||
|
@ -0,0 +1,58 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/maxim,max20411.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim Integrated MAX20411 Step-Down DC-DC Converter
|
||||
|
||||
maintainers:
|
||||
- Bjorn Andersson <andersson@kernel.org>
|
||||
|
||||
description:
|
||||
The MAX20411 is a high-efficiency, DC-DC step-down converter. It provides
|
||||
configurable output voltage in the range of 0.5V to 1.275V, configurable over
|
||||
I2C.
|
||||
|
||||
allOf:
|
||||
- $ref: regulator.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max20411
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
enable-gpios:
|
||||
description: GPIO connected to the EN pin, active high
|
||||
|
||||
vdd-supply:
|
||||
description: Input supply for the device (VDD pin, 3.0V to 5.5V)
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- enable-gpios
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
regulator@39 {
|
||||
compatible = "maxim,max20411";
|
||||
reg = <0x39>;
|
||||
|
||||
enable-gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
};
|
||||
};
|
||||
...
|
@ -0,0 +1,128 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/qcom,rpm-regulator.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm RPM regulator
|
||||
|
||||
description:
|
||||
The Qualcomm RPM regulator is modelled as a subdevice of the RPM.
|
||||
|
||||
Please refer to Documentation/devicetree/bindings/soc/qcom/qcom,rpm.yaml
|
||||
for information regarding the RPM node.
|
||||
|
||||
The regulator node houses sub-nodes for each regulator within the device.
|
||||
Each sub-node is identified using the node's name, with valid values listed
|
||||
for each of the pmics below.
|
||||
|
||||
For pm8058 l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15,
|
||||
l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, s0, s1, s2, s3, s4,
|
||||
lvs0, lvs1, ncp
|
||||
|
||||
For pm8901 l0, l1, l2, l3, l4, l5, l6, s0, s1, s2, s3, s4, lvs0, lvs1, lvs2, lvs3,
|
||||
mvs
|
||||
|
||||
For pm8921 s1, s2, s3, s4, s7, s8, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
|
||||
l12, l14, l15, l16, l17, l18, l21, l22, l23, l24, l25, l26, l27, l28,
|
||||
l29, lvs1, lvs2, lvs3, lvs4, lvs5, lvs6, lvs7, usb-switch, hdmi-switch,
|
||||
ncp
|
||||
|
||||
For pm8018 s1, s2, s3, s4, s5, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
|
||||
l12, l14, lvs1
|
||||
|
||||
For smb208 s1a, s1b, s2a, s2b
|
||||
|
||||
maintainers:
|
||||
- Bjorn Andersson <andersson@kernel.org>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,rpm-pm8058-regulators
|
||||
- qcom,rpm-pm8901-regulators
|
||||
- qcom,rpm-pm8921-regulators
|
||||
- qcom,rpm-pm8018-regulators
|
||||
- qcom,rpm-smb208-regulators
|
||||
|
||||
patternProperties:
|
||||
".*-supply$":
|
||||
description: Input supply phandle(s) for this node
|
||||
|
||||
"^((s|l|lvs)[0-9]*)|(s[1-2][a-b])|(ncp)|(mvs)|(usb-switch)|(hdmi-switch)$":
|
||||
description: List of regulators and its properties
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
properties:
|
||||
bias-pull-down:
|
||||
description: enable pull down of the regulator when inactive
|
||||
type: boolean
|
||||
|
||||
qcom,switch-mode-frequency:
|
||||
description: Frequency (Hz) of the switch-mode power supply
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum:
|
||||
- 19200000
|
||||
- 9600000
|
||||
- 6400000
|
||||
- 4800000
|
||||
- 3840000
|
||||
- 3200000
|
||||
- 2740000
|
||||
- 2400000
|
||||
- 2130000
|
||||
- 1920000
|
||||
- 1750000
|
||||
- 1600000
|
||||
- 1480000
|
||||
- 1370000
|
||||
- 1280000
|
||||
- 1200000
|
||||
|
||||
qcom,force-mode:
|
||||
description: Indicates that the regulator should be forced to a particular mode
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum:
|
||||
- 0 # QCOM_RPM_FORCE_MODE_NONE do not force any mode
|
||||
- 1 # QCOM_RPM_FORCE_MODE_LPM force into low power mode
|
||||
- 2 # QCOM_RPM_FORCE_MODE_HPM force into high power mode
|
||||
- 3 # QCOM_RPM_FORCE_MODE_AUTO allow regulator to automatically select its own mode
|
||||
# based on realtime current draw, only for pm8921 smps and ftsmps
|
||||
|
||||
qcom,power-mode-hysteretic:
|
||||
description: select that the power supply should operate in hysteretic mode,
|
||||
instead of the default pwm mode
|
||||
type: boolean
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/mfd/qcom-rpm.h>
|
||||
regulators {
|
||||
compatible = "qcom,rpm-pm8921-regulators";
|
||||
vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
|
||||
|
||||
s1 {
|
||||
regulator-min-microvolt = <1225000>;
|
||||
regulator-max-microvolt = <1225000>;
|
||||
|
||||
bias-pull-down;
|
||||
|
||||
qcom,switch-mode-frequency = <3200000>;
|
||||
};
|
||||
|
||||
pm8921_s4: s4 {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
qcom,switch-mode-frequency = <1600000>;
|
||||
bias-pull-down;
|
||||
|
||||
qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
|
||||
};
|
||||
};
|
||||
...
|
@ -33,7 +33,7 @@ examples:
|
||||
pm8150b {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pm8150b_vbus: dcdc@1100 {
|
||||
pm8150b_vbus: usb-vbus-regulator@1100 {
|
||||
compatible = "qcom,pm8150b-vbus-reg";
|
||||
reg = <0x1100>;
|
||||
};
|
||||
|
@ -20,7 +20,8 @@ properties:
|
||||
|
||||
lab:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
qcom,soft-start-us:
|
||||
@ -46,7 +47,8 @@ properties:
|
||||
|
||||
ibb:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
qcom,discharge-resistor-kohms:
|
||||
|
@ -655,6 +655,14 @@ config REGULATOR_MAX20086
|
||||
protectorvia I2C bus. The regulator has 2 or 4 outputs depending on
|
||||
the device model. This driver is only capable to turn on/off them.
|
||||
|
||||
config REGULATOR_MAX20411
|
||||
tristate "Maxim MAX20411 High-Efficiency Single Step-Down Converter"
|
||||
depends on I2C
|
||||
select REGMAP_I2C
|
||||
help
|
||||
This driver controls the Maxim MAX20411 family of high-efficiency,
|
||||
syncrhonous step-down converters.
|
||||
|
||||
config REGULATOR_MAX77686
|
||||
tristate "Maxim 77686 regulator"
|
||||
depends on MFD_MAX77686 || COMPILE_TEST
|
||||
|
@ -80,6 +80,7 @@ obj-$(CONFIG_REGULATOR_MAX8973) += max8973-regulator.o
|
||||
obj-$(CONFIG_REGULATOR_MAX8997) += max8997-regulator.o
|
||||
obj-$(CONFIG_REGULATOR_MAX8998) += max8998.o
|
||||
obj-$(CONFIG_REGULATOR_MAX20086) += max20086-regulator.o
|
||||
obj-$(CONFIG_REGULATOR_MAX20411) += max20411-regulator.o
|
||||
obj-$(CONFIG_REGULATOR_MAX77686) += max77686-regulator.o
|
||||
obj-$(CONFIG_REGULATOR_MAX77693) += max77693-regulator.o
|
||||
obj-$(CONFIG_REGULATOR_MAX77802) += max77802-regulator.o
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <dt-bindings/regulator/active-semi,8945a-regulator.h>
|
||||
|
||||
/**
|
||||
/*
|
||||
* ACT8945A Global Register Map.
|
||||
*/
|
||||
#define ACT8945A_SYS_MODE 0x00
|
||||
@ -46,13 +46,13 @@
|
||||
#define ACT8945A_LDO4_CTRL 0x65
|
||||
#define ACT8945A_LDO4_SUS 0x66
|
||||
|
||||
/**
|
||||
/*
|
||||
* Field Definitions.
|
||||
*/
|
||||
#define ACT8945A_ENA 0x80 /* ON - [7] */
|
||||
#define ACT8945A_VSEL_MASK 0x3F /* VSET - [5:0] */
|
||||
|
||||
/**
|
||||
/*
|
||||
* ACT8945A Voltage Number
|
||||
*/
|
||||
#define ACT8945A_VOLTAGE_NUM 64
|
||||
|
@ -20,7 +20,7 @@ static void regulator_fixed_release(struct device *dev)
|
||||
}
|
||||
|
||||
/**
|
||||
* regulator_register_fixed_name - register a no-op fixed regulator
|
||||
* regulator_register_always_on - register an always-on regulator with a fixed name
|
||||
* @id: platform device id
|
||||
* @name: name to be used for the regulator
|
||||
* @supplies: consumers for this regulator
|
||||
|
163
drivers/regulator/max20411-regulator.c
Normal file
163
drivers/regulator/max20411-regulator.c
Normal file
@ -0,0 +1,163 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Linaro Ltd.
|
||||
*/
|
||||
|
||||
#include <linux/bitfield.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/regulator/driver.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/regulator/of_regulator.h>
|
||||
|
||||
#define MAX20411_UV_STEP 6250
|
||||
#define MAX20411_BASE_UV 243750
|
||||
#define MAX20411_MIN_SEL 41 /* 0.5V */
|
||||
#define MAX20411_MAX_SEL 165 /* 1.275V */
|
||||
#define MAX20411_VID_OFFSET 0x7
|
||||
#define MAX20411_VID_MASK 0xff
|
||||
#define MAX20411_SLEW_OFFSET 0x6
|
||||
#define MAX20411_SLEW_DVS_MASK 0xc
|
||||
#define MAX20411_SLEW_SR_MASK 0x3
|
||||
|
||||
struct max20411 {
|
||||
struct device *dev;
|
||||
struct device_node *of_node;
|
||||
struct regulator_desc desc;
|
||||
struct regulator_dev *rdev;
|
||||
struct regmap *regmap;
|
||||
};
|
||||
|
||||
static const unsigned int max20411_slew_rates[] = { 13100, 6600, 3300, 1600 };
|
||||
|
||||
static int max20411_enable_time(struct regulator_dev *rdev)
|
||||
{
|
||||
int voltage, rate, ret;
|
||||
unsigned int val;
|
||||
|
||||
/* get voltage */
|
||||
ret = regmap_read(rdev->regmap, rdev->desc->vsel_reg, &val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
val &= rdev->desc->vsel_mask;
|
||||
voltage = regulator_list_voltage_linear(rdev, val);
|
||||
|
||||
/* get rate */
|
||||
ret = regmap_read(rdev->regmap, MAX20411_SLEW_OFFSET, &val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
val = FIELD_GET(MAX20411_SLEW_SR_MASK, val);
|
||||
rate = max20411_slew_rates[val];
|
||||
|
||||
return DIV_ROUND_UP(voltage, rate);
|
||||
}
|
||||
|
||||
static const struct regmap_config max20411_regmap_config = {
|
||||
.reg_bits = 8,
|
||||
.val_bits = 8,
|
||||
.max_register = 0xe,
|
||||
};
|
||||
|
||||
static const struct regulator_ops max20411_ops = {
|
||||
.get_voltage_sel = regulator_get_voltage_sel_regmap,
|
||||
.set_voltage_sel = regulator_set_voltage_sel_regmap,
|
||||
.list_voltage = regulator_list_voltage_linear,
|
||||
.enable_time = max20411_enable_time,
|
||||
};
|
||||
|
||||
static const struct regulator_desc max20411_desc = {
|
||||
.ops = &max20411_ops,
|
||||
.owner = THIS_MODULE,
|
||||
.type = REGULATOR_VOLTAGE,
|
||||
.supply_name = "vin",
|
||||
.name = "max20411",
|
||||
|
||||
/*
|
||||
* voltage = 0.24375V + selector * 6.25mV
|
||||
* with valid selector between 41 to 165 (0.5V to 1.275V)
|
||||
*/
|
||||
.min_uV = MAX20411_BASE_UV,
|
||||
.uV_step = MAX20411_UV_STEP,
|
||||
.linear_min_sel = MAX20411_MIN_SEL,
|
||||
.n_voltages = MAX20411_MAX_SEL + 1,
|
||||
|
||||
.vsel_reg = MAX20411_VID_OFFSET,
|
||||
.vsel_mask = MAX20411_VID_MASK,
|
||||
|
||||
.ramp_reg = MAX20411_SLEW_OFFSET,
|
||||
.ramp_mask = MAX20411_SLEW_DVS_MASK,
|
||||
.ramp_delay_table = max20411_slew_rates,
|
||||
.n_ramp_values = ARRAY_SIZE(max20411_slew_rates),
|
||||
};
|
||||
|
||||
static int max20411_probe(struct i2c_client *client)
|
||||
{
|
||||
struct regulator_init_data *init_data;
|
||||
struct device *dev = &client->dev;
|
||||
struct regulator_config cfg = {};
|
||||
struct max20411 *max20411;
|
||||
|
||||
max20411 = devm_kzalloc(dev, sizeof(*max20411), GFP_KERNEL);
|
||||
if (!max20411)
|
||||
return -ENOMEM;
|
||||
|
||||
max20411->regmap = devm_regmap_init_i2c(client, &max20411_regmap_config);
|
||||
if (IS_ERR(max20411->regmap)) {
|
||||
dev_err(dev, "Failed to allocate regmap!\n");
|
||||
return PTR_ERR(max20411->regmap);
|
||||
}
|
||||
|
||||
max20411->dev = dev;
|
||||
max20411->of_node = dev->of_node;
|
||||
|
||||
max20411->desc = max20411_desc;
|
||||
init_data = of_get_regulator_init_data(max20411->dev, max20411->of_node, &max20411->desc);
|
||||
if (!init_data)
|
||||
return -ENODATA;
|
||||
|
||||
cfg.dev = max20411->dev;
|
||||
cfg.init_data = init_data;
|
||||
cfg.of_node = max20411->of_node;
|
||||
cfg.driver_data = max20411;
|
||||
|
||||
cfg.ena_gpiod = gpiod_get(max20411->dev, "enable", GPIOD_ASIS);
|
||||
if (IS_ERR(cfg.ena_gpiod))
|
||||
return dev_err_probe(dev, PTR_ERR(cfg.ena_gpiod),
|
||||
"unable to acquire enable gpio\n");
|
||||
|
||||
max20411->rdev = devm_regulator_register(max20411->dev, &max20411->desc, &cfg);
|
||||
if (IS_ERR(max20411->rdev))
|
||||
dev_err(max20411->dev, "Failed to register regulator\n");
|
||||
|
||||
return PTR_ERR_OR_ZERO(max20411->rdev);
|
||||
}
|
||||
|
||||
static const struct of_device_id of_max20411_match_tbl[] = {
|
||||
{ .compatible = "maxim,max20411", },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, of_max20411_match_tbl);
|
||||
|
||||
static const struct i2c_device_id max20411_id[] = {
|
||||
{ "max20411", 0 },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, max20411_id);
|
||||
|
||||
static struct i2c_driver max20411_i2c_driver = {
|
||||
.driver = {
|
||||
.name = "max20411",
|
||||
.of_match_table = of_max20411_match_tbl,
|
||||
},
|
||||
.probe_new = max20411_probe,
|
||||
.id_table = max20411_id,
|
||||
};
|
||||
module_i2c_driver(max20411_i2c_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
@ -357,12 +357,6 @@ static int max597x_irq_handler(int irq, struct regulator_irq_data *rid,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct regmap_config max597x_regmap_config = {
|
||||
.reg_bits = 8,
|
||||
.val_bits = 8,
|
||||
.max_register = MAX_REGISTERS,
|
||||
};
|
||||
|
||||
static int max597x_adc_range(struct regmap *regmap, const int ch,
|
||||
u32 *irng, u32 *mon_rng)
|
||||
{
|
||||
@ -431,41 +425,59 @@ static int max597x_setup_irq(struct device *dev,
|
||||
|
||||
static int max597x_regulator_probe(struct platform_device *pdev)
|
||||
{
|
||||
|
||||
|
||||
struct max597x_data *max597x = dev_get_drvdata(pdev->dev.parent);
|
||||
struct max597x_data *max597x;
|
||||
struct regmap *regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
||||
struct max597x_regulator *data;
|
||||
|
||||
struct i2c_client *i2c = to_i2c_client(pdev->dev.parent);
|
||||
struct regulator_config config = { };
|
||||
struct regulator_dev *rdev;
|
||||
struct regulator_dev *rdevs[MAX5970_NUM_SWITCHES];
|
||||
int num_switches = max597x->num_switches;
|
||||
int num_switches;
|
||||
int ret, i;
|
||||
|
||||
if (!regmap)
|
||||
return -EPROBE_DEFER;
|
||||
|
||||
max597x = devm_kzalloc(&i2c->dev, sizeof(struct max597x_data), GFP_KERNEL);
|
||||
if (!max597x)
|
||||
return -ENOMEM;
|
||||
|
||||
i2c_set_clientdata(i2c, max597x);
|
||||
|
||||
if (of_device_is_compatible(i2c->dev.of_node, "maxim,max5978"))
|
||||
max597x->num_switches = MAX597x_TYPE_MAX5978;
|
||||
else if (of_device_is_compatible(i2c->dev.of_node, "maxim,max5970"))
|
||||
max597x->num_switches = MAX597x_TYPE_MAX5970;
|
||||
else
|
||||
return -ENODEV;
|
||||
|
||||
i2c_set_clientdata(i2c, max597x);
|
||||
num_switches = max597x->num_switches;
|
||||
|
||||
for (i = 0; i < num_switches; i++) {
|
||||
data =
|
||||
devm_kzalloc(max597x->dev, sizeof(struct max597x_regulator),
|
||||
devm_kzalloc(&i2c->dev, sizeof(struct max597x_regulator),
|
||||
GFP_KERNEL);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
data->num_switches = num_switches;
|
||||
data->regmap = max597x->regmap;
|
||||
data->regmap = regmap;
|
||||
|
||||
ret = max597x_adc_range(data->regmap, i, &max597x->irng[i], &max597x->mon_rng[i]);
|
||||
ret = max597x_adc_range(regmap, i, &max597x->irng[i], &max597x->mon_rng[i]);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
data->irng = max597x->irng[i];
|
||||
data->mon_rng = max597x->mon_rng[i];
|
||||
|
||||
config.dev = max597x->dev;
|
||||
config.dev = &i2c->dev;
|
||||
config.driver_data = (void *)data;
|
||||
config.regmap = data->regmap;
|
||||
rdev = devm_regulator_register(max597x->dev,
|
||||
rdev = devm_regulator_register(&i2c->dev,
|
||||
®ulators[i], &config);
|
||||
if (IS_ERR(rdev)) {
|
||||
dev_err(max597x->dev, "failed to register regulator %s\n",
|
||||
dev_err(&i2c->dev, "failed to register regulator %s\n",
|
||||
regulators[i].name);
|
||||
return PTR_ERR(rdev);
|
||||
}
|
||||
@ -473,12 +485,12 @@ static int max597x_regulator_probe(struct platform_device *pdev)
|
||||
max597x->shunt_micro_ohms[i] = data->shunt_micro_ohms;
|
||||
}
|
||||
|
||||
if (max597x->irq) {
|
||||
if (i2c->irq) {
|
||||
ret =
|
||||
max597x_setup_irq(max597x->dev, max597x->irq, rdevs, num_switches,
|
||||
max597x_setup_irq(&i2c->dev, i2c->irq, rdevs, num_switches,
|
||||
data);
|
||||
if (ret) {
|
||||
dev_err(max597x->dev, "IRQ setup failed");
|
||||
dev_err(&i2c->dev, "IRQ setup failed");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
@ -94,9 +94,11 @@ static int max77802_set_suspend_disable(struct regulator_dev *rdev)
|
||||
{
|
||||
unsigned int val = MAX77802_OFF_PWRREQ;
|
||||
struct max77802_regulator_prv *max77802 = rdev_get_drvdata(rdev);
|
||||
int id = rdev_get_id(rdev);
|
||||
unsigned int id = rdev_get_id(rdev);
|
||||
int shift = max77802_get_opmode_shift(id);
|
||||
|
||||
if (WARN_ON_ONCE(id >= ARRAY_SIZE(max77802->opmode)))
|
||||
return -EINVAL;
|
||||
max77802->opmode[id] = val;
|
||||
return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
|
||||
rdev->desc->enable_mask, val << shift);
|
||||
@ -110,7 +112,7 @@ static int max77802_set_suspend_disable(struct regulator_dev *rdev)
|
||||
static int max77802_set_mode(struct regulator_dev *rdev, unsigned int mode)
|
||||
{
|
||||
struct max77802_regulator_prv *max77802 = rdev_get_drvdata(rdev);
|
||||
int id = rdev_get_id(rdev);
|
||||
unsigned int id = rdev_get_id(rdev);
|
||||
unsigned int val;
|
||||
int shift = max77802_get_opmode_shift(id);
|
||||
|
||||
@ -127,6 +129,9 @@ static int max77802_set_mode(struct regulator_dev *rdev, unsigned int mode)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (WARN_ON_ONCE(id >= ARRAY_SIZE(max77802->opmode)))
|
||||
return -EINVAL;
|
||||
|
||||
max77802->opmode[id] = val;
|
||||
return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
|
||||
rdev->desc->enable_mask, val << shift);
|
||||
@ -135,8 +140,10 @@ static int max77802_set_mode(struct regulator_dev *rdev, unsigned int mode)
|
||||
static unsigned max77802_get_mode(struct regulator_dev *rdev)
|
||||
{
|
||||
struct max77802_regulator_prv *max77802 = rdev_get_drvdata(rdev);
|
||||
int id = rdev_get_id(rdev);
|
||||
unsigned int id = rdev_get_id(rdev);
|
||||
|
||||
if (WARN_ON_ONCE(id >= ARRAY_SIZE(max77802->opmode)))
|
||||
return -EINVAL;
|
||||
return max77802_map_mode(max77802->opmode[id]);
|
||||
}
|
||||
|
||||
@ -160,10 +167,13 @@ static int max77802_set_suspend_mode(struct regulator_dev *rdev,
|
||||
unsigned int mode)
|
||||
{
|
||||
struct max77802_regulator_prv *max77802 = rdev_get_drvdata(rdev);
|
||||
int id = rdev_get_id(rdev);
|
||||
unsigned int id = rdev_get_id(rdev);
|
||||
unsigned int val;
|
||||
int shift = max77802_get_opmode_shift(id);
|
||||
|
||||
if (WARN_ON_ONCE(id >= ARRAY_SIZE(max77802->opmode)))
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* If the regulator has been disabled for suspend
|
||||
* then is invalid to try setting a suspend mode.
|
||||
@ -209,9 +219,11 @@ static int max77802_set_suspend_mode(struct regulator_dev *rdev,
|
||||
static int max77802_enable(struct regulator_dev *rdev)
|
||||
{
|
||||
struct max77802_regulator_prv *max77802 = rdev_get_drvdata(rdev);
|
||||
int id = rdev_get_id(rdev);
|
||||
unsigned int id = rdev_get_id(rdev);
|
||||
int shift = max77802_get_opmode_shift(id);
|
||||
|
||||
if (WARN_ON_ONCE(id >= ARRAY_SIZE(max77802->opmode)))
|
||||
return -EINVAL;
|
||||
if (max77802->opmode[id] == MAX77802_OFF_PWRREQ)
|
||||
max77802->opmode[id] = MAX77802_OPMODE_NORMAL;
|
||||
|
||||
@ -495,7 +507,7 @@ static int max77802_pmic_probe(struct platform_device *pdev)
|
||||
|
||||
for (i = 0; i < MAX77802_REG_MAX; i++) {
|
||||
struct regulator_dev *rdev;
|
||||
int id = regulators[i].id;
|
||||
unsigned int id = regulators[i].id;
|
||||
int shift = max77802_get_opmode_shift(id);
|
||||
int ret;
|
||||
|
||||
@ -513,10 +525,12 @@ static int max77802_pmic_probe(struct platform_device *pdev)
|
||||
* the hardware reports OFF as the regulator operating mode.
|
||||
* Default to operating mode NORMAL in that case.
|
||||
*/
|
||||
if (val == MAX77802_STATUS_OFF)
|
||||
max77802->opmode[id] = MAX77802_OPMODE_NORMAL;
|
||||
else
|
||||
max77802->opmode[id] = val;
|
||||
if (id < ARRAY_SIZE(max77802->opmode)) {
|
||||
if (val == MAX77802_STATUS_OFF)
|
||||
max77802->opmode[id] = MAX77802_OPMODE_NORMAL;
|
||||
else
|
||||
max77802->opmode[id] = val;
|
||||
}
|
||||
|
||||
rdev = devm_regulator_register(&pdev->dev,
|
||||
®ulators[i], &config);
|
||||
|
@ -77,6 +77,7 @@
|
||||
* @MCP16502_REG_A: active state register
|
||||
* @MCP16502_REG_LPM: low power mode state register
|
||||
* @MCP16502_REG_HIB: hibernate state register
|
||||
* @MCP16502_REG_HPM: high-performance mode register
|
||||
* @MCP16502_REG_SEQ: startup sequence register
|
||||
* @MCP16502_REG_CFG: configuration register
|
||||
*/
|
||||
|
@ -923,10 +923,14 @@ static int s5m8767_pmic_probe(struct platform_device *pdev)
|
||||
|
||||
for (i = 0; i < pdata->num_regulators; i++) {
|
||||
const struct sec_voltage_desc *desc;
|
||||
int id = pdata->regulators[i].id;
|
||||
unsigned int id = pdata->regulators[i].id;
|
||||
int enable_reg, enable_val;
|
||||
struct regulator_dev *rdev;
|
||||
|
||||
BUILD_BUG_ON(ARRAY_SIZE(regulators) != ARRAY_SIZE(reg_voltage_map));
|
||||
if (WARN_ON_ONCE(id >= ARRAY_SIZE(regulators)))
|
||||
continue;
|
||||
|
||||
desc = reg_voltage_map[id];
|
||||
if (desc) {
|
||||
regulators[id].n_voltages =
|
||||
|
@ -311,16 +311,12 @@ static int scmi_regulator_probe(struct scmi_device *sdev)
|
||||
return PTR_ERR(voltage_ops);
|
||||
|
||||
num_doms = voltage_ops->num_domains_get(ph);
|
||||
if (num_doms <= 0) {
|
||||
if (!num_doms) {
|
||||
dev_err(&sdev->dev,
|
||||
"number of voltage domains invalid\n");
|
||||
num_doms = -EINVAL;
|
||||
} else {
|
||||
dev_err(&sdev->dev,
|
||||
"failed to get voltage domains - err:%d\n",
|
||||
num_doms);
|
||||
}
|
||||
if (!num_doms)
|
||||
return 0;
|
||||
|
||||
if (num_doms < 0) {
|
||||
dev_err(&sdev->dev, "failed to get voltage domains - err:%d\n",
|
||||
num_doms);
|
||||
|
||||
return num_doms;
|
||||
}
|
||||
|
@ -173,24 +173,6 @@ static unsigned int tps65219_get_mode(struct regulator_dev *dev)
|
||||
return REGULATOR_MODE_NORMAL;
|
||||
}
|
||||
|
||||
/*
|
||||
* generic regulator_set_bypass_regmap does not fully match requirements
|
||||
* TPS65219 Requires explicitly that regulator is disabled before switch
|
||||
*/
|
||||
static int tps65219_set_bypass(struct regulator_dev *dev, bool enable)
|
||||
{
|
||||
struct tps65219 *tps = rdev_get_drvdata(dev);
|
||||
unsigned int rid = rdev_get_id(dev);
|
||||
|
||||
if (dev->desc->ops->is_enabled(dev)) {
|
||||
dev_err(tps->dev,
|
||||
"%s LDO%d enabled, must be shut down to set bypass ",
|
||||
__func__, rid);
|
||||
return -EBUSY;
|
||||
}
|
||||
return regulator_set_bypass_regmap(dev, enable);
|
||||
}
|
||||
|
||||
/* Operations permitted on BUCK1/2/3 */
|
||||
static const struct regulator_ops tps65219_bucks_ops = {
|
||||
.is_enabled = regulator_is_enabled_regmap,
|
||||
@ -217,7 +199,7 @@ static const struct regulator_ops tps65219_ldos_1_2_ops = {
|
||||
.set_voltage_sel = regulator_set_voltage_sel_regmap,
|
||||
.list_voltage = regulator_list_voltage_linear_range,
|
||||
.map_voltage = regulator_map_voltage_linear_range,
|
||||
.set_bypass = tps65219_set_bypass,
|
||||
.set_bypass = regulator_set_bypass_regmap,
|
||||
.get_bypass = regulator_get_bypass_regmap,
|
||||
};
|
||||
|
||||
@ -342,7 +324,7 @@ static int tps65219_regulator_probe(struct platform_device *pdev)
|
||||
&config);
|
||||
if (IS_ERR(rdev)) {
|
||||
dev_err(tps->dev, "failed to register %s regulator\n",
|
||||
pdev->name);
|
||||
regulators[i].name);
|
||||
return PTR_ERR(rdev);
|
||||
}
|
||||
rdevtbl[i] = rdev;
|
||||
@ -367,7 +349,7 @@ static int tps65219_regulator_probe(struct platform_device *pdev)
|
||||
irq_data[i].type = irq_type;
|
||||
|
||||
tps65219_get_rdev_by_name(irq_type->regulator_name, rdevtbl, rdev);
|
||||
if (rdev < 0) {
|
||||
if (IS_ERR(rdev)) {
|
||||
dev_err(tps->dev, "Failed to get rdev for %s\n",
|
||||
irq_type->regulator_name);
|
||||
return -EINVAL;
|
||||
|
Loading…
Reference in New Issue
Block a user