[PATCH RFC 0/3] clk: support arbitrary clk_register() sequence

Yang Xiwen via B4 Relay devnull+forbidden405.outlook.com at kernel.org
Sat Jun 21 12:54:17 CEST 2025


Currently U-Boot clk framework mandates the sequence of registering clks
to begin from root, and then its children. This is an addtional
requirement that doesn't exist in Linux kernel, which makes clk driver
porting more difficult.

Let's handle this entirely in clk framework and give driver the freedom
to register clocks in any order.

This is done by assigning the parent "lazily". It will cache the parent
name in the core clk struct and try to refresh it when clk consumers
call clk_get_parent(). It's transparent to clk consumers as long as they
only use APIs provided by clk framework.

I've ran `ut dm clk*` and verified these commits does not break any
existing testcases. Though no new testcase is added because I think
existing testcases already test the logic very well.

Signed-off-by: Yang Xiwen <forbidden405 at outlook.com>
---
Yang Xiwen (3):
      drivers: core: device: set new parent when old parent is NULL
      clk: allow assigning parent lazily
      clk: sandbox: reverse the order to register clk i2c_root and i2c

 drivers/clk/clk-uclass.c      | 47 +++++++++++++++++++++++++++++++------------
 drivers/clk/clk.c             | 14 +++++++++++--
 drivers/clk/clk_sandbox_ccf.c |  6 +++---
 drivers/core/device.c         |  5 +++++
 include/clk.h                 |  2 ++
 5 files changed, 56 insertions(+), 18 deletions(-)
---
base-commit: 721eecd9cbf2cc59c5230abd37d02d4a02f75cc7
change-id: 20250621-clk-reparent-89d75f6a8e09

Best regards,
-- 
Yang Xiwen <forbidden405 at outlook.com>




More information about the U-Boot mailing list