[GIT PULL] clk: round one of improvements for v7.1

Brian Masney
2026-03-12T15:04:33Z

Hi Stephen,

Here's a pull for some fixes and improvements for the clk subsystem
that's been posted over the last month. Details are in the signed git
tag. I didn't include any new drivers, or changes where it looks like
there is a submaintainer that typically sends you a pull separately.

The following changes since commit 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f:

Linux 7.0-rc1 (2026-02-22 13:18:59 -0800)

are available in the Git repository at:

https://github.com/masneyb/linux tags/clk-for-stephen-round-1-v7.1

for you to fetch changes up to 5e31ef47fa888c9ce117a85bff6a7df26cb2c337:

clk: scmi: Add i.MX95 OEM extension support for SCMI clock driver (2026-03-12 09:45:03 -0400)

----------------------------------------------------------------
Improvements to the clk core

- Add support for clk spread spectrum, which reduces electromagnetic
interference (EMI) by modulating the clk frequency a small amount to
spread the energy across a wider bandwidth. The SCMI clk driver uses
this new functionality. (Peng Fan)

- Introduced the CLK_ROUNDING_NOOP flag, which is for the case where the
determine_rate op is an empty function. This typically occurs when
rounding is managed by firmware or the clock is capable of any rate.
Nine clk drivers were updated to use this new flag: rp1, scpi,
hisilicon/hi3660-stub, imx/clk-scu, qcom/clk-rpm, qcom/clk-rpmh,
qcom/clk-smd-rpm, samsung/clk-acpm, sprd/pll. (Brian Masney)

- Added kernel docs for all members of struct clk_core. (Brian Masney)

- Simplify clk_is_match() and improve readability. (Geert Uytterhoeven)

Remove deprecated APIs (all Brian Masney)

- Converts clk-composite from round_rate() to determine_rate().

- Removes the round_rate() clk op.

- Removes the deprecated functions divider_round_rate(),
divider_round_rate_parent(), and divider_ro_round_rate_parent() since
these are just wrappers for the corresponding determine_rate variant.

KUnit Tests

- Add tests for clk lookup by name. (Chen-Yu Tsai)

- Introduced kunit tests for spread spectrum. (Peng Fan)

- Minor cleanup to use HZ_PER_MHZ. (Brian Masney)

Driver-specific updates not listed above

- The SCMI driver gained support for OEM extensions. (Peng Fan)

- Dropped the baikal-t1 SoC that will not be finalized / supported.
(Andy Shevchenko)

- Minor bug fixes / cleanups to various drivers across the clk tree:
aspeed/ast2700 (Felix Gu), x86/lpss-atom (Andy Shevchenko),
hisilicon/reset (Shawn Guo), hisilicon (J. Neuschäfer), xgene (Geert
Uytterhoeven), mvebu/armada-37xx-periph (Ben Dooks), imx/scu (Brian
Masney).

----------------------------------------------------------------
Andy Shevchenko (4):
clk: baikal-t1: Remove not-going-to-be-supported code for Baikal SoC
clk: x86: lpss-atom: Use predefined constants from units.h
clk: x86: lpss-atom: Use temporary variable for struct device
clk: x86: lpss-atom: Read frequency from the property

Ben Dooks (1):
clk: mvebu: armada-37xx-periph: fix __iomem casts in structure init

Brian Masney (19):
clk: test: remove references to clk_ops.round_rate
clk: composite: convert from round_rate() to determine_rate()
clk: remove round_rate() clk ops
clk: divider: remove divider_ro_round_rate_parent()
clk: divider: remove divider_round_rate() and divider_round_rate_parent()
clk: add kernel docs for struct clk_core
clk: test: convert constants to use HZ_PER_MHZ
clk: add new flag CLK_ROUNDING_NOOP
clk: test: add test suite for CLK_ROUNDING_NOOP flag
clk: rp1: drop determine_rate op and use CLK_ROUNDING_NOOP flag
clk: scpi: drop determine_rate op and use CLK_ROUNDING_NOOP flag
clk: hisilicon: hi3660-stub: drop determine_rate op and use CLK_ROUNDING_NOOP flag
clk: imx: scu: drop redundant init.ops variable assignment
clk: imx: scu: drop determine_rate op and use CLK_ROUNDING_NOOP flag
clk: qcom: rpm: drop determine_rate op and use CLK_ROUNDING_NOOP flag
clk: qcom: rpmh: drop determine_rate op and use CLK_ROUNDING_NOOP flag
clk: qcom: smd-rpm: drop determine_rate op and use CLK_ROUNDING_NOOP flag
clk: samsung: acpm: drop determine_rate op and use CLK_ROUNDING_NOOP flag
clk: sprd: drop determine_rate op and use CLK_ROUNDING_NOOP flag

Chen-Yu Tsai (1):
clk: tests: Add tests for clk lookup by name

Felix Gu (1):
clk: aspeed: ast2700: Add missing NULL pointer check for devm_kasprintf()

Geert Uytterhoeven (2):
clk: Simplify clk_is_match()
clk: xgene: Fix mapping leak in xgene_pllclk_init()

J. Neuschäfer (1):
clk: hisilicon: Improve deallocation in error path

Peng Fan (6):
dt-bindings: clock: Add spread spectrum definition
clk: Introduce clk_hw_set_spread_spectrum
clk: conf: Support assigned-clock-sscs
clk: Add KUnit tests for assigned-clock-sscs
clk: scmi: Introduce common header for SCMI clock interface
clk: scmi: Add i.MX95 OEM extension support for SCMI clock driver

Shawn Guo (1):
clk: hisilicon: reset: Use kzalloc instead of kmalloc

.../bindings/clock/baikal,bt1-ccu-div.yaml | 196 -------
.../bindings/clock/baikal,bt1-ccu-pll.yaml | 131 -----
Documentation/driver-api/clk.rst | 9 +-
drivers/clk/Kconfig | 1 -
drivers/clk/Makefile | 9 +-
drivers/clk/aspeed/clk-ast2700.c | 2 +
drivers/clk/baikal-t1/Kconfig | 52 --
drivers/clk/baikal-t1/Makefile | 4 -
drivers/clk/baikal-t1/ccu-div.c | 653 ---------------------
drivers/clk/baikal-t1/ccu-div.h | 121 ----
drivers/clk/baikal-t1/ccu-pll.c | 560 ------------------
drivers/clk/baikal-t1/ccu-pll.h | 72 ---
drivers/clk/baikal-t1/ccu-rst.c | 217 -------
drivers/clk/baikal-t1/ccu-rst.h | 67 ---
drivers/clk/baikal-t1/clk-ccu-div.c | 520 ----------------
drivers/clk/baikal-t1/clk-ccu-pll.c | 277 ---------
drivers/clk/clk-composite.c | 38 +-
drivers/clk/clk-conf.c | 76 +++
drivers/clk/clk-divider.c | 44 --
drivers/clk/clk-rp1.c | 11 +-
drivers/clk/clk-scmi-oem.c | 108 ++++
drivers/clk/clk-scmi.c | 44 +-
drivers/clk/clk-scmi.h | 51 ++
drivers/clk/clk-scpi.c | 14 +-
drivers/clk/clk-xgene.c | 2 +
drivers/clk/clk.c | 177 +++++-
drivers/clk/clk.h | 4 +
drivers/clk/clk_test.c | 297 +++++++++-
drivers/clk/hisilicon/clk-hi3660-stub.c | 14 +-
drivers/clk/hisilicon/clk.c | 4 +-
drivers/clk/hisilicon/reset.c | 2 +-
drivers/clk/imx/clk-scu.c | 23 +-
drivers/clk/kunit_clk_assigned_rates.h | 10 +
drivers/clk/kunit_clk_assigned_rates_multiple.dtso | 6 +
...kunit_clk_assigned_rates_multiple_consumer.dtso | 6 +
drivers/clk/kunit_clk_assigned_rates_one.dtso | 3 +
.../clk/kunit_clk_assigned_rates_one_consumer.dtso | 3 +
.../clk/kunit_clk_assigned_rates_u64_multiple.dtso | 6 +
...t_clk_assigned_rates_u64_multiple_consumer.dtso | 6 +
drivers/clk/kunit_clk_assigned_rates_u64_one.dtso | 3 +
.../kunit_clk_assigned_rates_u64_one_consumer.dtso | 3 +
drivers/clk/kunit_clk_assigned_sscs_null.dtso | 16 +
.../clk/kunit_clk_assigned_sscs_null_consumer.dtso | 20 +
drivers/clk/kunit_clk_assigned_sscs_without.dtso | 15 +
.../kunit_clk_assigned_sscs_without_consumer.dtso | 19 +
drivers/clk/kunit_clk_assigned_sscs_zero.dtso | 12 +
.../clk/kunit_clk_assigned_sscs_zero_consumer.dtso | 16 +
drivers/clk/mvebu/armada-37xx-periph.c | 16 +-
drivers/clk/qcom/clk-rpm.c | 16 +-
drivers/clk/qcom/clk-rpmh.c | 8 +-
drivers/clk/qcom/clk-smd-rpm.c | 15 +-
drivers/clk/samsung/clk-acpm.c | 14 +-
drivers/clk/sprd/pll.c | 7 -
drivers/clk/sprd/pll.h | 2 +-
drivers/clk/x86/clk-lpss-atom.c | 22 +-
include/dt-bindings/clock/bt1-ccu.h | 48 --
include/dt-bindings/clock/clock.h | 14 +
include/linux/clk-provider.h | 79 ++-
58 files changed, 943 insertions(+), 3242 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/clock/baikal,bt1-ccu-div.yaml
delete mode 100644 Documentation/devicetree/bindings/clock/baikal,bt1-ccu-pll.yaml
delete mode 100644 drivers/clk/baikal-t1/Kconfig
delete mode 100644 drivers/clk/baikal-t1/Makefile
delete mode 100644 drivers/clk/baikal-t1/ccu-div.c
delete mode 100644 drivers/clk/baikal-t1/ccu-div.h
delete mode 100644 drivers/clk/baikal-t1/ccu-pll.c
delete mode 100644 drivers/clk/baikal-t1/ccu-pll.h
delete mode 100644 drivers/clk/baikal-t1/ccu-rst.c
delete mode 100644 drivers/clk/baikal-t1/ccu-rst.h
delete mode 100644 drivers/clk/baikal-t1/clk-ccu-div.c
delete mode 100644 drivers/clk/baikal-t1/clk-ccu-pll.c
create mode 100644 drivers/clk/clk-scmi-oem.c
create mode 100644 drivers/clk/clk-scmi.h
create mode 100644 drivers/clk/kunit_clk_assigned_sscs_null.dtso
create mode 100644 drivers/clk/kunit_clk_assigned_sscs_null_consumer.dtso
create mode 100644 drivers/clk/kunit_clk_assigned_sscs_without.dtso
create mode 100644 drivers/clk/kunit_clk_assigned_sscs_without_consumer.dtso
create mode 100644 drivers/clk/kunit_clk_assigned_sscs_zero.dtso
create mode 100644 drivers/clk/kunit_clk_assigned_sscs_zero_consumer.dtso
delete mode 100644 include/dt-bindings/clock/bt1-ccu.h
create mode 100644 include/dt-bindings/clock/clock.h