diff mbox series

[v3,04/15] dt-bindings: devfreq: rk3399_dmc: Specify idle params in nanoseconds

Message ID 20220307160918.v3.4.I01c6a2b2db578136686b42d463af985cfdff2fd9@changeid (mailing list archive)
State New, archived
Headers show
Series rk3399: Clean up and enable DDR DVFS | expand

Commit Message

Brian Norris March 8, 2022, 12:09 a.m. UTC
It's inefficient to use the same number of cycles for all OPPs, since
lower frequencies make for longer idle times. Let's specify the idle
time instead, so software can pick the optimal number of cycles on its
own.

NB: these bindings aren't used anywhere yet.

Signed-off-by: Brian Norris <briannorris@chromium.org>
Reviewed-by: Rob Herring <robh@kernel.org>
---

Changes in v3:
 * Add Reviewed-by

Changes in v2:
 * New patch

 .../bindings/devfreq/rk3399_dmc.yaml          | 50 +++++++++++++++++--
 1 file changed, 45 insertions(+), 5 deletions(-)

Comments

Krzysztof Kozlowski March 8, 2022, 6:09 p.m. UTC | #1
On 08/03/2022 01:09, Brian Norris wrote:
> It's inefficient to use the same number of cycles for all OPPs, since
> lower frequencies make for longer idle times. Let's specify the idle
> time instead, so software can pick the optimal number of cycles on its
> own.
> 
> NB: these bindings aren't used anywhere yet.
> 
> Signed-off-by: Brian Norris <briannorris@chromium.org>
> Reviewed-by: Rob Herring <robh@kernel.org>
> ---
> 
> Changes in v3:
>  * Add Reviewed-by
> 
> Changes in v2:
>  * New patch
> 
>  .../bindings/devfreq/rk3399_dmc.yaml          | 50 +++++++++++++++++--
>  1 file changed, 45 insertions(+), 5 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/devfreq/rk3399_dmc.yaml b/Documentation/devicetree/bindings/devfreq/rk3399_dmc.yaml
> index 2904ae4115f3..6a33a7b44741 100644
> --- a/Documentation/devicetree/bindings/devfreq/rk3399_dmc.yaml
> +++ b/Documentation/devicetree/bindings/devfreq/rk3399_dmc.yaml
> @@ -56,42 +56,52 @@ properties:
>        being used.
>  
>    rockchip,pd_idle:
> +    deprecated: true
>      $ref: /schemas/types.yaml#/definitions/uint32
>      description:
>        Configure the PD_IDLE value. Defines the power-down idle period in which
>        memories are placed into power-down mode if bus is idle for PD_IDLE DFI
>        clock cycles.
> +      See also rockchip,pd-idle-ns.
>  
>    rockchip,sr_idle:
> +    deprecated: true
>      $ref: /schemas/types.yaml#/definitions/uint32
>      description:
>        Configure the SR_IDLE value. Defines the self-refresh idle period in
>        which memories are placed into self-refresh mode if bus is idle for
>        SR_IDLE * 1024 DFI clock cycles (DFI clocks freq is half of DRAM clock).
>        Default value is "0".
> +      See also rockchip,sr-idle-ns.
>  
>    rockchip,sr_mc_gate_idle:
> +    deprecated: true
>      $ref: /schemas/types.yaml#/definitions/uint32
>      description:
>        Defines the memory self-refresh and controller clock gating idle period.
>        Memories are placed into self-refresh mode and memory controller clock
>        arg gating started if bus is idle for sr_mc_gate_idle*1024 DFI clock
>        cycles.
> +      See also rockchip,sr-mc-gate-idle-ns.
>  
>    rockchip,srpd_lite_idle:
> +    deprecated: true
>      $ref: /schemas/types.yaml#/definitions/uint32
>      description:
>        Defines the self-refresh power down idle period in which memories are
>        placed into self-refresh power down mode if bus is idle for
>        srpd_lite_idle * 1024 DFI clock cycles. This parameter is for LPDDR4
>        only.
> +      See also rockchip,srpd-lite-idle-ns.
>  
>    rockchip,standby_idle:
> +    deprecated: true
>      $ref: /schemas/types.yaml#/definitions/uint32
>      description:
>        Defines the standby idle period in which memories are placed into
>        self-refresh mode. The controller, pi, PHY and DRAM clock will be gated
>        if bus is idle for standby_idle * DFI clock cycles.
> +      See also rockchip,standby-idle-ns.
>  
>    rockchip,dram_dll_dis_freq:
>      deprecated: true
> @@ -260,6 +270,36 @@ properties:
>        When the DRAM type is LPDDR4, this parameter defines the PHY side ODT
>        strength. Default value is 60.
>  
> +  rockchip,pd-idle-ns:
> +    description:
> +      Configure the PD_IDLE value in nanoseconds. Defines the power-down idle
> +      period in which memories are placed into power-down mode if bus is idle
> +      for PD_IDLE nanoseconds.
> +
> +  rockchip,sr-idle-ns:
> +    description:
> +      Configure the SR_IDLE value in nanoseconds. Defines the self-refresh idle
> +      period in which memories are placed into self-refresh mode if bus is idle
> +      for SR_IDLE nanoseconds. Default value is "0".

Use "default: 0".



Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>


Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/devfreq/rk3399_dmc.yaml b/Documentation/devicetree/bindings/devfreq/rk3399_dmc.yaml
index 2904ae4115f3..6a33a7b44741 100644
--- a/Documentation/devicetree/bindings/devfreq/rk3399_dmc.yaml
+++ b/Documentation/devicetree/bindings/devfreq/rk3399_dmc.yaml
@@ -56,42 +56,52 @@  properties:
       being used.
 
   rockchip,pd_idle:
+    deprecated: true
     $ref: /schemas/types.yaml#/definitions/uint32
     description:
       Configure the PD_IDLE value. Defines the power-down idle period in which
       memories are placed into power-down mode if bus is idle for PD_IDLE DFI
       clock cycles.
+      See also rockchip,pd-idle-ns.
 
   rockchip,sr_idle:
+    deprecated: true
     $ref: /schemas/types.yaml#/definitions/uint32
     description:
       Configure the SR_IDLE value. Defines the self-refresh idle period in
       which memories are placed into self-refresh mode if bus is idle for
       SR_IDLE * 1024 DFI clock cycles (DFI clocks freq is half of DRAM clock).
       Default value is "0".
+      See also rockchip,sr-idle-ns.
 
   rockchip,sr_mc_gate_idle:
+    deprecated: true
     $ref: /schemas/types.yaml#/definitions/uint32
     description:
       Defines the memory self-refresh and controller clock gating idle period.
       Memories are placed into self-refresh mode and memory controller clock
       arg gating started if bus is idle for sr_mc_gate_idle*1024 DFI clock
       cycles.
+      See also rockchip,sr-mc-gate-idle-ns.
 
   rockchip,srpd_lite_idle:
+    deprecated: true
     $ref: /schemas/types.yaml#/definitions/uint32
     description:
       Defines the self-refresh power down idle period in which memories are
       placed into self-refresh power down mode if bus is idle for
       srpd_lite_idle * 1024 DFI clock cycles. This parameter is for LPDDR4
       only.
+      See also rockchip,srpd-lite-idle-ns.
 
   rockchip,standby_idle:
+    deprecated: true
     $ref: /schemas/types.yaml#/definitions/uint32
     description:
       Defines the standby idle period in which memories are placed into
       self-refresh mode. The controller, pi, PHY and DRAM clock will be gated
       if bus is idle for standby_idle * DFI clock cycles.
+      See also rockchip,standby-idle-ns.
 
   rockchip,dram_dll_dis_freq:
     deprecated: true
@@ -260,6 +270,36 @@  properties:
       When the DRAM type is LPDDR4, this parameter defines the PHY side ODT
       strength. Default value is 60.
 
+  rockchip,pd-idle-ns:
+    description:
+      Configure the PD_IDLE value in nanoseconds. Defines the power-down idle
+      period in which memories are placed into power-down mode if bus is idle
+      for PD_IDLE nanoseconds.
+
+  rockchip,sr-idle-ns:
+    description:
+      Configure the SR_IDLE value in nanoseconds. Defines the self-refresh idle
+      period in which memories are placed into self-refresh mode if bus is idle
+      for SR_IDLE nanoseconds. Default value is "0".
+
+  rockchip,sr-mc-gate-idle-ns:
+    description:
+      Defines the memory self-refresh and controller clock gating idle period in nanoseconds.
+      Memories are placed into self-refresh mode and memory controller clock
+      arg gating started if bus is idle for sr_mc_gate_idle nanoseconds.
+
+  rockchip,srpd-lite-idle-ns:
+    description:
+      Defines the self-refresh power down idle period in which memories are
+      placed into self-refresh power down mode if bus is idle for
+      srpd_lite_idle nanoseonds. This parameter is for LPDDR4 only.
+
+  rockchip,standby-idle-ns:
+    description:
+      Defines the standby idle period in which memories are placed into
+      self-refresh mode. The controller, pi, PHY and DRAM clock will be gated
+      if bus is idle for standby_idle nanoseconds.
+
 required:
   - compatible
   - devfreq-events
@@ -283,11 +323,11 @@  examples:
       clock-names = "dmc_clk";
       operating-points-v2 = <&dmc_opp_table>;
       center-supply = <&ppvar_centerlogic>;
-      rockchip,pd_idle = <0x40>;
-      rockchip,sr_idle = <0x2>;
-      rockchip,sr_mc_gate_idle = <0x3>;
-      rockchip,srpd_lite_idle = <0x4>;
-      rockchip,standby_idle = <0x2000>;
+      rockchip,pd-idle-ns = <160>;
+      rockchip,sr-idle-ns = <10240>;
+      rockchip,sr-mc-gate-idle-ns = <40960>;
+      rockchip,srpd-lite-idle-ns = <61440>;
+      rockchip,standby-idle-ns = <81920>;
       rockchip,ddr3_odt_dis_freq = <333000000>;
       rockchip,lpddr3_odt_dis_freq = <333000000>;
       rockchip,lpddr4_odt_dis_freq = <333000000>;