7406fd75a9
- Add support for Ampere Computing SMpro - Add support for TI TPS65219 PMIC - New Functionality - Add support for multiple devices of the same type; rk808 - Fix-ups - Convert a bunch of I2C class drivers over to .probe_new() - Remove superfluous includes; mc13xxx-*, palmas, timberdale - Use correct includes for GPIO handling; madera-core - Convert to GPIOD; twl6040 - Remove unused platform data handling; twl6040 - Device Tree changes; many - Remove unused drivers; dm355evm_msp, davinci_voicecodec, htc-i2cpld - Add support for modules; palmas - Enable COMPILE_TEST support; intel_soc_pmic* - Trivial: spelling / whitespace fixes; mc13xxx-spi - Replace old PM helpers with new ones; many - Convert deprecated mask_invert usage to unmask_base; many - Use devm_*() calls; qcom_rpm - MAINTAINER fix-ups - Make use of improved / replaced APIs; palmas, fsl-imx25-tsadc, stm32-lptimer, qcom_rpm, rohm-* - Bug Fixes - Add bounds / error checking; mt6360-core - No sleeping inside critical sections; axp20x - Fix missing dependencies; ROHM_BD957XMUF - Repair error paths; qcom-pm8008 -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEdrbJNaO+IJqU8IdIUa+KL4f8d2EFAmOhmWgACgkQUa+KL4f8 d2GEMA/+LQ+1Iv/MS8xh9a5SNs3lUJcHmNe8j1OhdD62usl1gQa9HegyL+h60Ajm r+MAxO3s0iTvPJFi9+i9S/BdO0XtdF1+0eIFm3Qih4A8NUDeK4wnr1J+5fswYvPG 5Nvut/sqIQhCoT64T7009pwdRx8S5b1Von7+hGfDoC3UN0cGqW8+/3K0lEE4I1FY RaDKwS4Wvs3zZdfs/EQ0ILqTJKp0Mw3qKEbS9rB2XaLwa/eteZAeZBuypJDH9XLY GkJDeX51jLynjA7mp10p7bf1v6/p8JXcBUaz/vvPwYIM2oV46PHw9dbtzuPzz9iD O12reYGhssuVRTN8fCm+T82Jo99TiWrhagJG3gTqtrFQrs19w341Vetb7wDn14+z rL88pCo7xHLYwPGKXfup2GaGVt5GP6zEr6REnelw9yGmuxbAWajwWK2x64TAReGV 8rOUt1VQyaY874dQ0iulrs+bKwaaPnpDgEzUeB6b4LG6zYoupQFD1+dfIzRq8k42 wnAg5QdzcWFWzBOH0neUkyq7iZvLL3S5pLRWTENV8rLvEiNIPzWAMPHGFeYO8xm2 lx+6B5XVfGd3oMze8mFwbrkLlpzbRS1j8bIV6kwlbcw44mw0w/EKtNW8Qlxw8HWA lvR9M/+NzniaCM8yJVZcB97k5r5ukZ6rSfQWCm9htIzdvLW09iM= =HT19 -----END PGP SIGNATURE----- Merge tag 'mfd-next-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd Pull MFD updates from Lee Jones: "New Drivers: - Add support for Ampere Computing SMpro - Add support for TI TPS65219 PMIC New Functionality: - Add support for multiple devices of the same type; rk808 Fix-ups: - Convert a bunch of I2C class drivers over to .probe_new() - Remove superfluous includes; mc13xxx-*, palmas, timberdale - Use correct includes for GPIO handling; madera-core - Convert to GPIOD; twl6040 - Remove unused platform data handling; twl6040 - Device Tree changes; many - Remove unused drivers; dm355evm_msp, davinci_voicecodec, htc-i2cpld - Add support for modules; palmas - Enable COMPILE_TEST support; intel_soc_pmic* - Trivial: spelling / whitespace fixes; mc13xxx-spi - Replace old PM helpers with new ones; many - Convert deprecated mask_invert usage to unmask_base; many - Use devm_*() calls; qcom_rpm - MAINTAINER fix-ups - Make use of improved / replaced APIs; palmas, fsl-imx25-tsadc, stm32-lptimer, qcom_rpm, rohm-* Bug Fixes: - Add bounds / error checking; mt6360-core - No sleeping inside critical sections; axp20x - Fix missing dependencies; ROHM_BD957XMUF - Repair error paths; qcom-pm8008" * tag 'mfd-next-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (161 commits) dt-bindings: mfd: da9062: Correct file name for watchdog mfd: pm8008: Fix return value check in pm8008_probe() mfd: rohm: Use dev_err_probe() mfd: Drop obsolete dependencies on COMPILE_TEST dt-bindings: mfd: da9062: Move IRQ to optional properties mfd: qcom_rpm: Use devm_of_platform_populate() to simplify code mfd: qcom_rpm: Fix an error handling path in qcom_rpm_probe() mfd: stm32-lptimer: Use devm_platform_get_and_ioremap_resource() mfd: rohm-bd9576: Convert to i2c's .probe_new() mfd: fsl-imx25-tsadc: Use devm_platform_get_and_ioremap_resource() dt-bindings: Fix maintainer email for a few ROHM ICs mfd: palmas: Use device_get_match_data() to simplify the code Input: Add tps65219 interrupt driven powerbutton mfd: tps65219: Add driver for TI TPS65219 PMIC mfd: bd957x: Fix Kconfig dependency on REGMAP_IRQ mfd: wcd934x: Convert irq chip to config regs mfd: tps65090: Replace irqchip mask_invert with unmask_base mfd: sun4i-gpadc: Replace irqchip mask_invert with unmask_base mfd: stpmic1: Fix swapped mask/unmask in irq chip mfd: sprd-sc27xx-spi: Replace irqchip mask_invert with unmask_base ...
310 lines
8.3 KiB
YAML
310 lines
8.3 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,pm6125
|
|
- qcom,pm6150
|
|
- qcom,pm6150l
|
|
- qcom,pm6350
|
|
- qcom,pm660
|
|
- qcom,pm660l
|
|
- qcom,pm7250b
|
|
- qcom,pm7325
|
|
- qcom,pm8004
|
|
- qcom,pm8005
|
|
- qcom,pm8009
|
|
- qcom,pm8019
|
|
- qcom,pm8028
|
|
- qcom,pm8110
|
|
- qcom,pm8150
|
|
- qcom,pm8150b
|
|
- qcom,pm8150c
|
|
- qcom,pm8150l
|
|
- qcom,pm8226
|
|
- qcom,pm8350
|
|
- qcom,pm8350b
|
|
- qcom,pm8350c
|
|
- qcom,pm8841
|
|
- qcom,pm8909
|
|
- qcom,pm8916
|
|
- qcom,pm8941
|
|
- qcom,pm8950
|
|
- qcom,pm8953
|
|
- qcom,pm8994
|
|
- qcom,pm8998
|
|
- qcom,pma8084
|
|
- qcom,pmd9635
|
|
- qcom,pmi8950
|
|
- qcom,pmi8962
|
|
- qcom,pmi8994
|
|
- qcom,pmi8998
|
|
- qcom,pmk8002
|
|
- qcom,pmk8350
|
|
- qcom,pmm8155au
|
|
- qcom,pmp8074
|
|
- qcom,pmr735a
|
|
- qcom,pmr735b
|
|
- 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-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#
|
|
|
|
"gpio@[0-9a-f]+$":
|
|
type: object
|
|
$ref: /schemas/pinctrl/qcom,pmic-gpio.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>;
|
|
|
|
adc-chan@6 {
|
|
reg = <ADC5_DIE_TEMP>;
|
|
label = "die_temp";
|
|
};
|
|
|
|
adc-chan@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>;
|
|
};
|
|
};
|