I'm using Linux (esp. Yocto Linux Kirkstone with Kernel version 5.15) and came across the kernel options CONFIG_ARM_IMX_BUS_DEVFREQ and CONFIG_ARM_IMX8M_DDRC_DEVFREQ.
The description of the options say
This adds the generic DEVFREQ driver for i.MX interconnects. It allows adjusting NIC/NOC frequency.
and
This adds the DEVFREQ driver for the i.MX8M DDR Controller. It allows adjusting DRAM frequency.
Both options select DEVFREQ_GOV_USERSPACE which has the description
Sets the frequency at the user specified one. This governor returns the user configured frequency if there has been an input to /sys/devices/.../userspace/set_freq. Otherwise, the governor does not change the frequency given at the initialization.
Therefore, I think the above options are only useful, if there are any user space tools which tweak the values. But what tools are this? And without any user space process modifying the value, having these options on is the same as off, because the keep the initial values.
Another usage would be DEVFREQ_THERMAL, but this requires DEVFREQ_GOV_SIMPLE_ONDEMAND:
This implements the generic devfreq cooling mechanism through frequency reduction for devices using devfreq.
This will throttle the device by limiting the maximum allowed DVFS frequency corresponding to the cooling level.
In order to use the power extensions of the cooling device, devfreq should use the simple_ondemand governor.
Is it useful to enable these kernel options without having any tools in user space to interact with them? Which tools do I have to install?
已解决! 转到解答。
Hi @jo-so-nx
Yes you can drop both, As you can see in our latest BSP code, we do not set it as the default oni.MX8M .
B.R
HI @jo-so-nx
Sorry to reply late. There are two devices support devfreq on 8mm.
one is /sys/class/devfreq/3d400000.memory-controller driver is drivers/devfreq/imx8m-ddrc.c
this freq is dram clock
the other is /sys/class/devfreq/32700000.interconnect driver is drivers/devfreq/imx-bus.c
this freq is noc clock
devfreq is complete/independent with old busfreq mechanism
with devfreq you can also change noc/dram clock by echo "clockfreq" to /sys/class/devfreq/xxx/max(min)_freq
Because devfreq and busfreq both be active in system, and they are independent, so sometime they be conflict.
B.R
Thank you, @pengyong_zhang for helping me with this issue.
Do I get you right that I should either use busfreq (CONFIG_IMX8M_BUSFREQ) or devfreq (CONFIG_PM_DEVFREQ)? And can I use devfreq, because it's the newer one?
Or can I drop both and stay with the default frequencies from the device tree? I don't need power saving for this device.