Huacai Chen ccf5145414 cpufreq: Add Loongson-3 CPUFreq driver support
Some of LoongArch processors (Loongson-3 series) support DVFS, their
IOCSR.FEATURES has IOCSRF_FREQSCALE set. And they has a micro-core in
the package called SMC (System Management Controller), which can be
used to detect temperature, control fans, scale frequency and voltage,
etc.

The Loongson-3 CPUFreq driver is very simple now, it communicate with
SMC, get DVFS info, set target frequency from CPUFreq core, and so on.

There is a command list to interact with SMC, widely-used commands in
the CPUFreq driver include:

CMD_GET_VERSION: Get SMC firmware version.

CMD_GET_FEATURE: Get enabled SMC features.

CMD_SET_FEATURE: Enable SMC features, such as basic DVFS, BOOST.

CMD_GET_FREQ_LEVEL_NUM: Get the number of all frequency levels.

CMD_GET_FREQ_BOOST_LEVEL: Get the first boost frequency level.

CMD_GET_FREQ_LEVEL_INFO: Get the detail info of a frequency level.

CMD_GET_FREQ_INFO: Get the current frequency.

CMD_SET_FREQ_INFO: Set the target frequency.

In future we will add automatic frequency scaling, which is similar to
Intel's HWP (HardWare P-State).

Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
[ Viresh: Minor formatting cleanups, change return type of exit() to
	  void and use devm_mutex_init() ]
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2024-07-09 08:45:43 +05:30
..
2024-05-21 10:09:28 -07:00
2024-05-22 10:45:12 -07:00
2024-05-23 13:38:31 -07:00
2024-05-23 13:44:47 -07:00
2024-05-16 08:50:32 -07:00
2024-05-23 12:04:36 -07:00
2024-05-21 11:15:56 -07:00
2024-05-14 18:57:22 -07:00
2024-05-23 12:04:36 -07:00
2024-05-24 17:28:02 -07:00
2024-05-22 10:45:12 -07:00
2024-05-22 12:13:40 -07:00
2024-05-23 00:29:19 +02:00
2024-05-24 09:01:21 -07:00
2024-05-17 09:05:46 -07:00
2024-05-14 18:25:53 -07:00
2024-05-21 10:09:28 -07:00
2024-05-16 08:56:49 -07:00
2024-05-21 09:51:42 -07:00
2024-05-23 12:04:36 -07:00
2024-05-14 09:14:49 -06:00
2024-05-21 10:09:28 -07:00
2024-05-23 12:09:22 -07:00
2024-05-21 11:19:18 -07:00
2024-05-22 10:41:14 -07:00
2024-05-22 12:13:40 -07:00
2024-05-14 19:42:24 -07:00
2024-05-23 13:39:42 -07:00
2024-05-23 12:04:36 -07:00
2024-05-07 23:40:46 +02:00
2024-05-23 12:04:36 -07:00
2024-05-08 19:21:51 +01:00
2024-05-21 11:23:36 -07:00
2024-05-14 14:41:01 -07:00
2024-05-24 08:38:28 -07:00
2024-05-14 18:25:53 -07:00
2024-05-20 14:56:50 -07:00
2024-05-23 12:04:36 -07:00
2024-05-22 10:45:12 -07:00
2024-05-23 12:04:36 -07:00
2024-05-24 10:24:49 -07:00