linux/drivers/clk/bcm
Maíra Canal 672299736a
clk: bcm: rpi: Manage clock rate in prepare/unprepare callbacks
On current firmware versions, RPI_FIRMWARE_SET_CLOCK_STATE doesn't
actually power off the clock. To achieve meaningful power savings, the
clock rate must be set to the minimum before disabling. This might be
fixed in future firmware releases.

Rather than pushing rate management to clock consumers, handle it
directly in the clock framework's prepare/unprepare callbacks. In
unprepare, set the rate to the minimum before disabling the clock.
In prepare, for clocks marked with `maximize` (currently v3d),
restore the rate to the maximum after enabling.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
Reviewed-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
2026-03-24 19:06:09 -07:00
..
clk-bcm63xx-gate.c clk: Switch back to struct platform_driver::remove() 2024-09-21 14:12:05 -07:00
clk-bcm63xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 1) 2022-06-10 14:51:35 +02:00
clk-bcm281xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 1) 2022-06-10 14:51:35 +02:00
clk-bcm2711-dvp.c clk: Switch back to struct platform_driver::remove() 2024-09-21 14:12:05 -07:00
clk-bcm2835-aux.c kbuild, clk: bcm2835: remove MODULE_LICENSE in non-modules 2023-03-06 11:29:15 -08:00
clk-bcm2835.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
clk-bcm21664.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 1) 2022-06-10 14:51:35 +02:00
clk-bcm53573-ilp.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
clk-bcm63268-timer.c clk: bcm: Add BCM63268 timer clock and reset driver 2023-03-27 13:18:07 -07:00
clk-cygnus.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 1) 2022-06-10 14:51:35 +02:00
clk-hr2.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 1) 2022-06-10 14:51:35 +02:00
clk-iproc-armpll.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
clk-iproc-asiu.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
clk-iproc-pll.c Convert 'alloc_flex' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
clk-iproc.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 1) 2022-06-10 14:51:35 +02:00
clk-kona-setup.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 1) 2022-06-10 14:51:35 +02:00
clk-kona.c clk: bcm: kona: Remove unused scaled_div_build 2025-05-06 14:35:50 -07:00
clk-kona.h clk: bcm: kona: Remove unused scaled_div_build 2025-05-06 14:35:50 -07:00
clk-ns2.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 1) 2022-06-10 14:51:35 +02:00
clk-nsp.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 1) 2022-06-10 14:51:35 +02:00
clk-raspberrypi.c clk: bcm: rpi: Manage clock rate in prepare/unprepare callbacks 2026-03-24 19:06:09 -07:00
clk-sr.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
Kconfig clk: bcm: Add BCM63268 timer clock and reset driver 2023-03-27 13:18:07 -07:00
Makefile clk: bcm: Add BCM63268 timer clock and reset driver 2023-03-27 13:18:07 -07:00