Merge tag 'v5.10-next-pm-domains-stable' into HEAD
This commit is contained in:
commit
8d7d44f25c
|
@ -0,0 +1,293 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/power/mediatek,power-controller.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Mediatek Power Domains Controller
|
||||
|
||||
maintainers:
|
||||
- Weiyi Lu <weiyi.lu@mediatek.com>
|
||||
- Matthias Brugger <mbrugger@suse.com>
|
||||
|
||||
description: |
|
||||
Mediatek processors include support for multiple power domains which can be
|
||||
powered up/down by software based on different application scenes to save power.
|
||||
|
||||
IP cores belonging to a power domain should contain a 'power-domains'
|
||||
property that is a phandle for SCPSYS node representing the domain.
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
const: power-controller
|
||||
|
||||
compatible:
|
||||
enum:
|
||||
- mediatek,mt8173-power-controller
|
||||
- mediatek,mt8183-power-controller
|
||||
- mediatek,mt8192-power-controller
|
||||
|
||||
'#power-domain-cells':
|
||||
const: 1
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
'#size-cells':
|
||||
const: 0
|
||||
|
||||
patternProperties:
|
||||
"^power-domain@[0-9a-f]+$":
|
||||
type: object
|
||||
description: |
|
||||
Represents the power domains within the power controller node as documented
|
||||
in Documentation/devicetree/bindings/power/power-domain.yaml.
|
||||
|
||||
properties:
|
||||
|
||||
'#power-domain-cells':
|
||||
description:
|
||||
Must be 0 for nodes representing a single PM domain and 1 for nodes
|
||||
providing multiple PM domains.
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
'#size-cells':
|
||||
const: 0
|
||||
|
||||
reg:
|
||||
description: |
|
||||
Power domain index. Valid values are defined in:
|
||||
"include/dt-bindings/power/mt8173-power.h" - for MT8173 type power domain.
|
||||
"include/dt-bindings/power/mt8183-power.h" - for MT8183 type power domain.
|
||||
"include/dt-bindings/power/mt8192-power.h" - for MT8192 type power domain.
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
description: |
|
||||
A number of phandles to clocks that need to be enabled during domain
|
||||
power-up sequencing.
|
||||
|
||||
clock-names:
|
||||
description: |
|
||||
List of names of clocks, in order to match the power-up sequencing
|
||||
for each power domain we need to group the clocks by name. BASIC
|
||||
clocks need to be enabled before enabling the corresponding power
|
||||
domain, and should not have a '-' in their name (i.e mm, mfg, venc).
|
||||
SUSBYS clocks need to be enabled before releasing the bus protection,
|
||||
and should contain a '-' in their name (i.e mm-0, isp-0, cam-0).
|
||||
|
||||
In order to follow properly the power-up sequencing, the clocks must
|
||||
be specified by order, adding first the BASIC clocks followed by the
|
||||
SUSBSYS clocks.
|
||||
|
||||
mediatek,infracfg:
|
||||
$ref: /schemas/types.yaml#definitions/phandle
|
||||
description: phandle to the device containing the INFRACFG register range.
|
||||
|
||||
mediatek,smi:
|
||||
$ref: /schemas/types.yaml#definitions/phandle
|
||||
description: phandle to the device containing the SMI register range.
|
||||
|
||||
patternProperties:
|
||||
"^power-domain@[0-9a-f]+$":
|
||||
type: object
|
||||
description: |
|
||||
Represents a power domain child within a power domain parent node.
|
||||
|
||||
properties:
|
||||
|
||||
'#power-domain-cells':
|
||||
description:
|
||||
Must be 0 for nodes representing a single PM domain and 1 for nodes
|
||||
providing multiple PM domains.
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
'#size-cells':
|
||||
const: 0
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
description: |
|
||||
A number of phandles to clocks that need to be enabled during domain
|
||||
power-up sequencing.
|
||||
|
||||
clock-names:
|
||||
description: |
|
||||
List of names of clocks, in order to match the power-up sequencing
|
||||
for each power domain we need to group the clocks by name. BASIC
|
||||
clocks need to be enabled before enabling the corresponding power
|
||||
domain, and should not have a '-' in their name (i.e mm, mfg, venc).
|
||||
SUSBYS clocks need to be enabled before releasing the bus protection,
|
||||
and should contain a '-' in their name (i.e mm-0, isp-0, cam-0).
|
||||
|
||||
In order to follow properly the power-up sequencing, the clocks must
|
||||
be specified by order, adding first the BASIC clocks followed by the
|
||||
SUSBSYS clocks.
|
||||
|
||||
mediatek,infracfg:
|
||||
$ref: /schemas/types.yaml#definitions/phandle
|
||||
description: phandle to the device containing the INFRACFG register range.
|
||||
|
||||
mediatek,smi:
|
||||
$ref: /schemas/types.yaml#definitions/phandle
|
||||
description: phandle to the device containing the SMI register range.
|
||||
|
||||
patternProperties:
|
||||
"^power-domain@[0-9a-f]+$":
|
||||
type: object
|
||||
description: |
|
||||
Represents a power domain child within a power domain parent node.
|
||||
|
||||
properties:
|
||||
|
||||
'#power-domain-cells':
|
||||
description:
|
||||
Must be 0 for nodes representing a single PM domain and 1 for nodes
|
||||
providing multiple PM domains.
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
'#size-cells':
|
||||
const: 0
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
description: |
|
||||
A number of phandles to clocks that need to be enabled during domain
|
||||
power-up sequencing.
|
||||
|
||||
clock-names:
|
||||
description: |
|
||||
List of names of clocks, in order to match the power-up sequencing
|
||||
for each power domain we need to group the clocks by name. BASIC
|
||||
clocks need to be enabled before enabling the corresponding power
|
||||
domain, and should not have a '-' in their name (i.e mm, mfg, venc).
|
||||
SUSBYS clocks need to be enabled before releasing the bus protection,
|
||||
and should contain a '-' in their name (i.e mm-0, isp-0, cam-0).
|
||||
|
||||
In order to follow properly the power-up sequencing, the clocks must
|
||||
be specified by order, adding first the BASIC clocks followed by the
|
||||
SUSBSYS clocks.
|
||||
|
||||
mediatek,infracfg:
|
||||
$ref: /schemas/types.yaml#definitions/phandle
|
||||
description: phandle to the device containing the INFRACFG register range.
|
||||
|
||||
mediatek,smi:
|
||||
$ref: /schemas/types.yaml#definitions/phandle
|
||||
description: phandle to the device containing the SMI register range.
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/mt8173-clk.h>
|
||||
#include <dt-bindings/power/mt8173-power.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
scpsys: syscon@10006000 {
|
||||
compatible = "syscon", "simple-mfd";
|
||||
reg = <0 0x10006000 0 0x1000>;
|
||||
|
||||
spm: power-controller {
|
||||
compatible = "mediatek,mt8173-power-controller";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#power-domain-cells = <1>;
|
||||
|
||||
/* power domains of the SoC */
|
||||
power-domain@MT8173_POWER_DOMAIN_VDEC {
|
||||
reg = <MT8173_POWER_DOMAIN_VDEC>;
|
||||
clocks = <&topckgen CLK_TOP_MM_SEL>;
|
||||
clock-names = "mm";
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
power-domain@MT8173_POWER_DOMAIN_VENC {
|
||||
reg = <MT8173_POWER_DOMAIN_VENC>;
|
||||
clocks = <&topckgen CLK_TOP_MM_SEL>,
|
||||
<&topckgen CLK_TOP_VENC_SEL>;
|
||||
clock-names = "mm", "venc";
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
power-domain@MT8173_POWER_DOMAIN_ISP {
|
||||
reg = <MT8173_POWER_DOMAIN_ISP>;
|
||||
clocks = <&topckgen CLK_TOP_MM_SEL>;
|
||||
clock-names = "mm";
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
power-domain@MT8173_POWER_DOMAIN_MM {
|
||||
reg = <MT8173_POWER_DOMAIN_MM>;
|
||||
clocks = <&topckgen CLK_TOP_MM_SEL>;
|
||||
clock-names = "mm";
|
||||
#power-domain-cells = <0>;
|
||||
mediatek,infracfg = <&infracfg>;
|
||||
};
|
||||
power-domain@MT8173_POWER_DOMAIN_VENC_LT {
|
||||
reg = <MT8173_POWER_DOMAIN_VENC_LT>;
|
||||
clocks = <&topckgen CLK_TOP_MM_SEL>,
|
||||
<&topckgen CLK_TOP_VENC_LT_SEL>;
|
||||
clock-names = "mm", "venclt";
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
power-domain@MT8173_POWER_DOMAIN_AUDIO {
|
||||
reg = <MT8173_POWER_DOMAIN_AUDIO>;
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
power-domain@MT8173_POWER_DOMAIN_USB {
|
||||
reg = <MT8173_POWER_DOMAIN_USB>;
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
power-domain@MT8173_POWER_DOMAIN_MFG_ASYNC {
|
||||
reg = <MT8173_POWER_DOMAIN_MFG_ASYNC>;
|
||||
clocks = <&clk26m>;
|
||||
clock-names = "mfg";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#power-domain-cells = <1>;
|
||||
|
||||
power-domain@MT8173_POWER_DOMAIN_MFG_2D {
|
||||
reg = <MT8173_POWER_DOMAIN_MFG_2D>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#power-domain-cells = <1>;
|
||||
|
||||
power-domain@MT8173_POWER_DOMAIN_MFG {
|
||||
reg = <MT8173_POWER_DOMAIN_MFG>;
|
||||
#power-domain-cells = <0>;
|
||||
mediatek,infracfg = <&infracfg>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
|
@ -0,0 +1,26 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2020 MediaTek Inc.
|
||||
* Author: Weiyi Lu <weiyi.lu@mediatek.com>
|
||||
*/
|
||||
|
||||
#ifndef _DT_BINDINGS_POWER_MT8183_POWER_H
|
||||
#define _DT_BINDINGS_POWER_MT8183_POWER_H
|
||||
|
||||
#define MT8183_POWER_DOMAIN_AUDIO 0
|
||||
#define MT8183_POWER_DOMAIN_CONN 1
|
||||
#define MT8183_POWER_DOMAIN_MFG_ASYNC 2
|
||||
#define MT8183_POWER_DOMAIN_MFG 3
|
||||
#define MT8183_POWER_DOMAIN_MFG_CORE0 4
|
||||
#define MT8183_POWER_DOMAIN_MFG_CORE1 5
|
||||
#define MT8183_POWER_DOMAIN_MFG_2D 6
|
||||
#define MT8183_POWER_DOMAIN_DISP 7
|
||||
#define MT8183_POWER_DOMAIN_CAM 8
|
||||
#define MT8183_POWER_DOMAIN_ISP 9
|
||||
#define MT8183_POWER_DOMAIN_VDEC 10
|
||||
#define MT8183_POWER_DOMAIN_VENC 11
|
||||
#define MT8183_POWER_DOMAIN_VPU_TOP 12
|
||||
#define MT8183_POWER_DOMAIN_VPU_CORE0 13
|
||||
#define MT8183_POWER_DOMAIN_VPU_CORE1 14
|
||||
|
||||
#endif /* _DT_BINDINGS_POWER_MT8183_POWER_H */
|
|
@ -0,0 +1,32 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0
|
||||
*
|
||||
* Copyright (c) 2020 MediaTek Inc.
|
||||
* Author: Weiyi Lu <weiyi.lu@mediatek.com>
|
||||
*/
|
||||
|
||||
#ifndef _DT_BINDINGS_POWER_MT8192_POWER_H
|
||||
#define _DT_BINDINGS_POWER_MT8192_POWER_H
|
||||
|
||||
#define MT8192_POWER_DOMAIN_AUDIO 0
|
||||
#define MT8192_POWER_DOMAIN_CONN 1
|
||||
#define MT8192_POWER_DOMAIN_MFG0 2
|
||||
#define MT8192_POWER_DOMAIN_MFG1 3
|
||||
#define MT8192_POWER_DOMAIN_MFG2 4
|
||||
#define MT8192_POWER_DOMAIN_MFG3 5
|
||||
#define MT8192_POWER_DOMAIN_MFG4 6
|
||||
#define MT8192_POWER_DOMAIN_MFG5 7
|
||||
#define MT8192_POWER_DOMAIN_MFG6 8
|
||||
#define MT8192_POWER_DOMAIN_DISP 9
|
||||
#define MT8192_POWER_DOMAIN_IPE 10
|
||||
#define MT8192_POWER_DOMAIN_ISP 11
|
||||
#define MT8192_POWER_DOMAIN_ISP2 12
|
||||
#define MT8192_POWER_DOMAIN_MDP 13
|
||||
#define MT8192_POWER_DOMAIN_VENC 14
|
||||
#define MT8192_POWER_DOMAIN_VDEC 15
|
||||
#define MT8192_POWER_DOMAIN_VDEC2 16
|
||||
#define MT8192_POWER_DOMAIN_CAM 17
|
||||
#define MT8192_POWER_DOMAIN_CAM_RAWA 18
|
||||
#define MT8192_POWER_DOMAIN_CAM_RAWB 19
|
||||
#define MT8192_POWER_DOMAIN_CAM_RAWC 20
|
||||
|
||||
#endif /* _DT_BINDINGS_POWER_MT8192_POWER_H */
|
Loading…
Reference in New Issue