| # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/mfd/maxim,max77620.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: MAX77620 Power management IC from Maxim Semiconductor |
| |
| maintainers: |
| - Svyatoslav Ryhel <clamor95@gmail.com> |
| |
| properties: |
| compatible: |
| enum: |
| - maxim,max20024 |
| - maxim,max77620 |
| - maxim,max77663 |
| |
| reg: |
| description: |
| Can contain an optional second I2C address pointing to the PMIC's |
| RTC device. If no RTC address is provided, a default address specific |
| to this PMIC will be used. |
| minItems: 1 |
| maxItems: 2 |
| |
| reg-names: |
| items: |
| - const: pmic |
| - const: rtc |
| |
| interrupts: |
| maxItems: 1 |
| |
| interrupt-controller: true |
| |
| "#interrupt-cells": |
| const: 2 |
| |
| gpio-controller: true |
| |
| "#gpio-cells": |
| const: 2 |
| description: |
| Device has 8 GPIO pins which can be configured as GPIO as well as |
| the special IO functions. The first cell is the pin number, and the |
| second cell is used to specify the gpio polarity (GPIO_ACTIVE_HIGH or |
| GPIO_ACTIVE_LOW). |
| |
| system-power-controller: true |
| |
| "#thermal-sensor-cells": |
| const: 0 |
| description: |
| Maxim Semiconductor MAX77620 supports alarm interrupts when its |
| die temperature crosses 120C and 140C. These threshold temperatures |
| are not configurable. Device does not provide the real temperature |
| of die other than just indicating whether temperature is above or |
| below threshold level. |
| |
| fps: |
| type: object |
| additionalProperties: false |
| description: | |
| The Flexible Power Sequencer (FPS) allows each regulator to power up |
| under hardware or software control. Additionally, each regulator can |
| power on independently or among a group of other regulators with an |
| adjustable power-up and power-down delays (sequencing). GPIO1, GPIO2, |
| and GPIO3 can be programmed to be part of a sequence allowing external |
| regulators to be sequenced along with internal regulators. 32KHz clock |
| can be programmed to be part of a sequence. |
| |
| The flexible sequencing structure consists of two hardware enable inputs |
| (EN0, EN1), and 3 master sequencing timers called FPS0, FPS1 and FPS2. |
| Each master sequencing timer is programmable through its configuration |
| register to have a hardware enable source (EN1 or EN2) or a software enable |
| source (SW). When enabled/disabled, the master sequencing timer generates |
| eight sequencing events on different time periods called slots. The time |
| period between each event is programmable within the configuration register. |
| Each regulator, GPIO1, GPIO2, GPIO3, and 32KHz clock has a flexible power |
| sequence slave register which allows its enable source to be specified as |
| a flexible power sequencer timer or a software bit. When a FPS source of |
| regulators, GPIOs and clocks specifies the enable source to be a flexible |
| power sequencer, the power up and power down delays can be specified in |
| the regulators, GPIOs and clocks flexible power sequencer configuration |
| registers. |
| |
| When FPS event cleared (set to LOW), regulators, GPIOs and 32KHz clock |
| are set into following state at the sequencing event that corresponds |
| to its flexible sequencer configuration register. |
| |
| Sleep state: In this state, regulators, GPIOs and 32KHz clock get disabled |
| at the sequencing event. |
| Global Low Power Mode (GLPM): In this state, regulators are set in low |
| power mode at the sequencing event. |
| |
| The configuration parameters of FPS is provided through sub-node "fps" |
| and their child for FPS specific. The child node name for FPS are "fps0", |
| "fps1", and "fps2" for FPS0, FPS1 and FPS2 respectively. |
| |
| The FPS configurations like FPS source, power up and power down slots for |
| regulators, GPIOs and 32kHz clocks are provided in their respective |
| configuration nodes which is explained in respective sub-system DT |
| binding document. |
| |
| There is need for different FPS configuration parameters based on system |
| state like when system state changed from active to suspend or active to |
| power off (shutdown). |
| |
| patternProperties: |
| "^fps[0-2]$": |
| type: object |
| additionalProperties: false |
| |
| properties: |
| maxim,fps-event-source: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: | |
| FPS event source like external hardware input to PMIC i.e. EN0, EN1 |
| or software (SW). |
| |
| The macros are defined on dt-bindings/mfd/max77620.h for different |
| control source. |
| - MAX77620_FPS_EVENT_SRC_EN0 for hardware input pin EN0. |
| - MAX77620_FPS_EVENT_SRC_EN1 for hardware input pin EN1. |
| - MAX77620_FPS_EVENT_SRC_SW for software control. |
| |
| maxim,shutdown-fps-time-period-us: |
| description: |
| FPS time period in microseconds when system enters in to shutdown state. |
| |
| maxim,suspend-fps-time-period-us: |
| description: |
| FPS time period in microseconds when system enters in to suspend state. |
| |
| maxim,device-state-on-disabled-event: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: | |
| Describe the PMIC state when FPS event cleared (set to LOW) whether it |
| should go to sleep state or low-power state. Following are valid values: |
| - MAX77620_FPS_INACTIVE_STATE_SLEEP to set the PMIC state to sleep. |
| - MAX77620_FPS_INACTIVE_STATE_LOW_POWER to set the PMIC state to low |
| power. |
| Absence of this property or other value will not change device state |
| when FPS event get cleared. |
| |
| maxim,power-ok-control: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: | |
| Configure map power ok bit |
| |
| 1: Enables POK(Power OK) to control nRST_IO and GPIO1 POK function. |
| 0: Disables POK control. |
| |
| If property missing, do not configure MPOK bit. If POK mapping is |
| enabled for GPIO1/nRST_IO then, GPIO1/nRST_IO pins are HIGH only if |
| all rails that have POK control enabled are HIGH. If any of the rails |
| goes down (which are enabled for POK control) then, GPIO1/nRST_IO |
| goes LOW. |
| enum: [0, 1] |
| |
| pinmux: |
| $ref: /schemas/pinctrl/maxim,max77620-pinctrl.yaml |
| |
| regulators: |
| $ref: /schemas/regulator/maxim,max77620-regulator.yaml |
| |
| allOf: |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - maxim,max20024 |
| - maxim,max77663 |
| then: |
| properties: |
| "#thermal-sensor-cells": false |
| fps: |
| patternProperties: |
| "^fps[0-2]$": |
| properties: |
| maxim,shutdown-fps-time-period-us: |
| enum: [20, 40, 80, 160, 320, 640, 1280, 2540] |
| maxim,suspend-fps-time-period-us: |
| enum: [20, 40, 80, 160, 320, 640, 1280, 2540] |
| maxim,power-ok-control: false |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| const: maxim,max77620 |
| then: |
| properties: |
| fps: |
| patternProperties: |
| "^fps[0-2]$": |
| properties: |
| maxim,shutdown-fps-time-period-us: |
| enum: [40, 80, 160, 320, 640, 1280, 2560, 5120] |
| maxim,suspend-fps-time-period-us: |
| enum: [40, 80, 160, 320, 640, 1280, 2560, 5120] |
| |
| - if: |
| properties: |
| compatible: |
| not: |
| contains: |
| const: maxim,max77663 |
| then: |
| properties: |
| reg-names: false |
| |
| required: |
| - compatible |
| - reg |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/interrupt-controller/irq.h> |
| #include <dt-bindings/mfd/max77620.h> |
| |
| i2c { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| pmic@3c { |
| compatible = "maxim,max77620"; |
| reg = <0x3c>; |
| |
| interrupt-parent = <&gpio>; |
| interrupts = <86 IRQ_TYPE_LEVEL_HIGH>; |
| |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| |
| gpio-controller; |
| #gpio-cells = <2>; |
| |
| #thermal-sensor-cells = <0>; |
| |
| system-power-controller; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <&max77620_default>; |
| |
| max77620_default: pinmux { |
| gpio0 { |
| pins = "gpio0"; |
| function = "gpio"; |
| }; |
| |
| gpio1 { |
| pins = "gpio1"; |
| function = "fps-out"; |
| maxim,active-fps-source = <MAX77620_FPS_SRC_0>; |
| }; |
| |
| gpio2 { |
| pins = "gpio2"; |
| function = "fps-out"; |
| maxim,active-fps-source = <MAX77620_FPS_SRC_1>; |
| }; |
| |
| gpio3 { |
| pins = "gpio3"; |
| function = "gpio"; |
| }; |
| |
| gpio4 { |
| pins = "gpio4"; |
| function = "32k-out1"; |
| }; |
| |
| gpio5-6 { |
| pins = "gpio5", "gpio6"; |
| function = "gpio"; |
| drive-push-pull = <1>; |
| }; |
| |
| gpio7 { |
| pins = "gpio7"; |
| function = "gpio"; |
| }; |
| }; |
| |
| fps { |
| fps0 { |
| maxim,shutdown-fps-time-period-us = <1280>; |
| maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>; |
| }; |
| |
| fps1 { |
| maxim,shutdown-fps-time-period-us = <1280>; |
| maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN1>; |
| }; |
| |
| fps2 { |
| maxim,shutdown-fps-time-period-us = <1280>; |
| maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_SW>; |
| }; |
| }; |
| |
| regulators { |
| in-sd0-supply = <&vdd_5v0_vbus>; |
| in-sd1-supply = <&vdd_5v0_vbus>; |
| in-sd2-supply = <&vdd_5v0_vbus>; |
| in-sd3-supply = <&vdd_5v0_vbus>; |
| |
| in-ldo0-1-supply = <&vdd_1v8_vio>; |
| in-ldo2-supply = <&vdd_3v3_vbat>; |
| in-ldo3-5-supply = <&vdd_3v3_vbat>; |
| in-ldo4-6-supply = <&vdd_3v3_vbat>; |
| in-ldo7-8-supply = <&vdd_1v8_vio>; |
| |
| sd0 { |
| regulator-name = "vdd_cpu"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <1250000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>; |
| }; |
| |
| sd1 { |
| regulator-name = "vdd_core"; |
| regulator-min-microvolt = <950000>; |
| regulator-max-microvolt = <1350000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_1>; |
| }; |
| |
| vdd_1v8_vio: sd2 { |
| regulator-name = "vdd_1v8_gen"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>; |
| }; |
| |
| sd3 { |
| regulator-name = "vddio_ddr"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>; |
| }; |
| |
| ldo0 { |
| regulator-name = "avdd_pll"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_1>; |
| }; |
| |
| ldo1 { |
| regulator-name = "vdd_ddr_hs"; |
| regulator-min-microvolt = <1000000>; |
| regulator-max-microvolt = <1000000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>; |
| }; |
| |
| ldo2 { |
| regulator-name = "avdd_usb"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>; |
| }; |
| |
| ldo3 { |
| regulator-name = "vdd_sdmmc3"; |
| regulator-min-microvolt = <3000000>; |
| regulator-max-microvolt = <3000000>; |
| regulator-always-on; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>; |
| }; |
| |
| ldo4 { |
| regulator-name = "vdd_rtc"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_0>; |
| }; |
| |
| ldo5 { |
| regulator-name = "vdd_ddr_rx"; |
| regulator-min-microvolt = <2850000>; |
| regulator-max-microvolt = <2850000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_0>; |
| }; |
| |
| ldo6 { |
| regulator-name = "avdd_osc"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>; |
| }; |
| |
| ldo7 { |
| regulator-name = "vdd_1v2_mhl"; |
| regulator-min-microvolt = <1050000>; |
| regulator-max-microvolt = <1250000>; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>; |
| }; |
| |
| ldo8 { |
| regulator-name = "avdd_dsi_csi"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| |
| maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>; |
| }; |
| }; |
| }; |
| }; |
| ... |