mirror of
https://github.com/torvalds/linux.git
synced 2026-04-20 07:43:57 -04:00
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>;
|
|
};
|
|
};
|