linux/drivers/devfreq
Nicolas Frattaroli eddb5ba91b PM / devfreq: rockchip-dfi: add support for LPDDR5
The Rockchip RK3588 SoC can also support LPDDR5 memory. This type of
memory needs some special case handling in the rockchip-dfi driver.

Add support for it in rockchip-dfi, as well as the needed GRF register
definitions.

This has been tested as returning both the right cycle count and
bandwidth on a LPDDR5 board where the CKR bit is 1. I couldn't test
whether the values are correct on a system where CKR is 0, as I'm not
savvy enough with the Rockchip tooling to know whether this can be set
in the DDR init blob.

Downstream has some special case handling for a hardware version where
not just the control bits differ, but also the register. Since I don't
know whether that hardware version is in any production silicon, it's
left unimplemented for now, with an error message urging users to report
if they have such a system.

There is a slight change of behaviour for non-LPDDR5 systems: instead of
writing 0 as the control flags to the control register and pretending
everything is alright if the memory type is unknown, we now explicitly
return an error.

Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Link: https://patchwork.kernel.org/project/linux-pm/patch/20250530-rk3588-dfi-improvements-v1-2-6e077c243a95@collabora.com/
2025-09-09 23:37:39 +09:00
..
event PM / devfreq: rockchip-dfi: add support for LPDDR5 2025-09-09 23:37:39 +09:00
Kconfig PM / devfreq: Add HiSilicon uncore frequency scaling driver 2025-07-14 20:23:57 +09:00
Makefile PM / devfreq: Add HiSilicon uncore frequency scaling driver 2025-07-14 20:23:57 +09:00
devfreq-event.c PM / devfreq: event: Call of_node_put() only once in devfreq_event_get_edev_by_phandle() 2024-12-08 21:58:55 +09:00
devfreq.c PM / devfreq: Allow devfreq driver to add custom sysfs ABIs 2025-07-14 20:22:59 +09:00
exynos-bus.c PM / devfreq: exynos: remove unused function parameter 2025-01-11 21:03:07 +09:00
governor.h PM / devfreq: passive: Keep cpufreq_policy for possible cpus 2022-05-17 18:24:39 +09:00
governor_passive.c PM / devfreq: passive: revert an editing accident in SPDX-License line 2022-06-30 05:11:17 +09:00
governor_performance.c PM/devfreq: governor: add missing MODULE_DESCRIPTION() macros 2024-09-05 00:33:00 +09:00
governor_powersave.c PM/devfreq: governor: add missing MODULE_DESCRIPTION() macros 2024-09-05 00:33:00 +09:00
governor_simpleondemand.c PM/devfreq: governor: add missing MODULE_DESCRIPTION() macros 2024-09-05 00:33:00 +09:00
governor_userspace.c PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() 2025-07-14 20:04:16 +09:00
hisi_uncore_freq.c PM / devfreq: Add HiSilicon uncore frequency scaling driver 2025-07-14 20:23:57 +09:00
imx-bus.c PM / devfreq: imx-bus: Use of_property_present() 2024-09-05 01:23:56 +09:00
imx8m-ddrc.c PM / devfreq: Explicitly include correct DT includes 2023-07-24 05:19:26 +09:00
mtk-cci-devfreq.c PM / devfreq: mtk-cci: avoid redundant conditions 2025-09-08 17:19:25 +09:00
rk3399_dmc.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
sun8i-a33-mbus.c PM / devfreq: sun8i-a33-mbus: Simplify by using more devm functions 2025-07-14 20:04:17 +09:00
tegra30-devfreq.c PM / devfreq: Explicitly include correct DT includes 2023-07-24 05:19:26 +09:00