| # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/mfd/sprd,sc2731.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Spreadtrum SC27xx PMIC |
| |
| maintainers: |
| - Orson Zhai <orsonzhai@gmail.com> |
| - Baolin Wang <baolin.wang7@gmail.com> |
| - Chunyan Zhang <zhang.lyra@gmail.com> |
| |
| description: | |
| Spreadtrum PMICs belonging to the SC27xx series integrate all mobile handset |
| power management, audio codec, battery management and user interface support |
| functions in a single chip. They have 6 major functional blocks: |
| - DCDCs to support CPU, memory |
| - LDOs to support both internal and external requirements |
| - Battery management system, such as charger, fuel gauge |
| - Audio codec |
| - User interface functions, such as indicator, flash LED and so on |
| - IC level interface, such as power on/off control, RTC, typec and so on |
| |
| properties: |
| $nodename: |
| pattern: '^pmic@[0-9a-f]+$' |
| |
| compatible: |
| enum: |
| - sprd,sc2720 |
| - sprd,sc2721 |
| - sprd,sc2723 |
| - sprd,sc2730 |
| - sprd,sc2731 |
| |
| reg: |
| maxItems: 1 |
| |
| interrupts: |
| maxItems: 1 |
| |
| interrupt-controller: true |
| spi-max-frequency: true |
| |
| '#address-cells': |
| const: 1 |
| |
| '#interrupt-cells': |
| const: 1 |
| |
| '#size-cells': |
| const: 0 |
| |
| regulators: |
| type: object |
| $ref: /schemas/regulator/sprd,sc2731-regulator.yaml# |
| |
| patternProperties: |
| "^adc@[0-9a-f]+$": |
| type: object |
| $ref: /schemas/iio/adc/sprd,sc2720-adc.yaml# |
| |
| "^charger@[0-9a-f]+$": |
| type: object |
| $ref: /schemas/power/supply/sc2731-charger.yaml# |
| |
| "^efuse@[0-9a-f]+$": |
| type: object |
| additionalProperties: true |
| properties: |
| compatible: |
| enum: |
| - sprd,sc2720-efuse |
| - sprd,sc2721-efuse |
| - sprd,sc2723-efuse |
| - sprd,sc2730-efuse |
| - sprd,sc2731-efuse |
| |
| "^fuel-gauge@[0-9a-f]+$": |
| type: object |
| $ref: /schemas/power/supply/sc27xx-fg.yaml# |
| |
| "^gpio@[0-9a-f]+$": |
| type: object |
| $ref: /schemas/gpio/sprd,gpio-eic.yaml# |
| |
| "^led-controller@[0-9a-f]+$": |
| type: object |
| $ref: /schemas/leds/sprd,sc2731-bltc.yaml# |
| |
| "^rtc@[0-9a-f]+$": |
| type: object |
| $ref: /schemas/rtc/sprd,sc2731-rtc.yaml# |
| |
| "^vibrator@[0-9a-f]+$": |
| type: object |
| $ref: /schemas/input/sprd,sc27xx-vibrator.yaml# |
| |
| required: |
| - compatible |
| - reg |
| - interrupts |
| - interrupt-controller |
| - spi-max-frequency |
| - '#address-cells' |
| - '#interrupt-cells' |
| - '#size-cells' |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| #include <dt-bindings/interrupt-controller/irq.h> |
| #include <dt-bindings/leds/common.h> |
| |
| spi { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| sc2731_pmic: pmic@0 { |
| compatible = "sprd,sc2731"; |
| reg = <0>; |
| interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; |
| interrupt-controller; |
| spi-max-frequency = <26000000>; |
| #address-cells = <1>; |
| #interrupt-cells = <1>; |
| #size-cells = <0>; |
| |
| charger@0 { |
| compatible = "sprd,sc2731-charger"; |
| reg = <0x0>; |
| phys = <&ssphy>; |
| monitored-battery = <&bat>; |
| }; |
| |
| led-controller@200 { |
| compatible = "sprd,sc2731-bltc"; |
| reg = <0x200>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| led@0 { |
| reg = <0x0>; |
| color = <LED_COLOR_ID_RED>; |
| }; |
| |
| led@1 { |
| reg = <0x1>; |
| color = <LED_COLOR_ID_GREEN>; |
| }; |
| |
| led@2 { |
| reg = <0x2>; |
| color = <LED_COLOR_ID_BLUE>; |
| }; |
| }; |
| |
| rtc@280 { |
| compatible = "sprd,sc2731-rtc"; |
| reg = <0x280>; |
| interrupt-parent = <&sc2731_pmic>; |
| interrupts = <2>; |
| }; |
| |
| pmic_eic: gpio@300 { |
| compatible = "sprd,sc2731-eic"; |
| reg = <0x300>; |
| interrupt-parent = <&sc2731_pmic>; |
| interrupts = <5>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| }; |
| |
| efuse@380 { |
| compatible = "sprd,sc2731-efuse"; |
| reg = <0x380>; |
| hwlocks = <&hwlock 12>; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| /* Data cells */ |
| fgu_calib: calib@6 { |
| reg = <0x6 0x2>; |
| bits = <0 9>; |
| }; |
| |
| adc_big_scale: calib@24 { |
| reg = <0x24 0x2>; |
| }; |
| |
| adc_small_scale: calib@26 { |
| reg = <0x26 0x2>; |
| }; |
| }; |
| |
| adc@480 { |
| compatible = "sprd,sc2731-adc"; |
| reg = <0x480>; |
| interrupt-parent = <&sc2731_pmic>; |
| interrupts = <0>; |
| #io-channel-cells = <1>; |
| hwlocks = <&hwlock 4>; |
| nvmem-cells = <&adc_big_scale>, <&adc_small_scale>; |
| nvmem-cell-names = "big_scale_calib", "small_scale_calib"; |
| }; |
| |
| fuel-gauge@a00 { |
| compatible = "sprd,sc2731-fgu"; |
| reg = <0xa00>; |
| battery-detect-gpios = <&pmic_eic 9 GPIO_ACTIVE_HIGH>; |
| interrupt-parent = <&sc2731_pmic>; |
| interrupts = <4>; |
| io-channels = <&pmic_adc 5>, <&pmic_adc 14>; |
| io-channel-names = "bat-temp", "charge-vol"; |
| nvmem-cells = <&fgu_calib>; |
| nvmem-cell-names = "fgu_calib"; |
| monitored-battery = <&bat>; |
| sprd,calib-resistance-micro-ohms = <21500>; |
| }; |
| |
| vibrator@ec8 { |
| compatible = "sprd,sc2731-vibrator"; |
| reg = <0xec8>; |
| }; |
| |
| regulators { |
| compatible = "sprd,sc2731-regulator"; |
| |
| BUCK_CPU0 { |
| regulator-name = "vddarm0"; |
| regulator-min-microvolt = <400000>; |
| regulator-max-microvolt = <1996875>; |
| regulator-ramp-delay = <25000>; |
| regulator-always-on; |
| }; |
| |
| LDO_CAMA0 { |
| regulator-name = "vddcama0"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <3750000>; |
| regulator-enable-ramp-delay = <100>; |
| }; |
| }; |
| }; |
| }; |
| ... |