Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,57 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/spmi/apple,spmi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Apple SPMI controller
maintainers:
- Sasha Finkelstein <k@chaosmail.tech>
description: A SPMI controller present on most Apple SoCs
allOf:
- $ref: spmi.yaml#
properties:
compatible:
oneOf:
- items:
- enum:
- apple,t6020-spmi
- apple,t8012-spmi
- apple,t8015-spmi
- const: apple,t8103-spmi
- items:
- enum:
# Do not add additional SoC to this list.
- apple,t8103-spmi
- apple,t6000-spmi
- apple,t8112-spmi
- const: apple,spmi
reg:
maxItems: 1
required:
- compatible
- reg
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/spmi/spmi.h>
spmi@920a1300 {
compatible = "apple,t6000-spmi", "apple,spmi";
reg = <0x920a1300 0x100>;
#address-cells = <2>;
#size-cells = <0>;
pmic@f {
reg = <0xf SPMI_USID>;
/* PMIC-specific properties */
};
};
@@ -0,0 +1,70 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/spmi/hisilicon,hisi-spmi-controller.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: HiSilicon SPMI controller
maintainers:
- Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
description: |
The HiSilicon SPMI BUS controller is found on some Kirin-based designs.
It is a MIPI System Power Management (SPMI) controller.
The PMIC part is provided by
Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml.
allOf:
- $ref: spmi.yaml#
properties:
$nodename:
pattern: "spmi@[0-9a-f]"
compatible:
const: hisilicon,kirin970-spmi-controller
reg:
maxItems: 1
hisilicon,spmi-channel:
$ref: /schemas/types.yaml#/definitions/uint32
description: |
number of the Kirin 970 SPMI channel where the SPMI devices are connected.
required:
- compatible
- reg
- hisilicon,spmi-channel
patternProperties:
"@[0-9a-f]$":
type: object
description: |
PMIC properties, which are specific to the used SPMI PMIC device(s).
When used in combination with HiSilicon 6421v600, the properties
are documented at
Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/spmi/spmi.h>
spmi@fff24000 {
compatible = "hisilicon,kirin970-spmi-controller";
reg = <0xfff24000 0x1000>;
#address-cells = <2>;
#size-cells = <0>;
hisilicon,spmi-channel = <2>;
pmic@0 {
reg = <0 SPMI_USID>;
/* pmic properties */
};
};
@@ -0,0 +1,138 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/spmi/mediatek,mt8196-spmi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MediaTek MT8196 SPMI 2.0 Controller
maintainers:
- Hsin-Hsiung Wang <hsin-hsiung.wang@mediatek.com>
- AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
description:
The MediaTek MT8196 SoC features a SPMI version 2.0 compliant controller,
with internal wrapping arbitration logic to allow for multiple on-chip
devices to control up to two SPMI buses.
The main arbiter also acts as an interrupt controller, arbitering also
the interrupts coming from SPMI-connected devices into each of the nested
interrupt controllers from any of the present SPMI buses.
properties:
compatible:
oneOf:
- enum:
- mediatek,mt8196-spmi
- items:
- enum:
- mediatek,mt6991-spmi
- const: mediatek,mt8196-spmi
ranges: true
'#address-cells':
const: 1
'#size-cells':
const: 1
patternProperties:
"^spmi@[a-f0-9]+$":
type: object
$ref: /schemas/spmi/spmi.yaml
unevaluatedProperties: false
properties:
reg:
items:
- description: controller interface registers
- description: spmi master controller registers
reg-names:
items:
- const: pmif
- const: spmimst
clocks:
items:
- description: controller interface system clock
- description: controller interface timer clock
- description: spmi controller master clock
clock-names:
items:
- const: pmif_sys_ck
- const: pmif_tmr_ck
- const: spmimst_clk_mux
interrupts:
maxItems: 1
interrupt-names:
const: rcs
interrupt-controller: true
"#interrupt-cells":
const: 3
description: |
cell 1: slave ID for the requested interrupt (0-15)
cell 2: the requested peripheral interrupt (0-7)
cell 3: interrupt flags indicating level-sense information,
as defined in dt-bindings/interrupt-controller/irq.h
required:
- reg
- reg-names
- clocks
- clock-names
- interrupts
- interrupt-names
- interrupt-controller
- "#interrupt-cells"
required:
- compatible
- ranges
- '#address-cells'
- '#size-cells'
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
soc {
#address-cells = <2>;
#size-cells = <2>;
spmi-arbiter@1c018000 {
compatible = "mediatek,mt8196-spmi";
ranges = <0 0 0x1c018000 0x4900>;
#address-cells = <1>;
#size-cells = <1>;
spmi@0 {
reg = <0 0x900>, <0x4800 0x100>;
reg-names = "pmif", "spmimst";
interrupts-extended = <&pio 292 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "rcs";
interrupt-controller;
#interrupt-cells = <3>;
clocks = <&pmif_sys>, <&pmif_tmr>, <&spmi_mst>;
clock-names = "pmif_sys_ck", "pmif_tmr_ck", "spmimst_clk_mux";
};
spmi@2000 {
reg = <0x2000 0x900>, <0x4000 0x100>;
reg-names = "pmif", "spmimst";
interrupts-extended = <&pio 291 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "rcs";
interrupt-controller;
#interrupt-cells = <3>;
clocks = <&pmif_sys>, <&pmif_tmr>, <&spmi_mst>;
clock-names = "pmif_sys_ck", "pmif_tmr_ck", "spmimst_clk_mux";
};
};
};
...
@@ -0,0 +1,83 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/spmi/mtk,spmi-mtk-pmif.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Mediatek SPMI Controller
maintainers:
- Hsin-Hsiung Wang <hsin-hsiung.wang@mediatek.com>
description: |+
On MediaTek SoCs the PMIC is connected via SPMI and the controller allows
for multiple SoCs to control a single SPMI master.
allOf:
- $ref: spmi.yaml
properties:
compatible:
oneOf:
- enum:
- mediatek,mt6873-spmi
- mediatek,mt8195-spmi
- items:
- enum:
- mediatek,mt8186-spmi
- mediatek,mt8188-spmi
- mediatek,mt8189-spmi
- const: mediatek,mt8195-spmi
reg:
maxItems: 2
reg-names:
items:
- const: pmif
- const: spmimst
clocks:
minItems: 3
maxItems: 3
clock-names:
items:
- const: pmif_sys_ck
- const: pmif_tmr_ck
- const: spmimst_clk_mux
assigned-clocks:
maxItems: 1
assigned-clock-parents:
maxItems: 1
required:
- compatible
- reg
- reg-names
- clocks
- clock-names
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/mt8192-clk.h>
spmi: spmi@10027000 {
compatible = "mediatek,mt6873-spmi";
reg = <0x10027000 0xe00>,
<0x10029000 0x100>;
reg-names = "pmif", "spmimst";
clocks = <&infracfg CLK_INFRA_PMIC_AP>,
<&infracfg CLK_INFRA_PMIC_TMR>,
<&topckgen CLK_TOP_SPMI_MST_SEL>;
clock-names = "pmif_sys_ck",
"pmif_tmr_ck",
"spmimst_clk_mux";
assigned-clocks = <&topckgen CLK_TOP_PWRAP_ULPOSC_SEL>;
assigned-clock-parents = <&topckgen CLK_TOP_OSC_D10>;
};
...
@@ -0,0 +1,151 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/spmi/qcom,glymur-spmi-pmic-arb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm Technologies, Inc. Glymur SPMI Controller (PMIC Arbiter v8)
maintainers:
- David Collins <david.collins@oss.qualcomm.com>
description: |
The Glymur SPMI PMIC Arbiter implements HW version 8 and it's an SPMI
controller with wrapping arbitration logic to allow for multiple on-chip
devices to control up to 4 SPMI separate buses.
The PMIC Arbiter can also act as an interrupt controller, providing interrupts
to slave devices.
allOf:
- $ref: /schemas/spmi/qcom,spmi-pmic-arb-common.yaml
properties:
compatible:
oneOf:
- items:
- enum:
- qcom,hawi-spmi-pmic-arb
- qcom,kaanapali-spmi-pmic-arb
- const: qcom,glymur-spmi-pmic-arb
- enum:
- qcom,glymur-spmi-pmic-arb
reg:
items:
- description: core registers
- description: tx-channel per virtual slave registers
- description: rx-channel (called observer) per virtual slave registers
- description: channel to PMIC peripheral mapping registers
reg-names:
items:
- const: core
- const: chnls
- const: obsrvr
- const: chnl_map
ranges: true
'#address-cells':
const: 2
'#size-cells':
const: 2
patternProperties:
"^spmi@[a-f0-9]+$":
type: object
$ref: /schemas/spmi/spmi.yaml
unevaluatedProperties: false
properties:
reg:
items:
- description: configuration registers
- description: interrupt controller registers
- description: channel owner EE mapping registers
reg-names:
items:
- const: cnfg
- const: intr
- const: chnl_owner
interrupts:
maxItems: 1
interrupt-names:
const: periph_irq
interrupt-controller: true
'#interrupt-cells':
const: 4
description: |
cell 1: slave ID for the requested interrupt (0-15)
cell 2: peripheral ID for requested interrupt (0-255)
cell 3: the requested peripheral interrupt (0-7)
cell 4: interrupt flags indicating level-sense information,
as defined in dt-bindings/interrupt-controller/irq.h
required:
- compatible
- reg-names
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
soc {
#address-cells = <2>;
#size-cells = <2>;
arbiter@c400000 {
compatible = "qcom,glymur-spmi-pmic-arb";
reg = <0x0 0xc400000 0x0 0x3000>,
<0x0 0xc900000 0x0 0x400000>,
<0x0 0xc4c0000 0x0 0x400000>,
<0x0 0xc403000 0x0 0x8000>;
reg-names = "core", "chnls", "obsrvr", "chnl_map";
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
#size-cells = <2>;
ranges;
spmi@c426000 {
reg = <0x0 0xc426000 0x0 0x4000>,
<0x0 0xc8c0000 0x0 0x10000>,
<0x0 0xc42a000 0x0 0x8000>;
reg-names = "cnfg", "intr", "chnl_owner";
interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "periph_irq";
interrupt-controller;
#interrupt-cells = <4>;
#address-cells = <2>;
#size-cells = <0>;
};
spmi@c437000 {
reg = <0x0 0xc437000 0x0 0x4000>,
<0x0 0xc8d0000 0x0 0x10000>,
<0x0 0xc43b000 0x0 0x8000>;
reg-names = "cnfg", "intr", "chnl_owner";
interrupts-extended = <&pdc 3 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "periph_irq";
interrupt-controller;
#interrupt-cells = <4>;
#address-cells = <2>;
#size-cells = <0>;
};
};
};
@@ -0,0 +1,35 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/spmi/qcom,spmi-pmic-arb-common.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm Technologies, Inc. SPMI Controller (common)
maintainers:
- David Collins <david.collins@oss.qualcomm.com>
description: |
This defines some common properties used to define Qualcomm SPMI controllers
for PMIC arbiter.
properties:
qcom,ee:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 5
description:
indicates the active Execution Environment identifier
qcom,channel:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 5
description:
which of the PMIC Arb provided channels to use for accesses
required:
- qcom,ee
- qcom,channel
additionalProperties: true
@@ -0,0 +1,113 @@
# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/spmi/qcom,spmi-pmic-arb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm SPMI Controller (PMIC Arbiter)
maintainers:
- Stephen Boyd <sboyd@kernel.org>
description: |
The SPMI PMIC Arbiter is found on Snapdragon chipsets. It is an SPMI
controller with wrapping arbitration logic to allow for multiple on-chip
devices to control a single SPMI master.
The PMIC Arbiter can also act as an interrupt controller, providing interrupts
to slave devices.
allOf:
- $ref: spmi.yaml
- $ref: qcom,spmi-pmic-arb-common.yaml
properties:
compatible:
const: qcom,spmi-pmic-arb
reg:
oneOf:
- items: # V1
- description: core registers
- description: interrupt controller registers
- description: configuration registers
- items: # V2
- description: core registers
- description: tx-channel per virtual slave regosters
- description: rx-channel (called observer) per virtual slave registers
- description: interrupt controller registers
- description: configuration registers
reg-names:
oneOf:
- items:
- const: core
- const: intr
- const: cnfg
- items:
- const: core
- const: chnls
- const: obsrvr
- const: intr
- const: cnfg
interrupts:
maxItems: 1
interrupt-names:
const: periph_irq
interrupt-controller: true
'#address-cells': true
'#interrupt-cells':
const: 4
description: |
cell 1: slave ID for the requested interrupt (0-15)
cell 2: peripheral ID for requested interrupt (0-255)
cell 3: the requested peripheral interrupt (0-7)
cell 4: interrupt flags indicating level-sense information,
as defined in dt-bindings/interrupt-controller/irq.h
'#size-cells': true
qcom,bus-id:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 1
description: >
SPMI bus instance. only applicable to PMIC arbiter version 7 and beyond.
Supported values, 0 = primary bus, 1 = secondary bus
deprecated: true
required:
- compatible
- reg-names
unevaluatedProperties: false
examples:
- |
spmi@fc4cf000 {
compatible = "qcom,spmi-pmic-arb";
reg-names = "core", "intr", "cnfg";
reg = <0xfc4cf000 0x1000>,
<0xfc4cb000 0x1000>,
<0xfc4ca000 0x1000>;
interrupt-names = "periph_irq";
interrupts = <0 190 0>;
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
#size-cells = <0>;
interrupt-controller;
#interrupt-cells = <4>;
qcom,bus-id = <0>;
};
@@ -0,0 +1,129 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/spmi/qcom,x1e80100-spmi-pmic-arb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm X1E80100 SPMI Controller (PMIC Arbiter v7)
maintainers:
- Stephen Boyd <sboyd@kernel.org>
description: |
The X1E80100 SPMI PMIC Arbiter implements HW version 7 and it's an SPMI
controller with wrapping arbitration logic to allow for multiple on-chip
devices to control up to 2 SPMI separate buses.
The PMIC Arbiter can also act as an interrupt controller, providing interrupts
to slave devices.
allOf:
- $ref: qcom,spmi-pmic-arb-common.yaml
properties:
compatible:
oneOf:
- items:
- enum:
- qcom,eliza-spmi-pmic-arb
- qcom,sar2130p-spmi-pmic-arb
- const: qcom,x1e80100-spmi-pmic-arb
- const: qcom,x1e80100-spmi-pmic-arb
reg:
items:
- description: core registers
- description: tx-channel per virtual slave registers
- description: rx-channel (called observer) per virtual slave registers
reg-names:
items:
- const: core
- const: chnls
- const: obsrvr
ranges: true
'#address-cells':
const: 2
'#size-cells':
const: 2
patternProperties:
"^spmi@[a-f0-9]+$":
type: object
$ref: /schemas/spmi/spmi.yaml
unevaluatedProperties: false
properties:
reg:
items:
- description: configuration registers
- description: interrupt controller registers
reg-names:
items:
- const: cnfg
- const: intr
interrupts:
maxItems: 1
interrupt-names:
const: periph_irq
interrupt-controller: true
'#interrupt-cells':
const: 4
description: |
cell 1: slave ID for the requested interrupt (0-15)
cell 2: peripheral ID for requested interrupt (0-255)
cell 3: the requested peripheral interrupt (0-7)
cell 4: interrupt flags indicating level-sense information,
as defined in dt-bindings/interrupt-controller/irq.h
required:
- compatible
- reg-names
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
soc {
#address-cells = <2>;
#size-cells = <2>;
spmi: arbiter@c400000 {
compatible = "qcom,x1e80100-spmi-pmic-arb";
reg = <0 0x0c400000 0 0x3000>,
<0 0x0c500000 0 0x4000000>,
<0 0x0c440000 0 0x80000>;
reg-names = "core", "chnls", "obsrvr";
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
#size-cells = <2>;
ranges;
spmi_bus0: spmi@c42d000 {
reg = <0 0x0c42d000 0 0x4000>,
<0 0x0c4c0000 0 0x10000>;
reg-names = "cnfg", "intr";
interrupt-names = "periph_irq";
interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
#interrupt-cells = <4>;
#address-cells = <2>;
#size-cells = <0>;
};
};
};
@@ -0,0 +1,75 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/spmi/spmi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: System Power Management Interface (SPMI) Controller
maintainers:
- Stephen Boyd <sboyd@kernel.org>
description: |
The System Power Management (SPMI) controller is a 2-wire bus defined
by the MIPI Alliance for power management control to be used on SoC designs.
SPMI controllers are modelled in device tree using a generic set of
bindings defined here, plus any bus controller specific properties, if
needed.
Each SPMI controller has zero or more child nodes (up to 16 ones), each
one representing an unique slave at the bus.
properties:
$nodename:
pattern: "^spmi@.*"
"#address-cells":
const: 2
"#size-cells":
const: 0
patternProperties:
"@[0-9a-f]$":
description: up to 16 child PMIC nodes
type: object
properties:
reg:
items:
- minItems: 1
items:
- minimum: 0
maximum: 0xf
- enum: [ 0 ]
description:
0 means user ID address. 1 is reserved for group ID
address.
required:
- reg
required:
- reg
additionalProperties: true
examples:
- |
#include <dt-bindings/spmi/spmi.h>
spmi@0 {
reg = <0 0>;
#address-cells = <2>;
#size-cells = <0>;
child@0 {
reg = <0 SPMI_USID>;
};
child@7 {
reg = <7 SPMI_USID>;
};
};