summaryrefslogtreecommitdiff
path: root/Documentation/devicetree
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2026-10-22 06:59:20 -1000
committerLinus Torvalds <torvalds@linux-foundation.org>2026-10-22 06:59:20 -1000
commitbfa231bb4c7eae56b9967da19d1678bf0847259d (patch)
tree857a1be5784d9e9600ea1dac5fcd6e4bd67a7eec /Documentation/devicetree
parent74b1dbf6f236f4fe88bd1077ae4657ca4b2c339e (diff)
parent47f16cf7a6017212230985f6bc7f1b55b6d234d9 (diff)
Merge tag 'gpio-updates-for-v7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux
Pull gpio updates from Bartosz Golaszewski: "Nothing stands out as particularly interesting, it's been a calm cycle. We have three new drivers, support for more models and lots of updates across many modules (details are in the signed tag as usual). There are also some minor changes and additions to the in-kernel GPIO API. GPIO core: - provide a new controller API: gpiochip_generic_get_config() - return -EOPNOTSUPP instead of -ENODEV to user-space if it requests hardware timestamping on systems where it's unavailable (no user-space regressions reported) New drivers: - add a driver for ROHM BD73800 PMIC GPIO controller - add a driver for Axiado AX3005 SGPIO controller - add a driver for Analog Devices AD7768 GPIO controller New hardware support: - extend gpio-rcar with support for R-Car X5H (R8A78000) - extend gpio-tegra186 with support for Tegra 268 Driver changes: - refactor and improve gpio-rtd1625: switch to modern or better fitting interfaces and improve coding style - improve error handling of return values of platform_get_irq_optional() in several drivers - normalize the return value of the gpio_chip::get() callback in gpio-siox in order to not propagate invalid values up to the GPIO core - implement gpio_chip::get_direction() for gpio-pcf857x - use managed variants of notifier registration functions in several drivers - remove legacy gpio_set_value_cansleep() as it has no more users - add pinctrl support to gpio-realtek-otto - add runtime PM support to the gpio-regmap helper module - add more ACPI GPIO quirks for various hardware - stop needlessly reading gpio_chip::base in gpio-pxa - add support for tracking of direction of generic GPIO chips with no direction registers via pinctrl backend to gpio-mmio (use the new core API: gpiochip_generic_get_config()) - use the "safe" variants of debugfs_create_file() in gpio-sloppy-analyzer - use device name as GPIO chip label in gpio-omap - refactor bit ops in gpio-dln2 - prepare gpio-it87 for upcoming kmalloc_obj() conversion Devicetree bindings: - document new model in gpio-pca95xx - allow the gpio-hogs property in gpio-zynq and fsl,qoriq-gpio - allow the gpio-ranges property in gpio-realtek-otto Misc fixes: - add missing MODULE_ALIAS() to gpio-crystalcove - fix a comment typo in example GPIO tools - fix unbalanced brackets in documentation - add names to regmaps in gpio-mvebu to avoid collisions in debugfs output - fix GPIO lookup using relative paths in GPIO ACPI" * tag 'gpio-updates-for-v7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux: (63 commits) gpiolib: acpi: Fix GPIO lookup using relative path gpio: legacy: Kill gpio_set_value_cansleep() dt-bindings: gpio: pca95xx: add onnn,pca9655 with nxp,pca9555 fallback gpiolib: acpi: Ignore GPIO 11 interrupt on Acer Nitro V 16S AI gpio: pxa: stop reading gpio_chip::base in direction callbacks gpio: axiado: add AX3005 SGPIO controller support dt-bindings: gpio: add Axiado AX3005 SGPIO controller gpiolib: acpi: Add quirk for Lenovo IdeaPad Slim 3 15ABR8 MAINTAINERS: Add ROHM BD73800 PMIC files gpio: bd73800: Support ROHM BD73800 PMIC GPIOs clk: bd718x7: Support ROHM BD73800 regulator: bd71828: Support ROHM BD73800 rtc: bd70528: Support RTC on ROHM BD73800 mfd: Support for ROHM BD73800 PMIC core dt-bindings: mfd: ROHM BD73800 PMIC dt-bindings: regulator: ROHM BD73800 regulators dt-bindings: rohm,bd*: Ref common ROHM bindings dt-bindings: mfd: Common ROHM PMIC properties gpio: siox: normalize return value of gpio_get() gpio: dln2: use assign_bit() where applicable ...
Diffstat (limited to 'Documentation/devicetree')
-rw-r--r--Documentation/devicetree/bindings/gpio/axiado,ax3005-sgpio.yaml112
-rw-r--r--Documentation/devicetree/bindings/gpio/fsl,qoriq-gpio.yaml7
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-pca95xx.yaml3
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-zynq.yaml6
-rw-r--r--Documentation/devicetree/bindings/gpio/nvidia,tegra186-gpio.yaml9
-rw-r--r--Documentation/devicetree/bindings/gpio/realtek,otto-gpio.yaml2
-rw-r--r--Documentation/devicetree/bindings/gpio/renesas,rcar-gpio.yaml5
-rw-r--r--Documentation/devicetree/bindings/mfd/rohm,bd71815-pmic.yaml9
-rw-r--r--Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml9
-rw-r--r--Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml29
-rw-r--r--Documentation/devicetree/bindings/mfd/rohm,bd73800-pmic.yaml218
-rw-r--r--Documentation/devicetree/bindings/mfd/rohm,pmic-pins.yaml72
-rw-r--r--Documentation/devicetree/bindings/regulator/rohm,bd73800-regulator.yaml99
13 files changed, 545 insertions, 35 deletions
diff --git a/Documentation/devicetree/bindings/gpio/axiado,ax3005-sgpio.yaml b/Documentation/devicetree/bindings/gpio/axiado,ax3005-sgpio.yaml
new file mode 100644
index 000000000000..47ae1285d482
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/axiado,ax3005-sgpio.yaml
@@ -0,0 +1,112 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/axiado,ax3005-sgpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Axiado AX3005 SGPIO Controller
+
+maintainers:
+ - Petar Stepanovic <pstepanovic@axiado.com>
+ - SriNavmani A <srinavmani@axiado.com>
+ - Prasad Bolisetty <pbolisetty@axiado.com>
+
+description: |
+ The Axiado SGPIO controller provides a serial GPIO expansion interface
+ that multiplexes multiple GPIO signals over a small set of physical lines.
+
+ The controller serializes output values on a data output line (DOUT) and
+ samples input values from a data input line (DIN) in synchronization with
+ a shift clock (SCLK). A latch signal (LATCH) updates the output states
+ after each transfer cycle.
+
+ SGPIO positions are organized in banks of 32, with registers controlling
+ output values, input sampling, and interrupt status. The number of SGPIO
+ positions supported depends on the controller configuration.
+
+ The controller detects changes on input GPIOs. Interrupt events are
+ aggregated and signaled through a single interrupt line to the parent
+ interrupt controller.
+
+ Register access is performed over the APB bus. The SGPIO shift clock is
+ derived from the APB clock using a programmable divider.
+
+ Each SGPIO position provides one input and one output, and both are
+ exposed as GPIO lines. Position N is described by two consecutive lines:
+ line 2 * N is the input and line 2 * N + 1 is the output. Directions are
+ fixed by the hardware, so even lines are always inputs and odd lines are
+ always outputs.
+
+ Only input lines can generate interrupts. Rising, falling, and both-edge
+ interrupts are supported.
+
+properties:
+ compatible:
+ const: axiado,ax3005-sgpio
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ description: APB interface clock
+ maxItems: 1
+
+ bus-frequency:
+ description: Desired SGPIO shift clock frequency in Hz
+ minimum: 1
+
+ gpio-controller: true
+
+ '#gpio-cells':
+ const: 2
+
+ interrupt-controller: true
+
+ '#interrupt-cells':
+ const: 2
+
+ interrupts:
+ maxItems: 1
+
+ ngpios:
+ description: |
+ Total number of GPIO lines provided by the controller. Each SGPIO
+ position wired up on the board contributes one input and one output
+ line, so this is twice the number of positions and must be even. It
+ may be lower than the maximum supported by the hardware.
+ minimum: 2
+ maximum: 1024
+ multipleOf: 2
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - bus-frequency
+ - gpio-controller
+ - '#gpio-cells'
+ - interrupts
+ - interrupt-controller
+ - '#interrupt-cells'
+ - ngpios
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ gpio@33201c00 {
+ compatible = "axiado,ax3005-sgpio";
+ reg = <0x33201c00 0x400>;
+ clocks = <&apb_clk>;
+ bus-frequency = <1000000>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ interrupt-parent = <&gic500>;
+ interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+ ngpios = <256>;
+ };
diff --git a/Documentation/devicetree/bindings/gpio/fsl,qoriq-gpio.yaml b/Documentation/devicetree/bindings/gpio/fsl,qoriq-gpio.yaml
index 4cb2a6b9fabf..1e61e17b0ee3 100644
--- a/Documentation/devicetree/bindings/gpio/fsl,qoriq-gpio.yaml
+++ b/Documentation/devicetree/bindings/gpio/fsl,qoriq-gpio.yaml
@@ -63,6 +63,13 @@ properties:
GPIO registers are used as little endian. If not
present registers are used as big endian by default.
+patternProperties:
+ "^.+-hog(-[0-9]+)?$":
+ type: object
+
+ required:
+ - gpio-hog
+
required:
- compatible
- reg
diff --git a/Documentation/devicetree/bindings/gpio/gpio-pca95xx.yaml b/Documentation/devicetree/bindings/gpio/gpio-pca95xx.yaml
index 4631388a7d91..d671aaf83bb7 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-pca95xx.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-pca95xx.yaml
@@ -26,6 +26,9 @@ properties:
- const: kinetic,kts1622
- const: ti,tcal6416
- items:
+ - const: onnn,pca9655
+ - const: nxp,pca9555
+ - items:
- enum:
- exar,xra1202
- maxim,max7310
diff --git a/Documentation/devicetree/bindings/gpio/gpio-zynq.yaml b/Documentation/devicetree/bindings/gpio/gpio-zynq.yaml
index de24bb361e9f..fffeb5ec0645 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-zynq.yaml
+++ b/Documentation/devicetree/bindings/gpio/gpio-zynq.yaml
@@ -45,6 +45,12 @@ properties:
power-domains:
maxItems: 1
+patternProperties:
+ "^.+-hog(-[0-9]+)?$":
+ type: object
+ required:
+ - gpio-hog
+
allOf:
- if:
properties:
diff --git a/Documentation/devicetree/bindings/gpio/nvidia,tegra186-gpio.yaml b/Documentation/devicetree/bindings/gpio/nvidia,tegra186-gpio.yaml
index adeb3b3a2902..fac53e65909b 100644
--- a/Documentation/devicetree/bindings/gpio/nvidia,tegra186-gpio.yaml
+++ b/Documentation/devicetree/bindings/gpio/nvidia,tegra186-gpio.yaml
@@ -91,6 +91,9 @@ properties:
- nvidia,tegra264-gpio
- nvidia,tegra264-gpio-uphy
- nvidia,tegra264-gpio-aon
+ - nvidia,tegra268-gpio
+ - nvidia,tegra268-gpio-uphy
+ - nvidia,tegra268-gpio-aon
reg-names:
items:
@@ -169,6 +172,8 @@ allOf:
- nvidia,tegra256-gpio
- nvidia,tegra264-gpio
- nvidia,tegra264-gpio-uphy
+ - nvidia,tegra268-gpio
+ - nvidia,tegra268-gpio-uphy
then:
properties:
interrupts:
@@ -185,6 +190,7 @@ allOf:
- nvidia,tegra234-gpio-aon
- nvidia,tegra238-gpio-aon
- nvidia,tegra264-gpio-aon
+ - nvidia,tegra268-gpio-aon
then:
properties:
interrupts:
@@ -201,6 +207,9 @@ allOf:
- nvidia,tegra264-gpio
- nvidia,tegra264-gpio-uphy
- nvidia,tegra264-gpio-aon
+ - nvidia,tegra268-gpio
+ - nvidia,tegra268-gpio-uphy
+ - nvidia,tegra268-gpio-aon
then:
required:
- wakeup-parent
diff --git a/Documentation/devicetree/bindings/gpio/realtek,otto-gpio.yaml b/Documentation/devicetree/bindings/gpio/realtek,otto-gpio.yaml
index b18f8f0ca0ae..33c25df7b815 100644
--- a/Documentation/devicetree/bindings/gpio/realtek,otto-gpio.yaml
+++ b/Documentation/devicetree/bindings/gpio/realtek,otto-gpio.yaml
@@ -40,6 +40,8 @@ properties:
gpio-controller: true
+ gpio-ranges: true
+
ngpios:
minimum: 1
maximum: 32
diff --git a/Documentation/devicetree/bindings/gpio/renesas,rcar-gpio.yaml b/Documentation/devicetree/bindings/gpio/renesas,rcar-gpio.yaml
index d32e103a64aa..95f5175c7a9d 100644
--- a/Documentation/devicetree/bindings/gpio/renesas,rcar-gpio.yaml
+++ b/Documentation/devicetree/bindings/gpio/renesas,rcar-gpio.yaml
@@ -56,6 +56,11 @@ properties:
- renesas,gpio-r8a779h0 # R-Car V4M
- const: renesas,rcar-gen4-gpio # R-Car Gen4
+ - items:
+ - enum:
+ - renesas,gpio-r8a78000 # R-Car X5H
+ - const: renesas,rcar-gen5-gpio # R-Car Gen5
+
reg:
maxItems: 1
diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd71815-pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd71815-pmic.yaml
index 4fc78efaa550..0a67de054674 100644
--- a/Documentation/devicetree/bindings/mfd/rohm,bd71815-pmic.yaml
+++ b/Documentation/devicetree/bindings/mfd/rohm,bd71815-pmic.yaml
@@ -15,6 +15,9 @@ description: |
for LED and a 500 mA single-cell linear charger. Also included is a Coulomb
counter, a real-time clock (RTC), and a 32.768 kHz clock gate and two GPOs.
+allOf:
+ - $ref: rohm,pmic-pins.yaml#
+
properties:
compatible:
const: rohm,bd71815
@@ -44,11 +47,7 @@ properties:
clock-output-names:
const: bd71815-32k-out
- rohm,clkout-open-drain:
- description: clk32kout mode. Set to 1 for "open-drain" or 0 for "cmos".
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 1
+ rohm,clkout-open-drain: true
rohm,charger-sense-resistor-micro-ohms:
minimum: 10000
diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml
index 09e7d68e92bf..e5043dec990d 100644
--- a/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml
+++ b/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml
@@ -15,6 +15,9 @@ description: |
single-cell linear charger. Also included is a Coulomb counter, a real-time
clock (RTC), and a 32.768 kHz clock gate.
+allOf:
+ - $ref: rohm,pmic-pins.yaml#
+
properties:
compatible:
oneOf:
@@ -49,11 +52,7 @@ properties:
clock-output-names:
const: bd71828-32k-out
- rohm,clkout-open-drain:
- description: clk32kout mode. Set to 1 for "open-drain" or 0 for "cmos".
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 1
+ rohm,clkout-open-drain: true
rohm,charger-sense-resistor-micro-ohms:
minimum: 10000
diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
index b094542339e8..52d0f6e4ef0f 100644
--- a/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
+++ b/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
@@ -15,6 +15,9 @@ description:
and a 3000 mA switching charger. ICs also include a Coulomb counter,
a real-time clock (RTC), GPIOs and a 32.768 kHz clock gate.
+allOf:
+ - $ref: rohm,pmic-pins.yaml#
+
# In addition to the properties found from the charger node, PMICs
# use properties from a static battery node. Please see the:
# Documentation/devicetree/bindings/power/supply/battery.yaml
@@ -80,10 +83,7 @@ properties:
clock-output-names:
const: bd71828-32k-out
- rohm,clkout-open-drain:
- description: clk32kout mode. Set to 1 for "open-drain" or 0 for "cmos".
- $ref: /schemas/types.yaml#/definitions/uint32
- maximum: 1
+ rohm,clkout-open-drain: true
rohm,charger-sense-resistor-micro-ohms:
minimum: 10000
@@ -103,14 +103,6 @@ properties:
$ref: /schemas/leds/rohm,bd71828-leds.yaml
rohm,pin-fault_b:
- $ref: /schemas/types.yaml#/definitions/string
- description:
- PMIC has an OTP option to use fault_b-pin for different
- purposes. Set this property accordingly. OTP options are
- OTP0 - bi-directional FAULT_B or READY indicator depending on a
- 'sub option'
- OTP1 - GPO
- OTP2 - Power sequencer output.
enum:
- faultb
- readyind
@@ -119,14 +111,6 @@ properties:
patternProperties:
"^rohm,pin-dvs[0-1]$":
- $ref: /schemas/types.yaml#/definitions/string
- description:
- PMIC has 4 different OTP options to determine the use of dvs<X>-pins.
- OTP0 - regulator RUN state control.
- OTP1 - GPI.
- OTP2 - GPO.
- OTP3 - Power sequencer output.
- This property specifies the use of the pin.
enum:
- dvs-input
- gpi
@@ -134,11 +118,6 @@ patternProperties:
- pwrseq
"^rohm,pin-exten[0-1]$":
- $ref: /schemas/types.yaml#/definitions/string
- description: PMIC has an OTP option to use exten0-pin for different
- purposes. Set this property accordingly.
- OTP0 - GPO
- OTP1 - Power sequencer output.
enum:
- gpo
- pwrseq
diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd73800-pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd73800-pmic.yaml
new file mode 100644
index 000000000000..8371e7f2ab84
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/rohm,bd73800-pmic.yaml
@@ -0,0 +1,218 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/rohm,bd73800-pmic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM BD73800 Power Management Integrated Circuit
+
+maintainers:
+ - Matti Vaittinen <mazziesaccount@gmail.com>
+
+description:
+ BD73800GW is a single-chip power management IC for battery-powered
+ portable devices. It integrates 8 buck converters, 4 LDOs and a current
+ sense amplifier with ADC. Also included is a Real Time Clock (RTC) and a
+ 32.768 kHz clock gate. Depending on the OTP configuration the BD73800
+ may also have interrupt controller and GPIOs.
+
+ There are also different variants called BD71851 and BD71885 which are
+ almost identical from the software point of view.
+
+allOf:
+ - $ref: rohm,pmic-pins.yaml#
+
+properties:
+ compatible:
+ oneOf:
+ - const: rohm,bd73800
+
+ - items:
+ - enum:
+ - rohm,bd71851
+ - rohm,bd71885
+ - const: rohm,bd73800
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ # The GPIO1, CLKOUT (GPIO2), FAULT_B and EXTEN_OUT pins can be
+ # configured to interrupt pins by OTP.
+ interrupt-controller: true
+
+ "#interrupt-cells":
+ const: 1
+ description:
+ The IRQ number. 0 is GPIO1, 1 CLKOUT (GPIO2), 2 FAULT_B and 3 EXTEN_OUT.
+ NOTE, A pin can operate as IRQ source only when the OTP
+ configuration for it has been set to GPI.
+
+ gpio-controller: true
+
+ "#gpio-cells":
+ const: 2
+
+ rohm,pin-gpio1:
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ Indicate if the GPIO1 pin has been set to GPI or GPO at manufacturing.
+ The GPIO1, CLKOUT, FAULT_B and EXTEN_OUT pins may be configured for a
+ specific purpose (like ADC input, 32.768 clk output, fault indicator or
+ delivering power sequence to a companion PMIC when multiple PMICs are
+ used) - but also to be either a GPO or GPI. (When used as a GPI the pin
+ can also be used as an IRQ source). The pin purpose is determined by
+ OTP (One Time Programmable memory), typically during device
+ manufacturing. The OTP can't be read at runtime so device-tree should
+ describe the GPIO pins.
+ enum: [gpi, gpo]
+
+ rohm,pin-clkout:
+ enum: [gpi, gpo]
+
+ rohm,pin-fault_b:
+ enum: [gpi, gpo]
+
+ rohm,pin-exten:
+ enum: [gpi, gpo]
+
+ clocks:
+ description:
+ The CLKOUT pin may have its purpose overridden by OTP configuration. It
+ is possible the BD73800 does not output a clock signal. Hence the clk
+ properties are optional.
+ maxItems: 1
+
+ "#clock-cells":
+ const: 0
+
+ clock-output-names:
+ maxItems: 1
+
+ rohm,clkout-open-drain: true
+
+ regulators:
+ $ref: /schemas/regulator/rohm,bd73800-regulator.yaml
+ description:
+ List of child nodes that specify the regulators.
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - regulators
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/leds/common.h>
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pmic: pmic@4b {
+ compatible = "rohm,bd73800";
+ reg = <0x4b>;
+
+ interrupt-parent = <&gpio1>;
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+
+ clocks = <&osc 0>;
+ #clock-cells = <0>;
+ clock-output-names = "bd73800-32k-out";
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ rohm,pin-gpio1 = "gpo";
+ rohm,pin-exten = "gpi";
+
+ regulators {
+ buck1: buck1 {
+ regulator-name = "buck1";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-always-on;
+ regulator-ramp-delay = <1250>;
+ rohm,dvs-run-voltage = <1150000>;
+ rohm,dvs-suspend-voltage = <950000>;
+ };
+ buck2: buck2 {
+ regulator-name = "buck2";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-always-on;
+ regulator-ramp-delay = <1250>;
+ rohm,dvs-run-voltage = <1150000>;
+ rohm,dvs-suspend-voltage = <950000>;
+ };
+ buck3: buck3 {
+ regulator-name = "buck3";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <2700000>;
+ rohm,dvs-run-voltage = <1150000>;
+ rohm,dvs-idle-voltage = <1100000>;
+ rohm,dvs-suspend-voltage = <950000>;
+ regulator-always-on;
+ };
+ buck4: buck4 {
+ regulator-name = "buck4";
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1850000>;
+ regulator-always-on;
+ };
+ buck5: buck5 {
+ regulator-name = "buck5";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+ buck6: buck6 {
+ regulator-name = "buck6";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+ buck7: buck7 {
+ regulator-name = "buck7";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+ buck8: buck8 {
+ regulator-name = "buck8";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-always-on;
+ };
+ ldo1: ldo1 {
+ regulator-name = "ldo1";
+ rohm,ldo-range-high;
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+ ldo2: ldo2 {
+ regulator-name = "ldo2";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+ ldo3: ldo3 {
+ regulator-name = "ldo3";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+ ldo4: ldo4 {
+ regulator-name = "ldo4";
+ regulator-min-microvolt = <650000>;
+ regulator-max-microvolt = <1750000>;
+ regulator-always-on;
+ };
+ };
+ };
+ };
diff --git a/Documentation/devicetree/bindings/mfd/rohm,pmic-pins.yaml b/Documentation/devicetree/bindings/mfd/rohm,pmic-pins.yaml
new file mode 100644
index 000000000000..0d1082804f5a
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/rohm,pmic-pins.yaml
@@ -0,0 +1,72 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/rohm,pmic-pins.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM PMICs' OTP configured pin descriptions
+
+maintainers:
+ - Matti Vaittinen <mazziesaccount@gmail.com>
+
+description:
+ Collection of properties which are commonly used to describe various
+ ROHM PMIC's pins.
+
+properties:
+ rohm,clkout-open-drain:
+ description: clk32kout mode. Set to 1 for "open-drain" or 0 for "cmos"
+ a.k.a "push-pull".
+ $ref: /schemas/types.yaml#/definitions/uint32
+ maximum: 1
+
+ rohm,pin-clkout:
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ The IC has different OTP options to use clkout-pin for different
+ purposes. Set this property to indicate the OTP variant.
+
+ Many of the ROHM ICs have pins, which function can be defined in
+ OTP. Some of them provide no means to detect the pin configuration
+ at run-time, leaving software unaware of which features the IC
+ really has. These properties can be used to inform which pins
+ provide which functionality. IOW, these properties aren't used to
+ configure pin, they are used to tell what functionality pins on
+ this specific IC have.
+
+ # Supported functionalities depend on the exact IC model. Following
+ # values are already defined: gpi, gpo.
+ # Please, re-use them when adding new ICs.
+
+ rohm,pin-fault_b:
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ The IC has different OTP options to use fault_b-pin for different
+ purposes. Set this property to indicate the OTP variant.
+
+ # Supported functionalities depend on the exact IC model. Following
+ # values are already defined: gpi, gpo, faultb, readyind, pwrseq.
+ # Please, re-use them when adding new ICs.
+
+patternProperties:
+ "^rohm,pin-dvs[0-1]$":
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ The IC has different OTP options to use dvs<X>-pins for different
+ purposes. Set this property to indicate the OTP variant.
+ # Supported functionalities depend on the exact IC model. Following
+ # values are already defined: dvs-input, gpi, gpo, pwrseq.
+ # Please, re-use them when adding new ICs.
+
+ "^rohm,pin-exten([0-1])?$":
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ The IC has an OTP option to use exten -pin(s) for different purposes.
+ Set this property to indicate the OTP variant.
+ # Supported functionalities depend on the exact IC model. Following
+ # values are already defined: gpi, gpo, pwrseq.
+ # Please, re-use them when adding new ICs.
+
+# The schema is expected to be reference by IC schemas, which may introduce
+# other properties that must be allowed.
+additionalProperties: true
diff --git a/Documentation/devicetree/bindings/regulator/rohm,bd73800-regulator.yaml b/Documentation/devicetree/bindings/regulator/rohm,bd73800-regulator.yaml
new file mode 100644
index 000000000000..2db4585272c5
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/rohm,bd73800-regulator.yaml
@@ -0,0 +1,99 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/regulator/rohm,bd73800-regulator.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM BD73800 Power Management Integrated Circuit regulators
+
+maintainers:
+ - Matti Vaittinen <mazziesaccount@gmail.com>
+
+description: |
+ This module is part of the ROHM BD73800 MFD device. For more details
+ see Documentation/devicetree/bindings/mfd/rohm,bd73800-pmic.yaml.
+
+ The regulator controller is represented as a sub-node of the PMIC node
+ on the device tree.
+
+ Regulator nodes should be named to buck<number> and ldo<number>.
+ The valid names for BD73800 regulator nodes are
+ buck1, buck2, buck3, buck4, buck5, buck6, buck7, buck8
+ ldo1, ldo2, ldo3, ldo4
+
+patternProperties:
+ "^buck[1-8]$":
+ type: object
+ description:
+ Properties for a single BUCK regulator.
+ allOf:
+ - $ref: regulator.yaml#
+ - $ref: rohm,pmic-states.yaml#
+
+ properties:
+ regulator-name:
+ pattern: "^buck[1-8]$"
+ description:
+ should be "buck1", ..., "buck8"
+
+ rohm,dvs-run-voltage:
+ minimum: 0
+ maximum: 3500000
+
+ rohm,dvs-idle-voltage:
+ minimum: 0
+ maximum: 3500000
+
+ rohm,dvs-suspend-voltage:
+ minimum: 0
+ maximum: 3500000
+
+ # BUCKs 1,2,3,4 and 8 support voltages 0.5 - 1.3V
+ # BUCK 5 supports voltages 0.3 - 1.3V
+ # BUCKs 6 and 7 support voltages 1.5 - 3.5V
+
+ required:
+ - regulator-name
+
+ unevaluatedProperties: false
+
+ "^ldo[1-4]$":
+ type: object
+ description:
+ Properties for single LDO regulator.
+ allOf:
+ - $ref: regulator.yaml#
+ - $ref: rohm,pmic-states.yaml#
+
+ properties:
+ regulator-name:
+ pattern: "^ldo[1-4]$"
+ description:
+ should be "ldo1", ..., "ldo4"
+
+ rohm,dvs-run-voltage:
+ minimum: 0
+ maximum: 1
+
+ rohm,dvs-idle-voltage:
+ minimum: 0
+ maximum: 1
+
+ rohm,dvs-suspend-voltage:
+ minimum: 0
+ maximum: 1
+
+ rohm,ldo-range-high:
+ type: boolean
+ description:
+ LDO1 and LDO3 voltage ranges can be "high" or "low" depending on
+ OTP. Indicate that the "high" range is used. See comment below
+ for voltages.
+
+ # LDOs 2 and 4 support voltages 0.75 - 3.3V
+ # LDOs 1 and 3 may support different ranges depending on OTP.
+ # either 0.6 - 1.8V or 0.75 - 3.3V.
+
+ unevaluatedProperties: false
+
+additionalProperties: false