aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/boot/dts
diff options
context:
space:
mode:
authorElaine Zhang <zhangqing@rock-chips.com>2016-07-04 08:34:04 -0400
committerHeiko Stuebner <heiko@sntech.de>2016-08-08 04:57:04 -0400
commit807a2371d3b31ef0a9e09fce55704b68bce771a5 (patch)
tree71a39dcc3bc7c724dc6a8e04782c5262127dd880 /arch/arm64/boot/dts
parent29b4817d4018df78086157ea3a55c1d9424a7cfc (diff)
arm64: dts: rockchip: add the power domain node for rk3399
In order to meet low power requirements, a power management unit (PMU) is designed for controlling power resources in RK3399. The RK3399 PMU is dedicated for managing the power of the whole chip. 1. add pd node for RK3399 Soc 2. create power domain tree 3. add qos node for domain From the DT/binds and driver can get more detail information: The driver: drivers/soc/rockchip/pm_domains.c The document: Documentation/devicetree/bindings/soc/rockchip/power_domain.txt Note: As the TRM lists many voltage domains and power domains, then this patch adds some domains for driver. Due to some domains (e.g. emmc, usb, core)...We can't turned off it on bootup, or says some device driver can't handle the power domain enough. Maybe We will add more other domains in the future or later. Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com> Signed-off-by: Caesar Wang <wxt@rock-chips.com> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-rockchip@lists.infradead.org Cc: Heiko Stuebner <heiko@sntech.de> Reviewed-by: Douglas Anderson <dianders@chromium.org> Tested-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Diffstat (limited to 'arch/arm64/boot/dts')
-rw-r--r--arch/arm64/boot/dts/rockchip/rk3399.dtsi178
1 files changed, 178 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
index a6dd623a8845..4c84229789ef 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
@@ -45,6 +45,7 @@
45#include <dt-bindings/interrupt-controller/arm-gic.h> 45#include <dt-bindings/interrupt-controller/arm-gic.h>
46#include <dt-bindings/interrupt-controller/irq.h> 46#include <dt-bindings/interrupt-controller/irq.h>
47#include <dt-bindings/pinctrl/rockchip.h> 47#include <dt-bindings/pinctrl/rockchip.h>
48#include <dt-bindings/power/rk3399-power.h>
48#include <dt-bindings/thermal/thermal.h> 49#include <dt-bindings/thermal/thermal.h>
49 50
50/ { 51/ {
@@ -594,6 +595,183 @@
594 status = "disabled"; 595 status = "disabled";
595 }; 596 };
596 597
598 qos_hdcp: qos@ffa90000 {
599 compatible = "syscon";
600 reg = <0x0 0xffa90000 0x0 0x20>;
601 };
602
603 qos_iep: qos@ffa98000 {
604 compatible = "syscon";
605 reg = <0x0 0xffa98000 0x0 0x20>;
606 };
607
608 qos_isp0_m0: qos@ffaa0000 {
609 compatible = "syscon";
610 reg = <0x0 0xffaa0000 0x0 0x20>;
611 };
612
613 qos_isp0_m1: qos@ffaa0080 {
614 compatible = "syscon";
615 reg = <0x0 0xffaa0080 0x0 0x20>;
616 };
617
618 qos_isp1_m0: qos@ffaa8000 {
619 compatible = "syscon";
620 reg = <0x0 0xffaa8000 0x0 0x20>;
621 };
622
623 qos_isp1_m1: qos@ffaa8080 {
624 compatible = "syscon";
625 reg = <0x0 0xffaa8080 0x0 0x20>;
626 };
627
628 qos_rga_r: qos@ffab0000 {
629 compatible = "syscon";
630 reg = <0x0 0xffab0000 0x0 0x20>;
631 };
632
633 qos_rga_w: qos@ffab0080 {
634 compatible = "syscon";
635 reg = <0x0 0xffab0080 0x0 0x20>;
636 };
637
638 qos_video_m0: qos@ffab8000 {
639 compatible = "syscon";
640 reg = <0x0 0xffab8000 0x0 0x20>;
641 };
642
643 qos_video_m1_r: qos@ffac0000 {
644 compatible = "syscon";
645 reg = <0x0 0xffac0000 0x0 0x20>;
646 };
647
648 qos_video_m1_w: qos@ffac0080 {
649 compatible = "syscon";
650 reg = <0x0 0xffac0080 0x0 0x20>;
651 };
652
653 qos_vop_big_r: qos@ffac8000 {
654 compatible = "syscon";
655 reg = <0x0 0xffac8000 0x0 0x20>;
656 };
657
658 qos_vop_big_w: qos@ffac8080 {
659 compatible = "syscon";
660 reg = <0x0 0xffac8080 0x0 0x20>;
661 };
662
663 qos_vop_little: qos@ffad0000 {
664 compatible = "syscon";
665 reg = <0x0 0xffad0000 0x0 0x20>;
666 };
667
668 qos_gpu: qos@ffae0000 {
669 compatible = "syscon";
670 reg = <0x0 0xffae0000 0x0 0x20>;
671 };
672
673 pmu: power-management@ff310000 {
674 compatible = "rockchip,rk3399-pmu", "syscon", "simple-mfd";
675 reg = <0x0 0xff310000 0x0 0x1000>;
676
677 /*
678 * Note: RK3399 supports 6 voltage domains including VD_CORE_L,
679 * VD_CORE_B, VD_CENTER, VD_GPU, VD_LOGIC and VD_PMU.
680 * Some of the power domains are grouped together for every
681 * voltage domain.
682 * The detail contents as below.
683 */
684 power: power-controller {
685 compatible = "rockchip,rk3399-power-controller";
686 #power-domain-cells = <1>;
687 #address-cells = <1>;
688 #size-cells = <0>;
689
690 /* These power domains are grouped by VD_CENTER */
691 pd_iep@RK3399_PD_IEP {
692 reg = <RK3399_PD_IEP>;
693 clocks = <&cru ACLK_IEP>,
694 <&cru HCLK_IEP>;
695 pm_qos = <&qos_iep>;
696 };
697 pd_rga@RK3399_PD_RGA {
698 reg = <RK3399_PD_RGA>;
699 clocks = <&cru ACLK_RGA>,
700 <&cru HCLK_RGA>;
701 pm_qos = <&qos_rga_r>,
702 <&qos_rga_w>;
703 };
704 pd_vcodec@RK3399_PD_VCODEC {
705 reg = <RK3399_PD_VCODEC>;
706 clocks = <&cru ACLK_VCODEC>,
707 <&cru HCLK_VCODEC>;
708 pm_qos = <&qos_video_m0>;
709 };
710 pd_vdu@RK3399_PD_VDU {
711 reg = <RK3399_PD_VDU>;
712 clocks = <&cru ACLK_VDU>,
713 <&cru HCLK_VDU>;
714 pm_qos = <&qos_video_m1_r>,
715 <&qos_video_m1_w>;
716 };
717
718 /* These power domains are grouped by VD_GPU */
719 pd_gpu@RK3399_PD_GPU {
720 reg = <RK3399_PD_GPU>;
721 clocks = <&cru ACLK_GPU>;
722 pm_qos = <&qos_gpu>;
723 };
724
725 /* These power domains are grouped by VD_LOGIC */
726 pd_vio@RK3399_PD_VIO {
727 reg = <RK3399_PD_VIO>;
728 #address-cells = <1>;
729 #size-cells = <0>;
730
731 pd_hdcp@RK3399_PD_HDCP {
732 reg = <RK3399_PD_HDCP>;
733 clocks = <&cru ACLK_HDCP>,
734 <&cru HCLK_HDCP>,
735 <&cru PCLK_HDCP>;
736 pm_qos = <&qos_hdcp>;
737 };
738 pd_isp0@RK3399_PD_ISP0 {
739 reg = <RK3399_PD_ISP0>;
740 clocks = <&cru ACLK_ISP0>,
741 <&cru HCLK_ISP0>;
742 pm_qos = <&qos_isp0_m0>,
743 <&qos_isp0_m1>;
744 };
745 pd_isp1@RK3399_PD_ISP1 {
746 reg = <RK3399_PD_ISP1>;
747 clocks = <&cru ACLK_ISP1>,
748 <&cru HCLK_ISP1>;
749 pm_qos = <&qos_isp1_m0>,
750 <&qos_isp1_m1>;
751 };
752 pd_vo@RK3399_PD_VO {
753 reg = <RK3399_PD_VO>;
754 #address-cells = <1>;
755 #size-cells = <0>;
756
757 pd_vopb@RK3399_PD_VOPB {
758 reg = <RK3399_PD_VOPB>;
759 clocks = <&cru ACLK_VOP0>,
760 <&cru HCLK_VOP0>;
761 pm_qos = <&qos_vop_big_r>,
762 <&qos_vop_big_w>;
763 };
764 pd_vopl@RK3399_PD_VOPL {
765 reg = <RK3399_PD_VOPL>;
766 clocks = <&cru ACLK_VOP1>,
767 <&cru HCLK_VOP1>;
768 pm_qos = <&qos_vop_little>;
769 };
770 };
771 };
772 };
773 };
774
597 pmugrf: syscon@ff320000 { 775 pmugrf: syscon@ff320000 {
598 compatible = "rockchip,rk3399-pmugrf", "syscon", "simple-mfd"; 776 compatible = "rockchip,rk3399-pmugrf", "syscon", "simple-mfd";
599 reg = <0x0 0xff320000 0x0 0x1000>; 777 reg = <0x0 0xff320000 0x0 0x1000>;