# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/mfd/dlg,da9063.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Dialog DA906{3L,3,2,1} Power Management Integrated Circuit (PMIC) maintainers: - Steve Twiss description: | For device-tree bindings of other sub-modules refer to the binding documents under the respective sub-system directories. Using regulator-{uv,ov}-{warn,error,protection}-microvolt requires special handling: First, when GP_FB2 is used, it must be ensured that there is no moment where all voltage monitors are disabled. Next, as da9063 only supports UV *and* OV monitoring, both must be set to the same severity and value (0: disable, 1: enable). Product information for the DA906{3L,3,2,1} devices can be found here: - https://www.dialog-semiconductor.com/products/da9063l - https://www.dialog-semiconductor.com/products/da9063 - https://www.dialog-semiconductor.com/products/da9062 - https://www.dialog-semiconductor.com/products/da9061 properties: compatible: enum: - dlg,da9061 - dlg,da9062 - dlg,da9063 - dlg,da9063l reg: maxItems: 1 interrupts: maxItems: 1 interrupt-controller: true "#interrupt-cells": const: 2 gpio-controller: true "#gpio-cells": const: 2 gpio: type: object additionalProperties: false properties: compatible: const: dlg,da9062-gpio onkey: $ref: /schemas/input/dlg,da9062-onkey.yaml regulators: type: object additionalProperties: false patternProperties: "^(ldo([1-9]|1[01])|bcore([1-2]|s-merged)|b(pro|mem|io|peri)|bmem-bio-merged|buck[1-4])$": $ref: /schemas/regulator/regulator.yaml unevaluatedProperties: false rtc: type: object $ref: /schemas/rtc/rtc.yaml# unevaluatedProperties: false properties: compatible: enum: - dlg,da9062-rtc - dlg,da9063-rtc thermal: $ref: /schemas/thermal/dlg,da9062-thermal.yaml watchdog: $ref: /schemas/watchdog/dlg,da9062-watchdog.yaml patternProperties: "^(.+-hog(-[0-9]+)?)$": type: object required: - gpio-hog required: - compatible - reg allOf: - if: properties: compatible: contains: enum: - dlg,da9063 - dlg,da9063l then: properties: gpio-controller: false "#gpio-cells": false gpio: false regulators: patternProperties: "^buck[1-4]$": false thermal: false required: - interrupts - interrupt-controller - '#interrupt-cells' - if: properties: compatible: contains: enum: - dlg,da9062 then: properties: regulators: patternProperties: "^(ldo([5-9]|10|11)|bcore([1-2]|s-merged)|b(pro|mem|io|peri)|bmem-bio-merged)$": false required: - gpio - onkey - rtc - thermal - watchdog - if: properties: compatible: contains: enum: - dlg,da9061 then: properties: gpio-controller: false "#gpio-cells": false gpio: false regulators: patternProperties: "^(ldo([5-9]|10|11)|bcore([1-2]|s-merged)|b(pro|mem|io|peri)|bmem-bio-merged|buck4)$": false rtc: false required: - onkey - thermal - watchdog additionalProperties: false examples: - | #include i2c { #address-cells = <1>; #size-cells = <0>; pmic@58 { compatible = "dlg,da9063"; reg = <0x58>; interrupt-parent = <&gpio6>; interrupts = <11 IRQ_TYPE_LEVEL_LOW>; interrupt-controller; #interrupt-cells = <2>; rtc { compatible = "dlg,da9063-rtc"; }; watchdog { compatible = "dlg,da9063-watchdog"; }; onkey { compatible = "dlg,da9063-onkey"; dlg,disable-key-power; }; regulators { bcore1 { regulator-name = "BCORE1"; regulator-min-microvolt = <300000>; regulator-max-microvolt = <1570000>; regulator-min-microamp = <500000>; regulator-max-microamp = <2000000>; regulator-boot-on; }; ldo6 { /* UNUSED */ regulator-name = "LDO_6"; regulator-uv-protection-microvolt = <0>; regulator-ov-protection-microvolt = <0>; }; ldo11 { regulator-name = "LDO_11"; regulator-min-microvolt = <900000>; regulator-max-microvolt = <900000>; regulator-uv-protection-microvolt = <1>; regulator-ov-protection-microvolt = <1>; regulator-always-on; }; }; }; }; - | #include #include i2c { #address-cells = <1>; #size-cells = <0>; pmic@58 { compatible = "dlg,da9062"; reg = <0x58>; gpio-controller; #gpio-cells = <2>; sd0-pwr-sel-hog { gpio-hog; gpios = <1 0>; input; line-name = "SD0_PWR_SEL"; }; sd1-pwr-sel-hog { gpio-hog; gpios = <2 0>; input; line-name = "SD1_PWR_SEL"; }; sw-et0-en-hog { gpio-hog; gpios = <3 0>; input; line-name = "SW_ET0_EN#"; }; pmic-good-hog { gpio-hog; gpios = <4 0>; output-high; line-name = "PMIC_PGOOD"; }; gpio { compatible = "dlg,da9062-gpio"; }; onkey { compatible = "dlg,da9062-onkey"; }; regulators { buck1 { regulator-name = "vdd_arm"; regulator-min-microvolt = <925000>; regulator-max-microvolt = <1380000>; regulator-initial-mode = ; regulator-always-on; }; buck2 { regulator-name = "vdd_soc"; regulator-min-microvolt = <1150000>; regulator-max-microvolt = <1380000>; regulator-initial-mode = ; regulator-always-on; }; buck3 { regulator-name = "vdd_ddr3"; regulator-min-microvolt = <1500000>; regulator-max-microvolt = <1500000>; regulator-initial-mode = ; regulator-always-on; }; buck4 { regulator-name = "vdd_eth"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-initial-mode = ; regulator-always-on; }; ldo1 { regulator-name = "vdd_snvs"; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; regulator-always-on; }; ldo2 { regulator-name = "vdd_high"; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; regulator-always-on; }; ldo3 { regulator-name = "vdd_eth_io"; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; }; ldo4 { regulator-name = "vdd_emmc"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; }; }; rtc { compatible = "dlg,da9062-rtc"; }; thermal { compatible = "dlg,da9062-thermal"; }; watchdog { compatible = "dlg,da9062-watchdog"; dlg,use-sw-pm; }; }; }; ...