mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 18:13:04 +00:00
bd91530aee
The X-Powers AXP323 is a PMIC used on some newer Allwinner devices. It is almost the same as the AXP313, but supports dual-phasing the first two DC/DC converters. A pure AXP313 driver wouldn't know about this, and might turn the linked DCDC2 regulator off, as it does not seem to be used. This makes the AXP323 incompatible to the AXP313a. Add the new compatible string, and treat it like the AXP313a. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Reviewed-by: Chen-Yu Tsai <wens@csie.org> Acked-by: Rob Herring (Arm) <robh@kernel.org> Link: https://lore.kernel.org/r/20241007001408.27249-2-andre.przywara@arm.com Signed-off-by: Lee Jones <lee@kernel.org>
422 lines
10 KiB
YAML
422 lines
10 KiB
YAML
# SPDX-License-Identifier: GPL-2.0
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: X-Powers AXP PMIC
|
|
|
|
maintainers:
|
|
- Chen-Yu Tsai <wens@csie.org>
|
|
|
|
allOf:
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- x-powers,axp152
|
|
- x-powers,axp202
|
|
- x-powers,axp209
|
|
|
|
then:
|
|
properties:
|
|
regulators:
|
|
properties:
|
|
x-powers,dcdc-freq:
|
|
minimum: 750
|
|
maximum: 1875
|
|
default: 1500
|
|
|
|
else:
|
|
properties:
|
|
regulators:
|
|
properties:
|
|
x-powers,dcdc-freq:
|
|
minimum: 1800
|
|
maximum: 4050
|
|
default: 3000
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- x-powers,axp152
|
|
- x-powers,axp202
|
|
- x-powers,axp209
|
|
|
|
then:
|
|
properties:
|
|
x-powers,drive-vbus-en: false
|
|
|
|
- if:
|
|
not:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: x-powers,axp806
|
|
|
|
then:
|
|
properties:
|
|
x-powers,self-working-mode: false
|
|
x-powers,master-mode: false
|
|
|
|
- if:
|
|
not:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- x-powers,axp15060
|
|
- x-powers,axp305
|
|
- x-powers,axp313a
|
|
- x-powers,axp323
|
|
|
|
then:
|
|
required:
|
|
- interrupts
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- x-powers,axp313a
|
|
- x-powers,axp323
|
|
- x-powers,axp15060
|
|
- x-powers,axp717
|
|
|
|
then:
|
|
properties:
|
|
x-powers,dcdc-freq: false
|
|
|
|
properties:
|
|
compatible:
|
|
oneOf:
|
|
- enum:
|
|
- x-powers,axp152
|
|
- x-powers,axp192
|
|
- x-powers,axp202
|
|
- x-powers,axp209
|
|
- x-powers,axp221
|
|
- x-powers,axp223
|
|
- x-powers,axp313a
|
|
- x-powers,axp323
|
|
- x-powers,axp717
|
|
- x-powers,axp803
|
|
- x-powers,axp806
|
|
- x-powers,axp809
|
|
- x-powers,axp813
|
|
- x-powers,axp15060
|
|
- items:
|
|
- const: x-powers,axp228
|
|
- const: x-powers,axp221
|
|
- items:
|
|
- const: x-powers,axp805
|
|
- const: x-powers,axp806
|
|
- items:
|
|
- const: x-powers,axp305
|
|
- const: x-powers,axp805
|
|
- const: x-powers,axp806
|
|
- items:
|
|
- const: x-powers,axp818
|
|
- const: x-powers,axp813
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
interrupt-controller: true
|
|
|
|
"#interrupt-cells":
|
|
const: 1
|
|
|
|
x-powers,drive-vbus-en:
|
|
type: boolean
|
|
description: >
|
|
Set this when the N_VBUSEN pin is used as an output pin to control an
|
|
external regulator to drive the OTG VBus, rather then as an input pin
|
|
which signals whether the board is driving OTG VBus or not.
|
|
|
|
x-powers,self-working-mode:
|
|
type: boolean
|
|
description: >
|
|
Set this when the PMIC is wired for self-working mode through the MODESET
|
|
pin.
|
|
|
|
x-powers,master-mode:
|
|
type: boolean
|
|
description: >
|
|
Set this when the PMIC is wired for master mode through the MODESET pin.
|
|
|
|
vin1-supply:
|
|
description: >
|
|
DCDC1 power supply node, if present.
|
|
|
|
vin2-supply:
|
|
description: >
|
|
DCDC2 power supply node, if present.
|
|
|
|
vin3-supply:
|
|
description: >
|
|
DCDC3 power supply node, if present.
|
|
|
|
vin4-supply:
|
|
description: >
|
|
DCDC4 power supply node, if present.
|
|
|
|
vin5-supply:
|
|
description: >
|
|
DCDC5 power supply node, if present.
|
|
|
|
vin6-supply:
|
|
description: >
|
|
DCDC6 power supply node, if present.
|
|
|
|
vin7-supply:
|
|
description: >
|
|
DCDC7 power supply node, if present.
|
|
|
|
vina-supply:
|
|
description: >
|
|
DCDCA power supply node, if present.
|
|
|
|
vinb-supply:
|
|
description: >
|
|
DCDCB power supply node, if present.
|
|
|
|
vinc-supply:
|
|
description: >
|
|
DCDCC power supply node, if present.
|
|
|
|
vind-supply:
|
|
description: >
|
|
DCDCD power supply node, if present.
|
|
|
|
vine-supply:
|
|
description: >
|
|
DCDCE power supply node, if present.
|
|
|
|
acin-supply:
|
|
description: >
|
|
LDO1 power supply node, if present.
|
|
|
|
ldo24in-supply:
|
|
description: >
|
|
LDO2 and LDO4 power supply node, if present.
|
|
|
|
ldo3in-supply:
|
|
description: >
|
|
LDO3 power supply node, if present.
|
|
|
|
ldo5in-supply:
|
|
description: >
|
|
LDO5 power supply node, if present.
|
|
|
|
aldoin-supply:
|
|
description: >
|
|
ALDO* power supply node, if present.
|
|
|
|
bldoin-supply:
|
|
description: >
|
|
BLDO* power supply node, if present.
|
|
|
|
cldoin-supply:
|
|
description: >
|
|
CLDO* power supply node, if present.
|
|
|
|
dldoin-supply:
|
|
description: >
|
|
DLDO* power supply node, if present.
|
|
|
|
eldoin-supply:
|
|
description: >
|
|
ELDO* power supply node, if present.
|
|
|
|
fldoin-supply:
|
|
description: >
|
|
FLDO* power supply node, if present.
|
|
|
|
ips-supply:
|
|
description: >
|
|
LDO_IO0, LDO_IO1 and RTC_LDO power supply node, if present.
|
|
|
|
drivevbus-supply:
|
|
description: >
|
|
DRIVEVBUS power supply node, if present.
|
|
|
|
swin-supply:
|
|
description: >
|
|
SW power supply node, if present.
|
|
|
|
adc:
|
|
$ref: /schemas/iio/adc/x-powers,axp209-adc.yaml#
|
|
|
|
gpio:
|
|
$ref: /schemas/gpio/x-powers,axp209-gpio.yaml#
|
|
|
|
ac-power:
|
|
$ref: /schemas/power/supply/x-powers,axp20x-ac-power-supply.yaml#
|
|
|
|
battery-power:
|
|
$ref: /schemas/power/supply/x-powers,axp20x-battery-power-supply.yaml#
|
|
|
|
usb-power:
|
|
$ref: /schemas/power/supply/x-powers,axp20x-usb-power-supply.yaml#
|
|
|
|
regulators:
|
|
type: object
|
|
|
|
properties:
|
|
x-powers,dcdc-freq:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description: >
|
|
Defines the work frequency of DC-DC in kHz.
|
|
|
|
patternProperties:
|
|
"^(([a-f])?ldo[0-9]|dcdc[0-7a-e]|ldo(_|-)io(0|1)|(dc1)?sw|rtc(_|-)ldo|cpusldo|drivevbus|dc5ldo|boost)$":
|
|
$ref: /schemas/regulator/regulator.yaml#
|
|
type: object
|
|
unevaluatedProperties: false
|
|
|
|
properties:
|
|
regulator-ramp-delay:
|
|
description: >
|
|
Only 800 and 1600 are valid for the DCDC2 and LDO3 regulators on
|
|
the AXP209.
|
|
|
|
regulator-soft-start:
|
|
description: >
|
|
Only valid for the LDO3 regulator.
|
|
|
|
x-powers,dcdc-workmode:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
enum: [0, 1]
|
|
description: >
|
|
Only valid for DCDC regulators. Setup 1 for PWM mode, 0
|
|
for AUTO (PWM/PFM) mode. The DCDC regulators work in a
|
|
mixed PWM/PFM mode, using PFM under light loads and
|
|
switching to PWM for heavier loads. Forcing PWM mode
|
|
trades efficiency under light loads for lower output
|
|
noise. This probably makes sense for HiFi audio related
|
|
applications that aren't battery constrained.
|
|
|
|
additionalProperties: false
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- "#interrupt-cells"
|
|
- interrupt-controller
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
i2c {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
pmic@30 {
|
|
compatible = "x-powers,axp152";
|
|
reg = <0x30>;
|
|
interrupts = <0>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <1>;
|
|
};
|
|
};
|
|
|
|
- |
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
|
|
i2c {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
pmic@34 {
|
|
compatible = "x-powers,axp209";
|
|
reg = <0x34>;
|
|
interrupt-parent = <&nmi_intc>;
|
|
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <1>;
|
|
|
|
ac_power_supply: ac-power {
|
|
compatible = "x-powers,axp202-ac-power-supply";
|
|
};
|
|
|
|
axp_adc: adc {
|
|
compatible = "x-powers,axp209-adc";
|
|
#io-channel-cells = <1>;
|
|
};
|
|
|
|
axp_gpio: gpio {
|
|
compatible = "x-powers,axp209-gpio";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
|
|
gpio0-adc-pin {
|
|
pins = "GPIO0";
|
|
function = "adc";
|
|
};
|
|
};
|
|
|
|
battery_power_supply: battery-power {
|
|
compatible = "x-powers,axp209-battery-power-supply";
|
|
};
|
|
|
|
regulators {
|
|
/* Default work frequency for buck regulators */
|
|
x-powers,dcdc-freq = <1500>;
|
|
|
|
reg_dcdc2: dcdc2 {
|
|
regulator-always-on;
|
|
regulator-min-microvolt = <1000000>;
|
|
regulator-max-microvolt = <1450000>;
|
|
regulator-name = "vdd-cpu";
|
|
};
|
|
|
|
reg_dcdc3: dcdc3 {
|
|
regulator-always-on;
|
|
regulator-min-microvolt = <1000000>;
|
|
regulator-max-microvolt = <1400000>;
|
|
regulator-name = "vdd-int-dll";
|
|
};
|
|
|
|
reg_ldo1: ldo1 {
|
|
/* LDO1 is a fixed output regulator */
|
|
regulator-always-on;
|
|
regulator-min-microvolt = <1300000>;
|
|
regulator-max-microvolt = <1300000>;
|
|
regulator-name = "vdd-rtc";
|
|
};
|
|
|
|
reg_ldo2: ldo2 {
|
|
regulator-always-on;
|
|
regulator-min-microvolt = <3000000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
regulator-name = "avcc";
|
|
};
|
|
|
|
reg_ldo3: ldo3 {
|
|
regulator-name = "ldo3";
|
|
};
|
|
|
|
reg_ldo4: ldo4 {
|
|
regulator-name = "ldo4";
|
|
};
|
|
|
|
reg_ldo5: ldo5 {
|
|
regulator-name = "ldo5";
|
|
};
|
|
};
|
|
|
|
usb_power_supply: usb-power {
|
|
compatible = "x-powers,axp202-usb-power-supply";
|
|
};
|
|
};
|
|
};
|