Introduce ROCK 5B - ARM Desktop level SBC

Check sbc-bench output in detail. That’s two different phenomenons:

  1. the cpufreq driver is hiding certain cpufreq OPP (on @willy’s board also the top ones)
  2. real clockspeeds differ from cpufreq OPP in different directions

As an example ‘my’ board:

Checking cpufreq OPP for cpu0-cpu3 (Cortex-A55):

Cpufreq OPP: 1800    Measured: 1828 (1828.663/1828.622/1828.125)     (+1.6%)
Cpufreq OPP: 1608    Measured: 1645 (1645.519/1645.452/1644.982)     (+2.3%)
Cpufreq OPP: 1416    Measured: 1422 (1422.748/1422.654/1422.544)
Cpufreq OPP: 1200    Measured: 1230 (1231.014/1230.882/1230.354)     (+2.5%)
Cpufreq OPP: 1008    Measured: 1062 (1062.635/1062.504/1061.903)     (+5.4%)
Cpufreq OPP:  816    Measured:  845    (845.559/845.516/844.695)     (+3.6%)
Cpufreq OPP:  600    Measured:  587    (590.172/589.922/583.196)     (-2.2%)
Cpufreq OPP:  408    Measured:  391    (391.348/391.180/390.991)     (-4.2%)

Checking cpufreq OPP for cpu4-cpu5 (Cortex-A76):

Cpufreq OPP: 2400    Measured: 2348 (2348.432/2348.405/2348.268)     (-2.2%)
Cpufreq OPP: 2208    Measured: 2185 (2185.642/2185.619/2185.571)
Cpufreq OPP: 2016    Measured: 2016 (2017.078/2016.977/2016.750)
Cpufreq OPP: 1800    Measured: 1817 (1817.134/1817.114/1816.991)
Cpufreq OPP: 1608    Measured: 1625 (1625.664/1625.632/1625.255)     (+1.1%)
Cpufreq OPP: 1416    Measured: 1437 (1437.125/1437.110/1436.982)     (+1.5%)
Cpufreq OPP: 1200    Measured: 1259 (1259.240/1259.132/1258.933)     (+4.9%)
Cpufreq OPP: 1008    Measured: 1056 (1056.646/1056.527/1056.387)     (+4.8%)
Cpufreq OPP:  816    Measured:  849    (850.073/850.012/849.793)     (+4.0%)
Cpufreq OPP:  600    Measured:  592    (592.260/592.234/592.154)     (-1.3%)
Cpufreq OPP:  408    Measured:  394    (394.444/394.302/394.288)     (-3.4%)

Checking cpufreq OPP for cpu6-cpu7 (Cortex-A76):

Cpufreq OPP: 2400    Measured: 2348 (2348.350/2348.268/2348.159)     (-2.2%)
Cpufreq OPP: 2208    Measured: 2185 (2185.548/2185.453/2185.311)
Cpufreq OPP: 2016    Measured: 2015 (2015.390/2015.315/2015.114)
Cpufreq OPP: 1800    Measured: 1813 (1813.888/1813.888/1813.847)
Cpufreq OPP: 1608    Measured: 1620 (1620.361/1620.263/1620.149)
Cpufreq OPP: 1416    Measured: 1429 (1429.315/1429.204/1429.204)
Cpufreq OPP: 1200    Measured: 1246 (1246.176/1246.056/1246.026)     (+3.8%)
Cpufreq OPP: 1008    Measured: 1048 (1048.325/1048.240/1048.229)     (+4.0%)
Cpufreq OPP:  816    Measured:  842    (842.671/842.611/842.422)     (+3.2%)
Cpufreq OPP:  600    Measured:  592    (592.273/592.234/592.161)     (-1.3%)
Cpufreq OPP:  408    Measured:  394    (394.366/394.288/394.233)     (-3.4%)

The cpufreq driver decides to hide 2256, 2304 and 2352 from the OPP table (which might be a reasonable choice since the 200 MHz step between 2208-2400 is ok) but in @willy’s case cpu4-5 get 2304 MHz as highest OPP and cpu6-7 get 2352 MHz. The driver hides the 2400 OPP regardless what the MCU inside the SoC decides to use as real clockspeeds for each cpufreq OPP.

And you should be aware that Amlogic’s clockspeed cheating stopped with most recent SoCs. The last ones where we observed a hardcoded difference between cpufreq OPP and real clockspeeds was GXL/GXM (S905X and S912 where cpufreq OPP says 1.5 GHz while in reality it’s 1.4 GHz)