arm: dts: rk3288: add dfi and dmc device nodes
authorTang Yun ping <typ@rock-chips.com>
Wed, 12 Apr 2017 09:49:04 +0000 (17:49 +0800)
committerJianqun Xu <jay.xu@rock-chips.com>
Thu, 29 Jun 2017 01:49:17 +0000 (09:49 +0800)
Add dfi and dmc nodes in the device tree for the ARM rk3288 SoC.
To support ddr frequency scaling function, we need enable dmc and
dfi nodes.

Change-Id: Ib796c08c694e74e0da3319d2797e95aecf3e7e73
Signed-off-by: Tang Yun ping <typ@rock-chips.com>
arch/arm/boot/dts/rk3288-android.dtsi
arch/arm/boot/dts/rk3288-dram-default-timing.dtsi [new file with mode: 0644]
include/dt-bindings/memory/rk3288-dram.h [new file with mode: 0644]

index 88a915e207a43ccd27d9ea0360b9b3a77c437aa6..84d732f898d639690782963756528b9f4791acac 100644 (file)
  */
 #include <dt-bindings/pwm/pwm.h>
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/rockchip-system-status.h>
+#include "rk3288-dram-default-timing.dtsi"
 
 / {
        chosen {
                bootargs = "earlycon=uart8250,mmio32,0xff690000";
        };
 
+       /delete-node/ dmc@ff610000;
+
+       dfi: dfi {
+               compatible = "rockchip,rk3288-dfi";
+               rockchip,pmu = <&pmu>;
+               rockchip,grf = <&grf>;
+               status = "disabled";
+       };
+
+       dmc: dmc {
+               compatible = "rockchip,rk3288-dmc";
+               devfreq-events = <&dfi>;
+               clocks = <&cru SCLK_DDRCLK>, <&cru PCLK_PUBL0>,
+                        <&cru PCLK_DDRUPCTL0>, <&cru PCLK_PUBL1>,
+                        <&cru PCLK_DDRUPCTL1>;
+               clock-names = "dmc_clk", "pclk_phy0", "pclk_upctl0",
+                             "pclk_phy1", "pclk_upctl1";
+               upthreshold = <55>;
+               downdifferential = <10>;
+               operating-points-v2 = <&dmc_opp_table>;
+               vop-dclk-mode = <0>;
+               min-cpu-freq = <600000>;
+               rockchip,ddr_timing = <&ddr_timing>;
+               system-status-freq = <
+                       /*system status         freq(KHz)*/
+                       SYS_STATUS_NORMAL       396000
+                       SYS_STATUS_REBOOT       396000
+                       SYS_STATUS_SUSPEND      192000
+                       SYS_STATUS_VIDEO_1080P  300000
+                       SYS_STATUS_VIDEO_4K     396000
+                       SYS_STATUS_PERFORMANCE  528000
+                       SYS_STATUS_BOOST        396000
+                       SYS_STATUS_DUALVIEW     396000
+                       SYS_STATUS_ISP          396000
+               >;
+               auto-min-freq = <192000>;
+               auto-freq-en = <0>;
+               status = "diasbled";
+       };
+
+       dmc_opp_table: opp_table2 {
+               compatible = "operating-points-v2";
+
+               opp-192000000 {
+                       opp-hz = /bits/ 64 <192000000>;
+                       opp-microvolt = <1100000>;
+               };
+               opp-300000000 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-microvolt = <1100000>;
+               };
+               opp-396000000 {
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-microvolt = <1100000>;
+               };
+               opp-528000000 {
+                       opp-hz = /bits/ 64 <528000000>;
+                       opp-microvolt = <1150000>;
+               };
+       };
+
        reserved-memory {
                ramoops_mem: ramoops@00000000 {
                        reg = <0x0 0x8000000 0x0 0xF0000>;
diff --git a/arch/arm/boot/dts/rk3288-dram-default-timing.dtsi b/arch/arm/boot/dts/rk3288-dram-default-timing.dtsi
new file mode 100644 (file)
index 0000000..8f90488
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <dt-bindings/clock/rockchip-ddr.h>
+#include <dt-bindings/memory/rk3288-dram.h>
+
+/ {
+       ddr_timing: ddr_timing {
+               compatible = "rockchip,ddr-timing";
+               ddr3_speed_bin = <DDR3_DEFAULT>;
+               pd_idle = <0x40>;
+               sr_idle = <0x1>;
+
+               auto_pd_dis_freq = <800>;
+               auto_sr_dis_freq = <800>;
+               ddr3_dll_dis_freq = <300>;
+               phy_dll_dis_freq = <250>;
+
+               ddr3_odt_dis_freq = <333>;
+               phy_ddr3_odt_dis_freq = <333>;
+               ddr3_drv = <DDR3_DS_40ohm>;
+               ddr3_odt = <DDR3_ODT_120ohm>;
+               phy_ddr3_drv = <PHY_DDR3_RON_34ohm>;
+               phy_ddr3_odt = <PHY_DDR3_RTT_155ohm>;
+
+               lpddr2_drv = <LP2_DS_40ohm>;
+               phy_lpddr2_drv = <PHY_LP23_RON_35ohm>;
+
+               lpddr3_odt_dis_freq = <333>;
+               phy_lpddr3_odt_dis_freq = <333>;
+               lpddr3_drv = <LP3_DS_40ohm>;
+               lpddr3_odt = <LP3_ODT_240ohm>;
+               phy_lpddr3_drv = <PHY_LP23_RON_35ohm>;
+               phy_lpddr3_odt = <PHY_LP23_RTT_155ohm>;
+       };
+};
diff --git a/include/dt-bindings/memory/rk3288-dram.h b/include/dt-bindings/memory/rk3288-dram.h
new file mode 100644 (file)
index 0000000..1c531dc
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef _DT_BINDINGS_DRAM_ROCKCHIP_RK3288_H
+#define _DT_BINDINGS_DRAM_ROCKCHIP_RK3288_H
+
+#define DDR3_DS_34ohm                  (34)
+#define DDR3_DS_40ohm                  (40)
+
+#define DDR3_ODT_DIS                   (0)
+#define DDR3_ODT_40ohm                 (40)
+#define DDR3_ODT_60ohm                 (60)
+#define DDR3_ODT_120ohm                        (120)
+
+#define LP2_DS_34ohm                   (34)
+#define LP2_DS_40ohm                   (40)
+#define LP2_DS_48ohm                   (48)
+#define LP2_DS_60ohm                   (60)
+#define LP2_DS_68_6ohm                 (68)    /* optional */
+#define LP2_DS_80ohm                   (80)
+#define LP2_DS_120ohm                  (120)   /* optional */
+
+#define LP3_DS_34ohm                   (34)
+#define LP3_DS_40ohm                   (40)
+#define LP3_DS_48ohm                   (48)
+#define LP3_DS_60ohm                   (60)
+#define LP3_DS_80ohm                   (80)
+#define LP3_DS_34D_40U                 (3440)
+#define LP3_DS_40D_48U                 (4048)
+#define LP3_DS_34D_48U                 (3448)
+
+#define LP3_ODT_DIS                    (0)
+#define LP3_ODT_60ohm                  (60)
+#define LP3_ODT_120ohm                 (120)
+#define LP3_ODT_240ohm                 (240)
+
+/* PHY DRV ODT strength*/
+#define PHY_DDR3_RON_114ohm            (7)
+#define PHY_DDR3_RON_95ohm             (4)
+#define PHY_DDR3_RON_81ohm             (5)
+#define PHY_DDR3_RON_71ohm             (0xc)
+#define PHY_DDR3_RON_63ohm             (0xd)
+#define PHY_DDR3_RON_57ohm             (0xe)
+#define PHY_DDR3_RON_52ohm             (0xf)
+#define PHY_DDR3_RON_47ohm             (0xa)
+#define PHY_DDR3_RON_44ohm             (0xb)
+#define PHY_DDR3_RON_41ohm             (0x8)
+#define PHY_DDR3_RON_38ohm             (0x9)
+#define PHY_DDR3_RON_34ohm             (0x19)
+#define PHY_DDR3_RON_30ohm             (0x1b)
+#define PHY_DDR3_RON_26ohm             (0x1c)
+#define PHY_DDR3_RON_23ohm             (0x15)
+#define PHY_DDR3_RON_20ohm             (0x12)
+#define PHY_DDR3_RON_18ohm             (0x11)
+
+#define PHY_DDR3_RTT_368ohm            (0x1)
+#define PHY_DDR3_RTT_155ohm            (0x2)
+#define PHY_DDR3_RTT_113ohm            (0x3)
+#define PHY_DDR3_RTT_80ohm             (0x6)
+#define PHY_DDR3_RTT_64ohm             (0x7)
+#define PHY_DDR3_RTT_54ohm             (0x4)
+#define PHY_DDR3_RTT_40ohm             (0xc)
+#define PHY_DDR3_RTT_30ohm             (0xf)
+
+#define PHY_LP23_RON_110ohm            (4)
+#define PHY_LP23_RON_83ohm             (0xc)
+#define PHY_LP23_RON_73ohm             (0xd)
+#define PHY_LP23_RON_66ohm             (0xe)
+#define PHY_LP23_RON_60ohm             (0xf)
+#define PHY_LP23_RON_55ohm             (0xa)
+#define PHY_LP23_RON_51ohm             (0xb)
+#define PHY_LP23_RON_44ohm             (0x9)
+#define PHY_LP23_RON_39ohm             (0x19)
+#define PHY_LP23_RON_35ohm             (0x1b)
+#define PHY_LP23_RON_30ohm             (0x1c)
+#define PHY_LP23_RON_26ohm             (0x16)
+#define PHY_LP23_RON_22ohm             (0x10)
+
+#define PHY_LP23_RTT_368ohm            (0x1)
+#define PHY_LP23_RTT_155ohm            (0x2)
+#define PHY_LP23_RTT_113ohm            (0x3)
+#define PHY_LP23_RTT_80ohm             (0x6)
+#define PHY_LP23_RTT_64ohm             (0x7)
+#define PHY_LP23_RTT_54ohm             (0x4)
+#define PHY_LP23_RTT_40ohm             (0xc)
+#define PHY_LP23_RTT_30ohm             (0xf)
+
+#endif /*_DT_BINDINGS_DRAM_ROCKCHIP_RK3288_H*/