mirror of https://gitee.com/openkylin/linux.git
115 lines
3.1 KiB
Plaintext
115 lines
3.1 KiB
Plaintext
* Rockchip Power Domains
|
|
|
|
Rockchip processors include support for multiple power domains which can be
|
|
powered up/down by software based on different application scenes to save power.
|
|
|
|
Required properties for power domain controller:
|
|
- compatible: Should be one of the following.
|
|
"rockchip,rk3288-power-controller" - for RK3288 SoCs.
|
|
"rockchip,rk3368-power-controller" - for RK3368 SoCs.
|
|
"rockchip,rk3399-power-controller" - for RK3399 SoCs.
|
|
- #power-domain-cells: Number of cells in a power-domain specifier.
|
|
Should be 1 for multiple PM domains.
|
|
- #address-cells: Should be 1.
|
|
- #size-cells: Should be 0.
|
|
|
|
Required properties for power domain sub nodes:
|
|
- reg: index of the power domain, should use macros in:
|
|
"include/dt-bindings/power/rk3288-power.h" - for RK3288 type power domain.
|
|
"include/dt-bindings/power/rk3368-power.h" - for RK3368 type power domain.
|
|
"include/dt-bindings/power/rk3399-power.h" - for RK3399 type power domain.
|
|
- clocks (optional): phandles to clocks which need to be enabled while power domain
|
|
switches state.
|
|
- pm_qos (optional): phandles to qos blocks which need to be saved and restored
|
|
while power domain switches state.
|
|
|
|
Qos Example:
|
|
|
|
qos_gpu: qos_gpu@ffaf0000 {
|
|
compatible ="syscon";
|
|
reg = <0x0 0xffaf0000 0x0 0x20>;
|
|
};
|
|
|
|
Example:
|
|
|
|
power: power-controller {
|
|
compatible = "rockchip,rk3288-power-controller";
|
|
#power-domain-cells = <1>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
pd_gpu {
|
|
reg = <RK3288_PD_GPU>;
|
|
clocks = <&cru ACLK_GPU>;
|
|
pm_qos = <&qos_gpu>;
|
|
};
|
|
};
|
|
|
|
power: power-controller {
|
|
compatible = "rockchip,rk3368-power-controller";
|
|
#power-domain-cells = <1>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
pd_gpu_1 {
|
|
reg = <RK3368_PD_GPU_1>;
|
|
clocks = <&cru ACLK_GPU_CFG>;
|
|
};
|
|
};
|
|
|
|
Example 2:
|
|
power: power-controller {
|
|
compatible = "rockchip,rk3399-power-controller";
|
|
#power-domain-cells = <1>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
pd_vio {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
reg = <RK3399_PD_VIO>;
|
|
|
|
pd_vo {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
reg = <RK3399_PD_VO>;
|
|
|
|
pd_vopb {
|
|
reg = <RK3399_PD_VOPB>;
|
|
};
|
|
|
|
pd_vopl {
|
|
reg = <RK3399_PD_VOPL>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
Node of a device using power domains must have a power-domains property,
|
|
containing a phandle to the power device node and an index specifying which
|
|
power domain to use.
|
|
The index should use macros in:
|
|
"include/dt-bindings/power/rk3288-power.h" - for rk3288 type power domain.
|
|
"include/dt-bindings/power/rk3368-power.h" - for rk3368 type power domain.
|
|
"include/dt-bindings/power/rk3399-power.h" - for rk3399 type power domain.
|
|
|
|
Example of the node using power domain:
|
|
|
|
node {
|
|
/* ... */
|
|
power-domains = <&power RK3288_PD_GPU>;
|
|
/* ... */
|
|
};
|
|
|
|
node {
|
|
/* ... */
|
|
power-domains = <&power RK3368_PD_GPU_1>;
|
|
/* ... */
|
|
};
|
|
|
|
node {
|
|
/* ... */
|
|
power-domains = <&power RK3399_PD_VOPB>;
|
|
/* ... */
|
|
};
|