Rock 3c frequency apparently capped at 1.42 Ghz

I installed Radha OS(Debian) & the max_freq is set at 1.42Ghz. I am concerned as this is significantly less than the 1.6 I expected. I’ve tried cpufreq-set to no avail & directly editing scaling_max_freq with no luck. Is 1.42 Ghz the actual max for this board? Thanks.

rock@rock-3c:~$ sudo cpupower frequency-info
[sudo] password for rock:
analyzing CPU 0:
driver: cpufreq-dt
CPUs which run at the same hardware frequency: 0 1 2 3
CPUs which need to have their frequency coordinated by software: 0 1 2 3
maximum transition latency: 149 us
hardware limits: 408 MHz - 1.42 GHz
available frequency steps: 408 MHz, 600 MHz, 816 MHz, 1.10 GHz, 1.42 GHz
available cpufreq governors: ondemand performance schedutil
current policy: frequency should be within 408 MHz and 1.42 GHz.
The governor “performance” may decide which speed to use
within this range.

I managed to build my own image using the resources at https://github.com/radxa-repo/rbuild.
The problem persists, maximum frequency is still set at 1412000. I’m somewhat disgruntled; this amounts to a 12.5% underclock from the advertised frequency of 1.6Ghz.
I’ve also updated the bootloader with rsetup.

Maybe this can help, read carefully and try these tip:

After reviewing this, I decompiled /usr/lib/linux-image-5.10.160-36-rk356x/rockchip/rk3566-rock-3c.dtb

I found
cpu0-opp-table {
compatible = “operating-points-v2”;
opp-shared;
mbist-vmin = <0xc96a8 0xdbba0 0xe7ef0>;
I nvmem-cells = <0x06 0x07 0x08 0x09>;
nvmem-cell-names = “leakage\0pvtm\0mbist-vmin\0opp-info”;
rockchip,max-volt = <0x124f80>;
rockchip,pvtm-voltage-sel = <0x00 0x14820 0x00 0x14821 0x153d8 0x01 0x153d9 0x16378 0x02 0x16379 0x186a0 0x03>;
rockchip,pvtm-freq = <0x639c0>;
rockchip,pvtm-volt = <0xdbba0>;
rockchip,pvtm-ch = <0x00 0x05>;
rockchip,pvtm-sample-time = <0x3e8>;
rockchip,pvtm-number = <0x0a>;
rockchip,pvtm-error = <0x3e8>;
rockchip,pvtm-ref-temp = <0x28>;
rockchip,pvtm-temp-prop = <0x1a 0x1a>;
rockchip,thermal-zone = “soc-thermal”;
rockchip,temp-hysteresis = <0x1388>;
rockchip,low-temp = <0x00>;
rockchip,low-temp-adjust-volt = <0x00 0x7c8 0x124f8>;
phandle = <0x03>;

            opp-408000000 {
                    opp-hz = <0x00 0x18519600>;
                    opp-microvolt = <0xcf850 0xcf850 0x118c30>;
                    opp-microvolt-L3 = <0xdbba0 0xdbba0 0x118c30>;
                    clock-latency-ns = <0x9c40>;
            };

            opp-600000000 {
                    opp-hz = <0x00 0x23c34600>;
                    opp-microvolt = <0xcf850 0xcf850 0x118c30>;
                    opp-microvolt-L3 = <0xdbba0 0xdbba0 0x118c30>;
                    clock-latency-ns = <0x9c40>;
            };

            opp-816000000 {
                    opp-hz = <0x00 0x30a32c00>;
                    opp-microvolt = <0xcf850 0xcf850 0x118c30>;
                    opp-microvolt-L3 = <0xdbba0 0xdbba0 0x118c30>;
                    clock-latency-ns = <0x9c40>;
                    opp-suspend;
            };

            opp-1104000000 {
                    opp-hz = <0x00 0x41cdb400>;
                    opp-microvolt = <0xdbba0 0xdbba0 0x118c30>;
                    opp-microvolt-L0 = <0xdbba0 0xdbba0 0x118c30>;
                    opp-microvolt-L1 = <0xcf850 0xcf850 0x118c30>;
                    opp-microvolt-L2 = <0xcf850 0xcf850 0x118c30>;
                    opp-microvolt-L3 = <0xdbba0 0xdbba0 0x118c30>;
                    clock-latency-ns = <0x9c40>;
            };

            opp-1416000000 {
                    opp-hz = <0x00 0x54667200>;
                    opp-microvolt = <0xfa3e8 0xfa3e8 0x118c30>;
                    opp-hz = <0x00 0x54667200>;
                    opp-microvolt = <0xfa3e8 0xfa3e8 0x118c30>;
                    opp-microvolt-L0 = <0xfa3e8 0xfa3e8 0x118c30>;
                    opp-microvolt-L1 = <0xee098 0xee098 0x118c30>;
                    opp-microvolt-L2 = <0xe7ef0 0xe7ef0 0x118c30>;
                    opp-microvolt-L3 = <0xf4240 0xf4240 0x118c30>;
                    clock-latency-ns = <0x9c40>;
            };

            opp-1608000000 {
                    opp-hz = <0x00 0x5fd82200>;
                    opp-microvolt = <0x10c8e0 0x10c8e0 0x118c30>;
                    opp-microvolt-L0 = <0x10c8e0 0x10c8e0 0x118c30>;
                    opp-microvolt-L1 = <0x100590 0x100590 0x118c30>;
                    opp-microvolt-L2 = <0xfa3e8 0xfa3e8 0x118c30>;
                    opp-microvolt-L3 = <0xf4240 0xf4240 0x118c30>;
                    clock-latency-ns = <0x9c40>;
            };

            opp-1800000000 {
                    opp-hz = <0x00 0x6b49d200>;
                    opp-microvolt = <0x118c30 0x118c30 0x118c30>;
                    opp-microvolt-L0 = <0x118c30 0x118c30 0x118c30>;
                    opp-microvolt-L1 = <0x10c8e0 0x10c8e0 0x118c30>;
                    opp-microvolt-L2 = <0x106738 0x106738 0x118c30>;
                    opp-microvolt-L3 = <0x100590 0x100590 0x118c30>;
                    clock-latency-ns = <0x9c40>;
            };

So I am at a loss as to why I am not seeing 1.8Ghz as my max speed.

Reboot your board and show the output of this (command line):

dmesg|grep soc_is_rk3566t

rock@rock-3c:~$ sudo dmesg | grep soc_is_rk3566t
[sudo] password for rock:
[ 11.737824] rockchip-cpuinfo cpuinfo: soc_is_rk3566t: 00000001
rock@rock-3c:~$

Right after this line:
[https://github.com/radxa/kernel/blob/linux-5.10-gen-rkr4.1/drivers/soc/rockchip/rockchip-cpuinfo.c#L103]
add the following:

soc_is_rk3566t = 0; // pretend we are not RK3566T

Build the kernel and update. Add a good heatsink. Do it at your own risk.

Thanks. It worked, but running at 1.6Ghz leads to immediate throttling due to high temps. I’ll work on a cooling solution. For now I’m back at 1.42Ghz.

I put heatsinks on the cpu and ram chips and just set a tiny 5 volt 0.2 amp fan on top ( upside down so the blades wouldn’t hit anything). It’s now happily running at 1.8Ghz, all cores maxed out mining riecoin, with temps under 65c.

:star_struck: