Tests:R-CAR-GEN3-CPUFreq

From eLinux.org
Jump to: navigation, search

Kernel Version Configuration

CPUFreq support for R-Car Gen3 H3 (ES1.*) is currently available in a topic branch:

https://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git topic/rcar-gen3-cpufreq-v4

The ARM64 renesas_defconfig present in the above branch was used.

Hardware Environment

  • Salvator-X/r8a7795 (Gen 3 R-Car H3 SoC) ES1.0
  • Salvator-XS/r8a7795 (Gen 3 R-Car H3 SoC) ES2.0
  • Salvator-X/r8a7796 (Gen 3 R-Car M3-W SoC) ES1.0

The results shown below are from tests performed on the Salvator-X/r8a7795.
The Salvator-XS/r8a7795 gives the same results.
The Salvator-X/r8a7796 gives similar results but with 2 CPU cores rather than 4.

Verify CPUFreq Support

Verify Driver Initialisation

Initialisation of CPUFreq can be checked by checking for the presence of cpufreq directories in sysfs

# find /sys -name cpufreq
/sys/devices/system/cpu/cpu3/cpufreq
/sys/devices/system/cpu/cpu1/cpufreq
/sys/devices/system/cpu/cpufreq
/sys/devices/system/cpu/cpu2/cpufreq
/sys/devices/system/cpu/cpu0/cpufreq
/sys/module/cpufreq

Change to cpu sysfs directory

# cd /sys/devices/system/cpu

Inspect Available Frequencies

# grep . */cpufreq/scaling_available_frequencies
cpu0/cpufreq/scaling_available_frequencies:500000 1000000 1500000 
cpu1/cpufreq/scaling_available_frequencies:500000 1000000 1500000 
cpu2/cpufreq/scaling_available_frequencies:500000 1000000 1500000 
cpu3/cpufreq/scaling_available_frequencies:500000 1000000 1500000 

Exercise CPUFreq Support

Change to cpu sysfs directory

# cd /sys/devices/system/cpu

Observe CPU Frequency Changes

On Boot

  • Z clock and Current CPU frequencies are ~1.5GHz.
  • Z clock is half of PLL0.
  • Z2 clock is half of PLL2.
# grep -E -w "pll0|z" /sys/kernel/debug/clk/clk_summary
       .pll0                              0            0  2999999880          0 0  
          z                               0            0  1499999940          0 0  
# grep -E -w "pll2|z2" /sys/kernel/debug/clk/clk_summary
       .pll2                              0            0  2399999904          0 0  
          z2                              0            0  1199999952          0 0  
# grep . cpu*/cpufreq/*cur*
cpu0/cpufreq/cpuinfo_cur_freq:1499999
cpu0/cpufreq/scaling_cur_freq:1500000
cpu1/cpufreq/cpuinfo_cur_freq:1499999
cpu1/cpufreq/scaling_cur_freq:1500000
cpu2/cpufreq/cpuinfo_cur_freq:1499999
cpu2/cpufreq/scaling_cur_freq:1500000
cpu3/cpufreq/cpuinfo_cur_freq:1499999
cpu3/cpufreq/scaling_cur_freq:1500000

Maximum Frequency Limited to 1.0GHz and then 500MHz.

  • Z clock and Current CPU frequencies correspond to the maximum set.
  • Z2 clock is unchanged because A53 CPUs are not in use.
  • PLL0 and PLL2 are fixed.
# echo 1000000 > cpu0/cpufreq/scaling_max_freq
# grep -E -w "pll0|z" /sys/kernel/debug/clk/clk_summary 
       .pll0                              0            0  2999999880          0 0  
          z                               0            0  1031249959          0 0  
# grep -E -w "pll2|z2" /sys/kernel/debug/clk/clk_summary 
       .pll2                              0            0  2399999904          0 0  
          z2                              0            0  1199999952          0 0  
# grep . cpu*/cpufreq/*cur*
cpu0/cpufreq/cpuinfo_cur_freq:1031249
cpu0/cpufreq/scaling_cur_freq:1000000
cpu1/cpufreq/cpuinfo_cur_freq:1031249
cpu1/cpufreq/scaling_cur_freq:1000000
cpu2/cpufreq/cpuinfo_cur_freq:1031249
cpu2/cpufreq/scaling_cur_freq:1000000
cpu3/cpufreq/cpuinfo_cur_freq:1031249
cpu3/cpufreq/scaling_cur_freq:1000000

# echo 500000 > cpu0/cpufreq/scaling_max_freq
# grep -E -w "pll0|z" /sys/kernel/debug/clk/clk_summary
       .pll0                              0            0  2999999880          0 0  
          z                               0            0   468749981          0 0
# grep -E -w "pll2|z2" /sys/kernel/debug/clk/clk_summary 
       .pll2                              0            0  2399999904          0 0  
          z2                              0            0  1199999952          0 0  
# grep . cpu*/cpufreq/*cur*
cpu0/cpufreq/cpuinfo_cur_freq:468749
cpu0/cpufreq/scaling_cur_freq:500000
cpu1/cpufreq/cpuinfo_cur_freq:468749
cpu1/cpufreq/scaling_cur_freq:500000
cpu2/cpufreq/cpuinfo_cur_freq:468749
cpu2/cpufreq/scaling_cur_freq:500000
cpu3/cpufreq/cpuinfo_cur_freq:468749
cpu3/cpufreq/scaling_cur_freq:500000