* Add new Qualcomm PMI8998/PM660 SMB2 charger * bq256xx: support systems without thermistors * cros_pchg: fix peripheral device status after system resume * axp20x_usb_power: add support for AXP192 * qcom-pon: add support for pm8941 * at91-reset: prepare to expose reset reason to sysfs * switch all I2C drivers back to use .probe instead of .probe_new * convert some more DT bindings to YAML * misc. cleanups -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEE72YNB0Y/i3JqeVQT2O7X88g7+poFAmSjPRsACgkQ2O7X88g7 +ppEgw//SzE/6dgc5e2OG+qtHb2vnjUrmoz9w0/sGZuTVFhnvZ4ofpEyOrRR8/kV rUT6dqEPh3p/tHIyiLdcAG2JyA3QZ3G8rekdIUOj++vWn4S97FQsqBxwL/46D0om c7S+SDrCo/XKnJvRIiC8a+0HzAsjVUdaWdvzkEovrF5MRS1HeX4GXadaW/c6pdxN NfOZBR2F+JXHlC/nmBtpmQCJvikooz6DPvZd6Tiv9dlywOHNO7NSlcueuuhSofYp /j7BAXq/V+jEynNTPnaBwnO5aA1XPMpC/nOo4HuHjJbrHoXCt5bMhabA9bIlaplN 9bilfxmqqfaMkpWQOhF8qmz+s496WELcmGqGBZXvNBgn/85qYTPxue4JVe1D7ldh TjvGUBZkVUwkce052BZrPZCUTYhlrTBJ/6xpuGeUrPa3C9ib8e9Wm6C13zI2vsJV EeVxgt79cNkdioZ0GfibQTg+bJ7oa8BtwWEk0UaC9jfaPQGfNum05FHRik1a+A7R vehaoIYiCCMaXuHSZoqqjEocdnxXQCNkViMuYNqhN5Bcb0YdlMF6r0T2fa4HND0Y CU8uCofqTc67/RazqCsIRHNXDi6cJOYmdnSc1q7pYCO9/KmoMdP0xIFPB2Mca7uI 2rMooSE77ssYGc1gOW9GWuMNEdvJXNufJJzr5LLdMbhIh0ecy04= =9vtE -----END PGP SIGNATURE----- Merge tag 'for-v6.5' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply Pull power supply and reset updates from Sebastian Reichel: - Add new Qualcomm PMI8998/PM660 SMB2 charger - bq256xx: support systems without thermistors - cros_pchg: fix peripheral device status after system resume - axp20x_usb_power: add support for AXP192 - qcom-pon: add support for pm8941 - at91-reset: prepare to expose reset reason to sysfs - switch all I2C drivers back to use .probe instead of .probe_new - convert some more DT bindings to YAML - misc cleanups * tag 'for-v6.5' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (28 commits) MAINTAINERS: add documentation file for Microchip SAMA5D2 shutdown controller dt-bindings: power: reset: atmel,sama5d2-shdwc: convert to yaml dt-bindings: power: reset: atmel,at91sam9260-shdwc: convert to yaml power: reset: at91-reset: change the power on reason prototype power: reset: qcom-pon: add support for pm8941-pon dt-bindings: power: reset: qcom-pon: define pm8941-pon power: supply: add Qualcomm PMI8998 SMB2 Charger driver dt-bindings: power: supply: qcom,pmi8998-charger: add bindings for smb2 driver power: supply: rt9467: Make charger-enable control as logic level power: supply: Switch i2c drivers back to use .probe() power: reset: add HAS_IOPORT dependencies dt-bindings: power: supply: axp20x: Add AXP192 compatible power: supply: axp20x_usb_power: Add support for AXP192 power: supply: axp20x_usb_power: Remove variant IDs from VBUS polling check power: supply: axp20x_usb_power: Use regmap field for VBUS disabling power: supply: axp20x_usb_power: Use regmap fields for USB BC feature power: supply: axp20x_usb_power: Use regmap fields for VBUS monitor feature power: supply: axp20x_usb_power: Simplify USB current limit handling power: supply: hwmon: constify pointers to hwmon_channel_info power: supply: twl4030_madc_battery: Refactor twl4030_madc_bat_ext_changed() ...
334 lines
8.9 KiB
YAML
334 lines
8.9 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/mfd/qcom,spmi-pmic.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Qualcomm SPMI PMICs multi-function device
|
|
|
|
description: |
|
|
Some Qualcomm PMICs used with the Snapdragon series SoCs are interfaced
|
|
to the chip via the SPMI (System Power Management Interface) bus.
|
|
Support for multiple independent functions are implemented by splitting the
|
|
16-bit SPMI peripheral address space into 256 smaller fixed-size regions, 256 bytes
|
|
each. A function can consume one or more of these fixed-size register regions.
|
|
|
|
The Qualcomm SPMI series includes the PM8941, PM8841, PMA8084, PM8998 and other
|
|
PMICs. These PMICs use a "QPNP" scheme through SPMI interface.
|
|
QPNP is effectively a partitioning scheme for dividing the SPMI extended
|
|
register space up into logical pieces, and set of fixed register
|
|
locations/definitions within these regions, with some of these regions
|
|
specifically used for interrupt handling.
|
|
|
|
maintainers:
|
|
- Stephen Boyd <sboyd@kernel.org>
|
|
|
|
properties:
|
|
$nodename:
|
|
oneOf:
|
|
- pattern: '^pmic@.*$'
|
|
- pattern: '^pm(a|s)?[0-9]*@.*$'
|
|
deprecated: true
|
|
|
|
compatible:
|
|
items:
|
|
- enum:
|
|
- qcom,pm2250
|
|
- qcom,pm6125
|
|
- qcom,pm6150
|
|
- qcom,pm6150l
|
|
- qcom,pm6350
|
|
- qcom,pm660
|
|
- qcom,pm660l
|
|
- qcom,pm7250b
|
|
- qcom,pm7325
|
|
- qcom,pm8004
|
|
- qcom,pm8005
|
|
- qcom,pm8009
|
|
- qcom,pm8010
|
|
- qcom,pm8019
|
|
- qcom,pm8028
|
|
- qcom,pm8110
|
|
- qcom,pm8150
|
|
- qcom,pm8150b
|
|
- qcom,pm8150c
|
|
- qcom,pm8150l
|
|
- qcom,pm8226
|
|
- qcom,pm8350
|
|
- qcom,pm8350b
|
|
- qcom,pm8350c
|
|
- qcom,pm8550
|
|
- qcom,pm8550b
|
|
- qcom,pm8550ve
|
|
- qcom,pm8550vs
|
|
- qcom,pm8841
|
|
- qcom,pm8909
|
|
- qcom,pm8916
|
|
- qcom,pm8941
|
|
- qcom,pm8950
|
|
- qcom,pm8953
|
|
- qcom,pm8994
|
|
- qcom,pm8998
|
|
- qcom,pma8084
|
|
- qcom,pmd9635
|
|
- qcom,pmi632
|
|
- qcom,pmi8950
|
|
- qcom,pmi8962
|
|
- qcom,pmi8994
|
|
- qcom,pmi8998
|
|
- qcom,pmk8002
|
|
- qcom,pmk8350
|
|
- qcom,pmk8550
|
|
- qcom,pmm8155au
|
|
- qcom,pmm8654au
|
|
- qcom,pmp8074
|
|
- qcom,pmr735a
|
|
- qcom,pmr735b
|
|
- qcom,pmr735d
|
|
- qcom,pms405
|
|
- qcom,pmx55
|
|
- qcom,pmx65
|
|
- qcom,smb2351
|
|
- const: qcom,spmi-pmic
|
|
|
|
reg:
|
|
minItems: 1
|
|
maxItems: 2
|
|
|
|
'#address-cells':
|
|
const: 1
|
|
|
|
'#size-cells':
|
|
const: 0
|
|
|
|
labibb:
|
|
type: object
|
|
$ref: /schemas/regulator/qcom-labibb-regulator.yaml#
|
|
|
|
regulators:
|
|
type: object
|
|
$ref: /schemas/regulator/qcom,spmi-regulator.yaml#
|
|
|
|
pwm:
|
|
type: object
|
|
$ref: /schemas/leds/leds-qcom-lpg.yaml#
|
|
|
|
patternProperties:
|
|
"^adc@[0-9a-f]+$":
|
|
type: object
|
|
oneOf:
|
|
- $ref: /schemas/iio/adc/qcom,spmi-iadc.yaml#
|
|
- $ref: /schemas/iio/adc/qcom,spmi-rradc.yaml#
|
|
- $ref: /schemas/iio/adc/qcom,spmi-vadc.yaml#
|
|
|
|
"^adc-tm@[0-9a-f]+$":
|
|
type: object
|
|
# ref depends on compatible, see allOf below
|
|
|
|
"^audio-codec@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: true # FIXME qcom,pm8916-wcd-analog-codec binding not converted yet
|
|
|
|
"^charger@[0-9a-f]+$":
|
|
type: object
|
|
oneOf:
|
|
- $ref: /schemas/power/supply/qcom,pm8941-charger.yaml#
|
|
- $ref: /schemas/power/supply/qcom,pm8941-coincell.yaml#
|
|
- $ref: /schemas/power/supply/qcom,pmi8998-charger.yaml#
|
|
|
|
"gpio@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/pinctrl/qcom,pmic-gpio.yaml#
|
|
|
|
"^led-controller@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/leds/qcom,spmi-flash-led.yaml#
|
|
|
|
"^nvram@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/nvmem/qcom,spmi-sdam.yaml#
|
|
|
|
"phy@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/phy/qcom,snps-eusb2-repeater.yaml#
|
|
|
|
"pon@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/power/reset/qcom,pon.yaml#
|
|
|
|
"^rtc@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/rtc/qcom-pm8xxx-rtc.yaml#
|
|
|
|
"^temp-alarm@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/thermal/qcom,spmi-temp-alarm.yaml#
|
|
|
|
"^usb-detect@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/extcon/qcom,pm8941-misc.yaml#
|
|
|
|
"^usb-vbus-regulator@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/regulator/qcom,usb-vbus-regulator.yaml#
|
|
|
|
"^vibrator@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/input/qcom,pm8xxx-vib.yaml#
|
|
|
|
"^mpps@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/pinctrl/qcom,pmic-mpp.yaml#
|
|
|
|
"(.*)?(wled|leds)@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/leds/backlight/qcom-wled.yaml#
|
|
unevaluatedProperties: false
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
|
|
allOf:
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,pm8998
|
|
then:
|
|
patternProperties:
|
|
"^adc-tm@[0-9a-f]+$":
|
|
$ref: /schemas/thermal/qcom-spmi-adc-tm-hc.yaml#
|
|
else:
|
|
patternProperties:
|
|
"^adc-tm@[0-9a-f]+$":
|
|
$ref: /schemas/thermal/qcom-spmi-adc-tm5.yaml#
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/spmi/spmi.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
spmi@c440000 {
|
|
compatible = "qcom,spmi-pmic-arb";
|
|
reg = <0x0c440000 0x1100>,
|
|
<0x0c600000 0x2000000>,
|
|
<0x0e600000 0x100000>,
|
|
<0x0e700000 0xa0000>,
|
|
<0x0c40a000 0x26000>;
|
|
reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
|
|
interrupt-names = "periph_irq";
|
|
interrupts = <GIC_SPI 481 IRQ_TYPE_LEVEL_HIGH>;
|
|
qcom,ee = <0>;
|
|
qcom,channel = <0>;
|
|
#address-cells = <2>;
|
|
#size-cells = <0>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <4>;
|
|
|
|
pmi8998_lsid0: pmic@2 {
|
|
compatible = "qcom,pmi8998", "qcom,spmi-pmic";
|
|
reg = <0x2 SPMI_USID>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
pmi8998_gpio: gpio@c000 {
|
|
compatible = "qcom,pmi8998-gpio", "qcom,spmi-gpio";
|
|
reg = <0xc000>;
|
|
gpio-controller;
|
|
gpio-ranges = <&pmi8998_gpio 0 0 14>;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
};
|
|
};
|
|
|
|
- |
|
|
#include <dt-bindings/input/input.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/iio/qcom,spmi-vadc.h>
|
|
#include <dt-bindings/spmi/spmi.h>
|
|
|
|
pmic@0 {
|
|
compatible = "qcom,pm6150", "qcom,spmi-pmic";
|
|
reg = <0x0 SPMI_USID>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
pon@800 {
|
|
compatible = "qcom,pm8998-pon";
|
|
reg = <0x800>;
|
|
mode-bootloader = <0x2>;
|
|
mode-recovery = <0x1>;
|
|
|
|
pwrkey {
|
|
compatible = "qcom,pm8941-pwrkey";
|
|
interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
|
|
debounce = <15625>;
|
|
bias-pull-up;
|
|
linux,code = <KEY_POWER>;
|
|
};
|
|
};
|
|
|
|
temp-alarm@2400 {
|
|
compatible = "qcom,spmi-temp-alarm";
|
|
reg = <0x2400>;
|
|
interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_RISING>;
|
|
io-channels = <&pm6150_adc ADC5_DIE_TEMP>;
|
|
io-channel-names = "thermal";
|
|
#thermal-sensor-cells = <0>;
|
|
};
|
|
|
|
pm6150_adc: adc@3100 {
|
|
compatible = "qcom,spmi-adc5";
|
|
reg = <0x3100>;
|
|
interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
#io-channel-cells = <1>;
|
|
|
|
channel@6 {
|
|
reg = <ADC5_DIE_TEMP>;
|
|
label = "die_temp";
|
|
};
|
|
|
|
channel@4f {
|
|
reg = <ADC5_AMUX_THM3_100K_PU>;
|
|
qcom,ratiometric;
|
|
qcom,hw-settle-time = <200>;
|
|
};
|
|
};
|
|
|
|
adc-tm@3500 {
|
|
compatible = "qcom,spmi-adc-tm5";
|
|
reg = <0x3500>;
|
|
interrupts = <0x0 0x35 0x0 IRQ_TYPE_EDGE_RISING>;
|
|
#thermal-sensor-cells = <1>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
charger-thermistor@0 {
|
|
reg = <0>;
|
|
io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>;
|
|
qcom,ratiometric;
|
|
qcom,hw-settle-time-us = <200>;
|
|
};
|
|
};
|
|
|
|
pm6150_gpio: gpio@c000 {
|
|
compatible = "qcom,pm6150-gpio", "qcom,spmi-gpio";
|
|
reg = <0xc000>;
|
|
gpio-controller;
|
|
gpio-ranges = <&pm6150_gpio 0 0 10>;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
};
|