cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

maxim,max8997.yaml (12659B)


      1# SPDX-License-Identifier: GPL-2.0-only
      2%YAML 1.2
      3---
      4$id: http://devicetree.org/schemas/regulator/maxim,max8997.yaml#
      5$schema: http://devicetree.org/meta-schemas/core.yaml#
      6
      7title: Maxim MAX8997 Power Management IC
      8
      9maintainers:
     10  - Krzysztof Kozlowski <krzk@kernel.org>
     11
     12description: |
     13  The Maxim MAX8997 is a Power Management IC which includes voltage and current
     14  regulators, charger controller with fuel gauge, RTC, clock outputs, haptic
     15  motor driver, flash LED driver and Micro-USB Interface Controller.
     16
     17  The binding here is not complete and describes only regulator and charger
     18  controller parts.
     19
     20properties:
     21  compatible:
     22    const: maxim,max8997-pmic
     23
     24  charger-supply:
     25    description: |
     26      Regulator node for charging current.
     27
     28  interrupts:
     29    items:
     30      - description: irq1 interrupt
     31      - description: alert interrupt
     32
     33  max8997,pmic-buck1-dvs-voltage:
     34    $ref: /schemas/types.yaml#/definitions/uint32-array
     35    minItems: 1
     36    maxItems: 8
     37    description: |
     38      A set of 8 voltage values in micro-volt (uV) units for buck1 when
     39      changing voltage using GPIO DVS.
     40      If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
     41      specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
     42      specify at least one voltage level (which would be a safe operating
     43      voltage).
     44
     45  max8997,pmic-buck2-dvs-voltage:
     46    $ref: /schemas/types.yaml#/definitions/uint32-array
     47    minItems: 1
     48    maxItems: 8
     49    description: |
     50      A set of 8 voltage values in micro-volt (uV) units for buck2 when
     51      changing voltage using GPIO DVS.
     52      If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
     53      specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
     54      specify at least one voltage level (which would be a safe operating
     55      voltage).
     56
     57  max8997,pmic-buck5-dvs-voltage:
     58    $ref: /schemas/types.yaml#/definitions/uint32-array
     59    minItems: 1
     60    maxItems: 8
     61    description: |
     62      A set of 8 voltage values in micro-volt (uV) units for buck5 when
     63      changing voltage using GPIO DVS.
     64      If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
     65      specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
     66      specify at least one voltage level (which would be a safe operating
     67      voltage).
     68
     69  max8997,pmic-buck1-uses-gpio-dvs:
     70    type: boolean
     71    description: |
     72      buck1 can be controlled by GPIO DVS.
     73
     74  max8997,pmic-buck2-uses-gpio-dvs:
     75    type: boolean
     76    description: |
     77      buck2 can be controlled by GPIO DVS.
     78
     79  max8997,pmic-buck5-uses-gpio-dvs:
     80    type: boolean
     81    description: |
     82      buck5 can be controlled by GPIO DVS.
     83
     84  max8997,pmic-buck125-default-dvs-idx:
     85    $ref: /schemas/types.yaml#/definitions/uint32
     86    minimum: 0
     87    maximum: 7
     88    default: 0
     89    description: |
     90      Default voltage setting selected from the possible 8 options selectable
     91      by the dvs gpios. The value of this property should be between 0 and 7.
     92      If not specified or if out of range, the default value of this property
     93      is set to 0.
     94
     95  max8997,pmic-buck125-dvs-gpios:
     96    minItems: 3
     97    maxItems: 3
     98    description: |
     99      GPIO specifiers for three host gpio's used for DVS.
    100
    101  max8997,pmic-ignore-gpiodvs-side-effect:
    102    type: boolean
    103    description: |
    104      When GPIO-DVS mode is used for multiple bucks, changing the voltage value
    105      of one of the bucks may affect that of another buck, which is the side
    106      effect of the change (set_voltage).  Use this property to ignore such
    107      side effects and change the voltage.
    108
    109  reg:
    110    maxItems: 1
    111
    112  regulators:
    113    type: object
    114    description:
    115      List of child nodes that specify the regulators.
    116
    117    patternProperties:
    118      # 1-18 and 21 LDOs
    119      "^LDO([1-9]|1[0-8]|21)$":
    120        type: object
    121        $ref: regulator.yaml#
    122        description:
    123          Properties for single LDO regulator.
    124
    125        properties:
    126          regulator-name: true
    127
    128        required:
    129          - regulator-name
    130
    131        unevaluatedProperties: false
    132
    133      # 7 bucks
    134      "^BUCK[1-7]$":
    135        type: object
    136        $ref: regulator.yaml#
    137        description:
    138          Properties for single BUCK regulator.
    139
    140        properties:
    141          regulator-name: true
    142
    143        required:
    144          - regulator-name
    145
    146        unevaluatedProperties: false
    147
    148      "^EN32KHZ_[AC]P$":
    149        type: object
    150        $ref: regulator.yaml#
    151        description:
    152          32768 Hz clock output (modelled as regulator)
    153
    154        properties:
    155          regulator-name: true
    156          regulator-always-on: true
    157          regulator-boot-on: true
    158
    159        required:
    160          - regulator-name
    161
    162        additionalProperties: false
    163
    164    properties:
    165      CHARGER:
    166        type: object
    167        $ref: regulator.yaml#
    168        description: main battery charger current control
    169
    170        properties:
    171          regulator-name: true
    172
    173        required:
    174          - regulator-name
    175
    176        unevaluatedProperties: false
    177
    178      CHARGER_CV:
    179        type: object
    180        $ref: regulator.yaml#
    181        description: main battery charger voltage control
    182
    183        properties:
    184          regulator-name: true
    185
    186        required:
    187          - regulator-name
    188
    189        unevaluatedProperties: false
    190
    191      CHARGER_TOPOFF:
    192        type: object
    193        $ref: regulator.yaml#
    194        description: end of charge current threshold level
    195
    196        properties:
    197          regulator-name: true
    198
    199        required:
    200          - regulator-name
    201
    202        unevaluatedProperties: false
    203
    204      ENVICHG:
    205        type: object
    206        $ref: regulator.yaml#
    207        description: |
    208          Battery Charging Current Monitor Output. This is a fixed voltage type
    209          regulator
    210        properties:
    211          regulator-name: true
    212
    213        required:
    214          - regulator-name
    215
    216        unevaluatedProperties: false
    217
    218      ESAFEOUT1:
    219        type: object
    220        $ref: regulator.yaml#
    221        description: LDO19
    222
    223        properties:
    224          regulator-name: true
    225
    226        required:
    227          - regulator-name
    228
    229        unevaluatedProperties: false
    230
    231      ESAFEOUT2:
    232        type: object
    233        $ref: regulator.yaml#
    234        description: LDO20
    235
    236        properties:
    237          regulator-name: true
    238
    239        required:
    240          - regulator-name
    241
    242        unevaluatedProperties: false
    243
    244required:
    245  - compatible
    246  - max8997,pmic-buck1-dvs-voltage
    247  - max8997,pmic-buck2-dvs-voltage
    248  - max8997,pmic-buck5-dvs-voltage
    249  - reg
    250  - regulators
    251
    252dependencies:
    253  max8997,pmic-buck1-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
    254  max8997,pmic-buck2-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
    255  max8997,pmic-buck5-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
    256
    257additionalProperties: false
    258
    259if:
    260  anyOf:
    261    - required:
    262        - max8997,pmic-buck1-uses-gpio-dvs
    263    - required:
    264        - max8997,pmic-buck2-uses-gpio-dvs
    265    - required:
    266        - max8997,pmic-buck5-uses-gpio-dvs
    267then:
    268  properties:
    269    max8997,pmic-buck1-dvs-voltage:
    270      minItems: 8
    271      maxItems: 8
    272    max8997,pmic-buck2-dvs-voltage:
    273      minItems: 8
    274      maxItems: 8
    275    max8997,pmic-buck5-dvs-voltage:
    276      minItems: 8
    277      maxItems: 8
    278
    279examples:
    280  - |
    281    #include <dt-bindings/gpio/gpio.h>
    282    #include <dt-bindings/interrupt-controller/irq.h>
    283
    284    i2c {
    285        #address-cells = <1>;
    286        #size-cells = <0>;
    287
    288        pmic@66 {
    289            compatible = "maxim,max8997-pmic";
    290            reg = <0x66>;
    291
    292            interrupts-extended = <&gpx0 7 IRQ_TYPE_LEVEL_LOW>,
    293                                  <&gpx2 3 IRQ_TYPE_EDGE_FALLING>;
    294
    295            max8997,pmic-buck1-uses-gpio-dvs;
    296            max8997,pmic-buck2-uses-gpio-dvs;
    297            max8997,pmic-buck5-uses-gpio-dvs;
    298
    299            max8997,pmic-ignore-gpiodvs-side-effect;
    300            max8997,pmic-buck125-default-dvs-idx = <0>;
    301
    302            max8997,pmic-buck125-dvs-gpios = <&gpx0 5 GPIO_ACTIVE_HIGH>,
    303                                             <&gpx0 6 GPIO_ACTIVE_HIGH>,
    304                                             <&gpl0 0 GPIO_ACTIVE_HIGH>;
    305
    306            max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
    307                                             <1250000>, <1200000>,
    308                                             <1150000>, <1100000>,
    309                                             <1000000>, <950000>;
    310
    311            max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>,
    312                                             <950000>,  <900000>,
    313                                             <1100000>, <1000000>,
    314                                             <950000>,  <900000>;
    315
    316            max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
    317                                             <1200000>, <1200000>,
    318                                             <1200000>, <1200000>,
    319                                             <1200000>, <1200000>;
    320
    321            pinctrl-0 = <&max8997_irq>, <&otg_gp>, <&usb_sel>;
    322            pinctrl-names = "default";
    323
    324            charger-supply = <&charger_reg>;
    325
    326            regulators {
    327                LDO1 {
    328                    regulator-name = "VADC_3.3V_C210";
    329                    regulator-min-microvolt = <3300000>;
    330                    regulator-max-microvolt = <3300000>;
    331                    regulator-always-on;
    332                };
    333
    334                LDO2 {
    335                    regulator-name = "VALIVE_1.1V_C210";
    336                    regulator-min-microvolt = <1100000>;
    337                    regulator-max-microvolt = <1100000>;
    338                    regulator-always-on;
    339                };
    340
    341                BUCK1 {
    342                    regulator-name = "VARM_1.2V_C210";
    343                    regulator-min-microvolt = <65000>;
    344                    regulator-max-microvolt = <2225000>;
    345                    regulator-always-on;
    346                };
    347
    348                // ...
    349
    350                BUCK7 {
    351                    regulator-name = "VCC_SUB_2.0V";
    352                    regulator-min-microvolt = <2000000>;
    353                    regulator-max-microvolt = <2000000>;
    354                    regulator-always-on;
    355                };
    356
    357                ESAFEOUT1 {
    358                    regulator-name = "SAFEOUT1";
    359                };
    360
    361                ESAFEOUT2 {
    362                    regulator-name = "SAFEOUT2";
    363                    regulator-boot-on;
    364                };
    365
    366                EN32KHZ_AP {
    367                    regulator-name = "EN32KHZ_AP";
    368                    regulator-always-on;
    369                };
    370
    371                EN32KHZ_CP {
    372                    regulator-name = "EN32KHZ_CP";
    373                    regulator-always-on;
    374                };
    375
    376                CHARGER {
    377                    regulator-name = "CHARGER";
    378                    regulator-min-microamp = <200000>;
    379                    regulator-max-microamp = <950000>;
    380                };
    381
    382                CHARGER_CV {
    383                    regulator-name = "CHARGER_CV";
    384                    regulator-min-microvolt = <4200000>;
    385                    regulator-max-microvolt = <4200000>;
    386                    regulator-always-on;
    387                };
    388
    389                CHARGER_TOPOFF {
    390                    regulator-name = "CHARGER_TOPOFF";
    391                    regulator-min-microamp = <200000>;
    392                    regulator-max-microamp = <200000>;
    393                    regulator-always-on;
    394                };
    395            };
    396        };
    397    };
    398
    399  - |
    400    #include <dt-bindings/interrupt-controller/irq.h>
    401
    402    i2c {
    403        #address-cells = <1>;
    404        #size-cells = <0>;
    405
    406        pmic@66 {
    407            compatible = "maxim,max8997-pmic";
    408            reg = <0x66>;
    409
    410            interrupt-parent = <&gpx0>;
    411            interrupts = <4 IRQ_TYPE_LEVEL_LOW>,
    412                         <3 IRQ_TYPE_EDGE_FALLING>;
    413            pinctrl-names = "default";
    414            pinctrl-0 = <&max8997_irq>;
    415
    416            max8997,pmic-buck1-dvs-voltage = <1350000>;
    417            max8997,pmic-buck2-dvs-voltage = <1100000>;
    418            max8997,pmic-buck5-dvs-voltage = <1200000>;
    419
    420            regulators {
    421                LDO1 {
    422                    regulator-name = "VDD_ABB_3.3V";
    423                    regulator-min-microvolt = <3300000>;
    424                    regulator-max-microvolt = <3300000>;
    425                };
    426
    427                // ...
    428
    429                BUCK1 {
    430                    regulator-name = "VDD_ARM_1.2V";
    431                    regulator-min-microvolt = <950000>;
    432                    regulator-max-microvolt = <1350000>;
    433                    regulator-always-on;
    434                    regulator-boot-on;
    435                };
    436
    437                // ...
    438
    439                EN32KHZ_AP {
    440                    regulator-name = "EN32KHZ_AP";
    441                    regulator-always-on;
    442                };
    443            };
    444        };
    445    };