Skip to content

Commit

Permalink
Merge tag 'regulator-v5.11' of git://git.kernel.org/pub/scm/linux/ker…
Browse files Browse the repository at this point in the history
…nel/git/broonie/regulator

Pull regulator updates from Mark Brown:
 "This has been a quiet release for the regulator API, a few new drivers
  and the usual fixes and cleanup traffic but not much else going on:

   - Optimisations for the handling of voltage enumeration, especially
     with sparse selector sets, from Claudiu Beznea.

   - Support for several ARM SCMI regulators, Dialog DA9121, NXP PF8x00,
     Qualcomm PMX55, PM8350 and PM8350c

  The addition of the SCMI regulator driver (which controls regulators
  via system firmware) means that we've pulled in the support for the
  underlying firmware operations from the firmware tree"

* tag 'regulator-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (53 commits)
  regulator: mc13892-regulator: convert comma to semicolon
  regulator: pfuze100: Convert the driver to DT-only
  regulator: max14577: Add proper module aliases strings
  regulator: da9121: Potential Oops in da9121_assign_chip_model()
  regulator: da9121: Fix index used for DT property
  regulator: da9121: Remove uninitialised string variable
  regulator: axp20x: Fix DLDO2 voltage control register mask for AXP22x
  regulator: qcom-rpmh: Add support for PM8350/PM8350c
  regulator: dt-bindings: Add PM8350x compatibles
  regulator: da9121: include linux/gpio/consumer.h
  regulator: da9121: Mark some symbols with static keyword
  regulator: da9121: Request IRQ directly and free in release function to avoid masking race
  regulator: da9121: add interrupt support
  regulator: da9121: add mode support
  regulator: da9121: add current support
  regulator: da9121: Update registration to support multiple buck variants
  regulator: da9121: Add support for device variants via devicetree
  regulator: da9121: Add device variant descriptors
  regulator: da9121: Add device variant regmaps
  regulator: da9121: Add device variants
  ...
  • Loading branch information
torvalds committed Dec 15, 2020
2 parents a45f1d4 + 5e999f1 commit 2dda570
Show file tree
Hide file tree
Showing 37 changed files with 3,876 additions and 84 deletions.
34 changes: 34 additions & 0 deletions Documentation/devicetree/bindings/arm/arm,scmi.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,20 @@ Required properties:
- #power-domain-cells : Should be 1. Contains the device or the power
domain ID value used by SCMI commands.

Regulator bindings for the SCMI Regulator based on SCMI Message Protocol
------------------------------------------------------------
An SCMI Regulator is permanently bound to a well defined SCMI Voltage Domain,
and should be always positioned as a root regulator.
It does not support any current operation.

SCMI Regulators are grouped under a 'regulators' node which in turn is a child
of the SCMI Voltage protocol node inside the desired SCMI instance node.

This binding uses the common regulator binding[6].

Required properties:
- reg : shall identify an existent SCMI Voltage Domain.

Sensor bindings for the sensors based on SCMI Message Protocol
--------------------------------------------------------------
SCMI provides an API to access the various sensors on the SoC.
Expand Down Expand Up @@ -105,6 +119,7 @@ Required sub-node properties:
[3] Documentation/devicetree/bindings/thermal/thermal*.yaml
[4] Documentation/devicetree/bindings/sram/sram.yaml
[5] Documentation/devicetree/bindings/reset/reset.txt
[6] Documentation/devicetree/bindings/regulator/regulator.yaml

Example:

Expand Down Expand Up @@ -169,6 +184,25 @@ firmware {
reg = <0x16>;
#reset-cells = <1>;
};

scmi_voltage: protocol@17 {
reg = <0x17>;

regulators {
regulator_devX: regulator@0 {
reg = <0x0>;
regulator-max-microvolt = <3300000>;
};

regulator_devY: regulator@9 {
reg = <0x9>;
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <4200000>;
};

...
};
};
};
};

Expand Down
189 changes: 189 additions & 0 deletions Documentation/devicetree/bindings/regulator/dlg,da9121.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/dlg,da9121.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Dialog Semiconductor DA9121 voltage regulator

maintainers:
- Adam Ward <[email protected]>

description: |
Dialog Semiconductor DA9121 Single-channel 10A double-phase buck converter
Dialog Semiconductor DA9122 Double-channel 5A single-phase buck converter
Dialog Semiconductor DA9220 Double-channel 3A single-phase buck converter
Dialog Semiconductor DA9217 Single-channel 6A double-phase buck converter
Dialog Semiconductor DA9130 Single-channel 10A double-phase buck converter
Dialog Semiconductor DA9131 Double-channel 5A single-phase buck converter
Dialog Semiconductor DA9132 Double-channel 3A single-phase buck converter
Current limits
This is PER PHASE, and the current limit setting in the devices reflect
that with a maximum 10A limit. Allowing for transients at/near double
the rated current, this translates across the device range to per
channel figures as so...
| DA9121 DA9122 DA9220 DA9217 DA9140
| /DA9130 /DA9131 /DA9132
-----------------------------------------------------------------------------
Output current / channel | 10000000 5000000 3000000 6000000 40000000
Output current / phase | 5000000 5000000 3000000 3000000 9500000
-----------------------------------------------------------------------------
Min regulator-min-microvolt| 300000 300000 300000 300000 500000
Max regulator-max-microvolt| 1900000 1900000 1900000 1900000 1000000
Device hardware default | 1000000 1000000 1000000 1000000 1000000
-----------------------------------------------------------------------------
Min regulator-min-microamp | 7000000 3500000 3500000 7000000 26000000
Max regulator-max-microamp | 20000000 10000000 6000000 12000000 78000000
Device hardware default | 15000000 7500000 5500000 11000000 58000000
properties:
$nodename:
pattern: "pmic@[0-9a-f]{1,2}"
compatible:
enum:
- dlg,da9121
- dlg,da9122
- dlg,da9220
- dlg,da9217
- dlg,da9130
- dlg,da9131
- dlg,da9132
- dlg,da9140

reg:
maxItems: 1
description: Specifies the I2C slave address.

interrupts:
maxItems: 1
description: IRQ line information.

dlg,irq-polling-delay-passive-ms:
$ref: "/schemas/types.yaml#/definitions/uint32"
minimum: 1000
maximum: 10000
description: |
Specify the polling period, measured in milliseconds, between interrupt status
update checks. Range 1000-10000 ms.
regulators:
type: object
$ref: regulator.yaml#
description: |
This node defines the settings for the BUCK. The content of the
sub-node is defined by the standard binding for regulators; see regulator.yaml.
The DA9121 regulator is bound using their names listed below
buck1 - BUCK1
buck2 - BUCK2 //DA9122, DA9220, DA9131, DA9132 only
patternProperties:
"^buck([1-2])$":
type: object
$ref: regulator.yaml#

properties:
regulator-mode:
maxItems: 1
description: Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h

regulator-initial-mode:
maxItems: 1
description: Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h

enable-gpios:
maxItems: 1
description: Specify a valid GPIO for platform control of the regulator

dlg,ripple-cancel:
$ref: "/schemas/types.yaml#/definitions/uint32"
description: |
Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h
Only present on multi-channel devices (DA9122, DA9220, DA9131, DA9132)
unevaluatedProperties: false

required:
- compatible
- reg
- regulators

additionalProperties: false

examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/regulator/dlg,da9121-regulator.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
pmic@68 {
compatible = "dlg,da9121";
reg = <0x68>;
interrupt-parent = <&gpio6>;
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
dlg,irq-polling-delay-passive-ms = <2000>;
regulators {
DA9121_BUCK1: buck1 {
regulator-name = "BUCK1";
regulator-min-microvolt = <300000>;
regulator-max-microvolt = <1900000>;
regulator-min-microamp = <7000000>;
regulator-max-microamp = <20000000>;
regulator-boot-on;
regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
enable-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
};
};
};
};
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/regulator/dlg,da9121-regulator.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
pmic@68 {
compatible = "dlg,da9122";
reg = <0x68>;
interrupt-parent = <&gpio6>;
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
dlg,irq-polling-delay-passive-ms = <2000>;
regulators {
DA9122_BUCK1: buck1 {
regulator-name = "BUCK1";
regulator-min-microvolt = <300000>;
regulator-max-microvolt = <1900000>;
regulator-min-microamp = <3500000>;
regulator-max-microamp = <10000000>;
regulator-boot-on;
regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
enable-gpios = <&gpio6 1 GPIO_ACTIVE_HIGH>;
dlg,ripple-cancel = <DA9121_BUCK_RIPPLE_CANCEL_NONE>;
};
DA9122_BUCK2: buck2 {
regulator-name = "BUCK2";
regulator-min-microvolt = <300000>;
regulator-max-microvolt = <1900000>;
regulator-min-microamp = <3500000>;
regulator-max-microamp = <10000000>;
regulator-boot-on;
regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
enable-gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>;
dlg,ripple-cancel = <DA9121_BUCK_RIPPLE_CANCEL_NONE>;
};
};
};
};
...
47 changes: 47 additions & 0 deletions Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,22 @@ if:
const: regulator-fixed-clock
required:
- clocks
else:
if:
properties:
compatible:
contains:
const: regulator-fixed-domain
required:
- power-domains
- required-opps

properties:
compatible:
enum:
- regulator-fixed
- regulator-fixed-clock
- regulator-fixed-domain

regulator-name: true

Expand All @@ -46,6 +56,20 @@ properties:
is mandatory if compatible is chosen to regulator-fixed-clock.
maxItems: 1

power-domains:
description:
Power domain to use for enable control. This binding is only
available if the compatible is chosen to regulator-fixed-domain.
maxItems: 1

required-opps:
description:
Performance state to use for enable control. This binding is only
available if the compatible is chosen to regulator-fixed-domain. The
power-domain binding is mandatory if compatible is chosen to
regulator-fixed-domain.
maxItems: 1

startup-delay-us:
description: startup time in microseconds
$ref: /schemas/types.yaml#/definitions/uint32
Expand Down Expand Up @@ -89,4 +113,27 @@ examples:
gpio-open-drain;
vin-supply = <&parent_reg>;
};
reg_1v8_clk: regulator-1v8-clk {
compatible = "regulator-fixed-clock";
regulator-name = "1v8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
clocks = <&clock1>;
startup-delay-us = <70000>;
enable-active-high;
regulator-boot-on;
vin-supply = <&parent_reg>;
};
reg_1v8_domain: regulator-1v8-domain {
compatible = "regulator-fixed-domain";
regulator-name = "1v8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
power-domains = <&domain1>;
required-opps = <&domain1_state1>;
startup-delay-us = <70000>;
enable-active-high;
regulator-boot-on;
vin-supply = <&parent_reg>;
};
...
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Required properties:
name. The content of each sub-node is defined by the
standard binding for regulators; see regulator.txt.

Regualtors of MCP16502 PMIC:
Regulators 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)
Expand Down
Loading

0 comments on commit 2dda570

Please sign in to comment.