| # SPDX-License-Identifier: GPL-2.0-only |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/regulator/maxim,max8997.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Maxim MAX8997 Power Management IC |
| |
| maintainers: |
| - Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> |
| |
| description: | |
| The Maxim MAX8997 is a Power Management IC which includes voltage and current |
| regulators, charger controller with fuel gauge, RTC, clock outputs, haptic |
| motor driver, flash LED driver and Micro-USB Interface Controller. |
| |
| The binding here is not complete and describes only regulator and charger |
| controller parts. |
| |
| properties: |
| compatible: |
| const: maxim,max8997-pmic |
| |
| charger-supply: |
| description: | |
| Regulator node for charging current. |
| |
| interrupts: |
| items: |
| - description: irq1 interrupt |
| - description: alert interrupt |
| |
| max8997,pmic-buck1-dvs-voltage: |
| $ref: /schemas/types.yaml#/definitions/uint32-array |
| minItems: 1 |
| maxItems: 8 |
| description: | |
| A set of 8 voltage values in micro-volt (uV) units for buck1 when |
| changing voltage using GPIO DVS. |
| If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is |
| specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should |
| specify at least one voltage level (which would be a safe operating |
| voltage). |
| |
| max8997,pmic-buck2-dvs-voltage: |
| $ref: /schemas/types.yaml#/definitions/uint32-array |
| minItems: 1 |
| maxItems: 8 |
| description: | |
| A set of 8 voltage values in micro-volt (uV) units for buck2 when |
| changing voltage using GPIO DVS. |
| If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is |
| specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should |
| specify at least one voltage level (which would be a safe operating |
| voltage). |
| |
| max8997,pmic-buck5-dvs-voltage: |
| $ref: /schemas/types.yaml#/definitions/uint32-array |
| minItems: 1 |
| maxItems: 8 |
| description: | |
| A set of 8 voltage values in micro-volt (uV) units for buck5 when |
| changing voltage using GPIO DVS. |
| If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is |
| specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should |
| specify at least one voltage level (which would be a safe operating |
| voltage). |
| |
| max8997,pmic-buck1-uses-gpio-dvs: |
| type: boolean |
| description: | |
| buck1 can be controlled by GPIO DVS. |
| |
| max8997,pmic-buck2-uses-gpio-dvs: |
| type: boolean |
| description: | |
| buck2 can be controlled by GPIO DVS. |
| |
| max8997,pmic-buck5-uses-gpio-dvs: |
| type: boolean |
| description: | |
| buck5 can be controlled by GPIO DVS. |
| |
| max8997,pmic-buck125-default-dvs-idx: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 0 |
| maximum: 7 |
| default: 0 |
| description: | |
| Default voltage setting selected from the possible 8 options selectable |
| by the dvs gpios. The value of this property should be between 0 and 7. |
| If not specified or if out of range, the default value of this property |
| is set to 0. |
| |
| max8997,pmic-buck125-dvs-gpios: |
| minItems: 3 |
| maxItems: 3 |
| description: | |
| GPIO specifiers for three host gpio's used for DVS. |
| |
| max8997,pmic-ignore-gpiodvs-side-effect: |
| type: boolean |
| description: | |
| When GPIO-DVS mode is used for multiple bucks, changing the voltage value |
| of one of the bucks may affect that of another buck, which is the side |
| effect of the change (set_voltage). Use this property to ignore such |
| side effects and change the voltage. |
| |
| reg: |
| maxItems: 1 |
| |
| regulators: |
| type: object |
| description: |
| List of child nodes that specify the regulators. |
| |
| patternProperties: |
| # 1-18 and 21 LDOs |
| "^LDO([1-9]|1[0-8]|21)$": |
| type: object |
| $ref: regulator.yaml# |
| description: |
| Properties for single LDO regulator. |
| |
| properties: |
| regulator-name: true |
| |
| required: |
| - regulator-name |
| |
| unevaluatedProperties: false |
| |
| # 7 bucks |
| "^BUCK[1-7]$": |
| type: object |
| $ref: regulator.yaml# |
| description: |
| Properties for single BUCK regulator. |
| |
| properties: |
| regulator-name: true |
| |
| required: |
| - regulator-name |
| |
| unevaluatedProperties: false |
| |
| "^EN32KHZ_[AC]P$": |
| type: object |
| $ref: regulator.yaml# |
| description: |
| 32768 Hz clock output (modelled as regulator) |
| |
| properties: |
| regulator-name: true |
| regulator-always-on: true |
| regulator-boot-on: true |
| |
| required: |
| - regulator-name |
| |
| additionalProperties: false |
| |
| properties: |
| CHARGER: |
| type: object |
| $ref: regulator.yaml# |
| description: main battery charger current control |
| |
| properties: |
| regulator-name: true |
| |
| required: |
| - regulator-name |
| |
| unevaluatedProperties: false |
| |
| CHARGER_CV: |
| type: object |
| $ref: regulator.yaml# |
| description: main battery charger voltage control |
| |
| properties: |
| regulator-name: true |
| |
| required: |
| - regulator-name |
| |
| unevaluatedProperties: false |
| |
| CHARGER_TOPOFF: |
| type: object |
| $ref: regulator.yaml# |
| description: end of charge current threshold level |
| |
| properties: |
| regulator-name: true |
| |
| required: |
| - regulator-name |
| |
| unevaluatedProperties: false |
| |
| ENVICHG: |
| type: object |
| $ref: regulator.yaml# |
| description: | |
| Battery Charging Current Monitor Output. This is a fixed voltage type |
| regulator |
| properties: |
| regulator-name: true |
| |
| required: |
| - regulator-name |
| |
| unevaluatedProperties: false |
| |
| ESAFEOUT1: |
| type: object |
| $ref: regulator.yaml# |
| description: LDO19 |
| |
| properties: |
| regulator-name: true |
| |
| required: |
| - regulator-name |
| |
| unevaluatedProperties: false |
| |
| ESAFEOUT2: |
| type: object |
| $ref: regulator.yaml# |
| description: LDO20 |
| |
| properties: |
| regulator-name: true |
| |
| required: |
| - regulator-name |
| |
| unevaluatedProperties: false |
| |
| required: |
| - compatible |
| - max8997,pmic-buck1-dvs-voltage |
| - max8997,pmic-buck2-dvs-voltage |
| - max8997,pmic-buck5-dvs-voltage |
| - reg |
| - regulators |
| |
| dependencies: |
| max8997,pmic-buck1-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ] |
| max8997,pmic-buck2-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ] |
| max8997,pmic-buck5-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ] |
| |
| additionalProperties: false |
| |
| if: |
| anyOf: |
| - required: |
| - max8997,pmic-buck1-uses-gpio-dvs |
| - required: |
| - max8997,pmic-buck2-uses-gpio-dvs |
| - required: |
| - max8997,pmic-buck5-uses-gpio-dvs |
| then: |
| properties: |
| max8997,pmic-buck1-dvs-voltage: |
| minItems: 8 |
| maxItems: 8 |
| max8997,pmic-buck2-dvs-voltage: |
| minItems: 8 |
| maxItems: 8 |
| max8997,pmic-buck5-dvs-voltage: |
| minItems: 8 |
| maxItems: 8 |
| |
| examples: |
| - | |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/interrupt-controller/irq.h> |
| |
| i2c { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| pmic@66 { |
| compatible = "maxim,max8997-pmic"; |
| reg = <0x66>; |
| |
| interrupts-extended = <&gpx0 7 IRQ_TYPE_LEVEL_LOW>, |
| <&gpx2 3 IRQ_TYPE_EDGE_FALLING>; |
| |
| max8997,pmic-buck1-uses-gpio-dvs; |
| max8997,pmic-buck2-uses-gpio-dvs; |
| max8997,pmic-buck5-uses-gpio-dvs; |
| |
| max8997,pmic-ignore-gpiodvs-side-effect; |
| max8997,pmic-buck125-default-dvs-idx = <0>; |
| |
| max8997,pmic-buck125-dvs-gpios = <&gpx0 5 GPIO_ACTIVE_HIGH>, |
| <&gpx0 6 GPIO_ACTIVE_HIGH>, |
| <&gpl0 0 GPIO_ACTIVE_HIGH>; |
| |
| max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>, |
| <1250000>, <1200000>, |
| <1150000>, <1100000>, |
| <1000000>, <950000>; |
| |
| max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>, |
| <950000>, <900000>, |
| <1100000>, <1000000>, |
| <950000>, <900000>; |
| |
| max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>, |
| <1200000>, <1200000>, |
| <1200000>, <1200000>, |
| <1200000>, <1200000>; |
| |
| pinctrl-0 = <&max8997_irq>, <&otg_gp>, <&usb_sel>; |
| pinctrl-names = "default"; |
| |
| charger-supply = <&charger_reg>; |
| |
| regulators { |
| LDO1 { |
| regulator-name = "VADC_3.3V_C210"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-always-on; |
| }; |
| |
| LDO2 { |
| regulator-name = "VALIVE_1.1V_C210"; |
| regulator-min-microvolt = <1100000>; |
| regulator-max-microvolt = <1100000>; |
| regulator-always-on; |
| }; |
| |
| BUCK1 { |
| regulator-name = "VARM_1.2V_C210"; |
| regulator-min-microvolt = <65000>; |
| regulator-max-microvolt = <2225000>; |
| regulator-always-on; |
| }; |
| |
| // ... |
| |
| BUCK7 { |
| regulator-name = "VCC_SUB_2.0V"; |
| regulator-min-microvolt = <2000000>; |
| regulator-max-microvolt = <2000000>; |
| regulator-always-on; |
| }; |
| |
| ESAFEOUT1 { |
| regulator-name = "SAFEOUT1"; |
| }; |
| |
| ESAFEOUT2 { |
| regulator-name = "SAFEOUT2"; |
| regulator-boot-on; |
| }; |
| |
| EN32KHZ_AP { |
| regulator-name = "EN32KHZ_AP"; |
| regulator-always-on; |
| }; |
| |
| EN32KHZ_CP { |
| regulator-name = "EN32KHZ_CP"; |
| regulator-always-on; |
| }; |
| |
| CHARGER { |
| regulator-name = "CHARGER"; |
| regulator-min-microamp = <200000>; |
| regulator-max-microamp = <950000>; |
| }; |
| |
| CHARGER_CV { |
| regulator-name = "CHARGER_CV"; |
| regulator-min-microvolt = <4200000>; |
| regulator-max-microvolt = <4200000>; |
| regulator-always-on; |
| }; |
| |
| CHARGER_TOPOFF { |
| regulator-name = "CHARGER_TOPOFF"; |
| regulator-min-microamp = <200000>; |
| regulator-max-microamp = <200000>; |
| regulator-always-on; |
| }; |
| }; |
| }; |
| }; |
| |
| - | |
| #include <dt-bindings/interrupt-controller/irq.h> |
| |
| i2c { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| pmic@66 { |
| compatible = "maxim,max8997-pmic"; |
| reg = <0x66>; |
| |
| interrupt-parent = <&gpx0>; |
| interrupts = <4 IRQ_TYPE_LEVEL_LOW>, |
| <3 IRQ_TYPE_EDGE_FALLING>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&max8997_irq>; |
| |
| max8997,pmic-buck1-dvs-voltage = <1350000>; |
| max8997,pmic-buck2-dvs-voltage = <1100000>; |
| max8997,pmic-buck5-dvs-voltage = <1200000>; |
| |
| regulators { |
| LDO1 { |
| regulator-name = "VDD_ABB_3.3V"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| }; |
| |
| // ... |
| |
| BUCK1 { |
| regulator-name = "VDD_ARM_1.2V"; |
| regulator-min-microvolt = <950000>; |
| regulator-max-microvolt = <1350000>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| // ... |
| |
| EN32KHZ_AP { |
| regulator-name = "EN32KHZ_AP"; |
| regulator-always-on; |
| }; |
| }; |
| }; |
| }; |