Re: [PATCH 000/114] clk: convert drivers from deprecated round_rate() to determine_rate()

Icenowy Zheng <[email protected]>
Newsgroups dev.linux.lists.sophgo,dev.linux.lists.asahi,dev.linux.lists.imx,dev.linux.lists.soc,dev.linux.lists.spacemit,org.infradead.lists.linux-mediatek,org.infradead.lists.linux-riscv,org.infradead.lists.linux-rockchip,org.kernel.vger.arm-scmi,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-clk,org.kernel.vger.linux-kernel,org.kernel.vger.linux-mips,org.kernel.vger.linux-renesas-soc,org.kernel.vger.linux-samsung-soc
Organization Anthon Open-Source Community
Message-ID <[email protected]>
在 2025-08-11星期一的 11:17 -0400,Brian Masney via B4 Relay写道:
> The round_rate() clk ops is deprecated in the clk framework in favor
> of the determine_rate() clk ops, so let's go ahead and convert the
> various clk drivers using the Coccinelle semantic patch posted below.
> I did a few minor cosmetic cleanups of the code in a few cases.
> 
> This series is broken up into several categories:
> 
> - Patch 1 to clk/at91/peripheral is a bug fix for a return value.
> 
> - Patch 2 to clk/at91/peripheral wasn't straight forward like the
> other
>   drivers, so I'm explicitly calling this one out separately.
> 
> - Patch 3 adds a determine_rate() op and keeps the round_rate() in
> place
>   since this is needed by drivers/clk/actions/owl-composite.c and
> keeps
>   the tree bisectable. The deprecated round_rate() op is dropped in
> patch
>   113.
> 
> - Patches 4-70 are for drivers where there is no clk submaintainer
>   listed in the MAINTAINERS file. Patch 19 includes a minor fix so
> that
>   Coccinelle can be ran against a particular source file.
> 
> - Patches 71-110 are for drivers where this is an entry in
> MAINTAINERS
>   for the driver.
> 
> - Patches 111-114 are for drivers that implement both round_rate()
> and
>   determine_rate(), so the round_rate() implementation is dropped.

I was doing a patch to add divider setting support to clk-th1520-ap
driver and sent patch now, should I remove round_rate from the next
revision and just keep determine_rate? Is it safe to do this even if
this patchset is not merged?

In addition, will the clk_round_rate() API exported to other subsystems
be affected?

> 
> Once all of my conversion patches across the various trees in the
> kernel
> have been merged, I will post a small series that removes the
> round_rate() op from the clk core and the documentation. Here's the
> other patch series that are currently in flight that need to be
> merged
> before we can remove round_rate() from the core.
> 
> - arm32 (3):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - clk/tegra (6):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - clk/ti (7):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - clocksource (1):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - drm (9):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - drm/msm (7):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - i2c (1):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - media (4):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - mips (1):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - net (1):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - peci (1):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - phy (9):
> https://lore.kernel.org/linux-phy/[email protected]/T/
> - pmdomain (1):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> - tty (1):
> https://lore.kernel.org/linux-clk/[email protected]/T/
> 
> Coccinelle semantic patch:
> 
>     virtual patch
> 
>     // Look up the current name of the round_rate function
>     @ has_round_rate @
>     identifier round_rate_name =~ ".*_round_rate";
>     identifier hw_param, rate_param, parent_rate_param;
>     @@
> 
>     long round_rate_name(struct clk_hw *hw_param, unsigned long
> rate_param,
>                   unsigned long *parent_rate_param)
>     {
>         ...
>     }
> 
>     // Rename the route_rate function name to determine_rate()
>     @ script:python generate_name depends on has_round_rate @
>     round_rate_name << has_round_rate.round_rate_name;
>     new_name;
>     @@
> 
>     coccinelle.new_name = round_rate_name.replace("_round_rate",
> "_determine_rate")
> 
>     // Change rate to req->rate; also change occurrences of 'return
> XXX'.
>     @ chg_rate depends on generate_name @
>     identifier has_round_rate.round_rate_name;
>     identifier has_round_rate.hw_param;
>     identifier has_round_rate.rate_param;
>     identifier has_round_rate.parent_rate_param;
>     identifier ERR =~ "E.*";
>     expression E;
>     @@
> 
>     long round_rate_name(struct clk_hw *hw_param, unsigned long
> rate_param,
>                   unsigned long *parent_rate_param)
>     {
>     <...
>     (
>     -return -ERR;
>     +return -ERR;
>     |
>     - return rate_param;
>     + return 0;
>     |
>     - return E;
>     + req->rate = E;
>     +
>     + return 0;
>     |
>     - rate_param
>     + req->rate
>     )
>     ...>
>     }
> 
>     // Coccinelle only transforms the first occurrence of the rate
> parameter
>     // Run a second time. FIXME: Is there a better way to do this?
>     @ chg_rate2 depends on generate_name @
>     identifier has_round_rate.round_rate_name;
>     identifier has_round_rate.hw_param;
>     identifier has_round_rate.rate_param;
>     identifier has_round_rate.parent_rate_param;
>     @@
> 
>     long round_rate_name(struct clk_hw *hw_param, unsigned long
> rate_param,
>                   unsigned long *parent_rate_param)
>     {
>     <...
>     - rate_param
>     + req->rate
>     ...>
>     }
> 
>     // Change parent_rate to req->best_parent_rate
>     @ chg_parent_rate depends on generate_name @
>     identifier has_round_rate.round_rate_name;
>     identifier has_round_rate.hw_param;
>     identifier has_round_rate.rate_param;
>     identifier has_round_rate.parent_rate_param;
>     @@
> 
>     long round_rate_name(struct clk_hw *hw_param, unsigned long
> rate_param,
>                   unsigned long *parent_rate_param)
>     {
>     <...
>     (
>     - *parent_rate_param
>     + req->best_parent_rate
>     |
>     - parent_rate_param
>     + &req->best_parent_rate
>     )
>     ...>
>     }
> 
>     // Convert the function definition from round_rate() to
> determine_rate()
>     @ func_definition depends on chg_rate @
>     identifier has_round_rate.round_rate_name;
>     identifier has_round_rate.hw_param;
>     identifier has_round_rate.rate_param;
>     identifier has_round_rate.parent_rate_param;
>     identifier generate_name.new_name;
>     @@
> 
>     - long round_rate_name(struct clk_hw *hw_param, unsigned long
> rate_param,
>     -               unsigned long *parent_rate_param)
>     + int new_name(struct clk_hw *hw, struct clk_rate_request *req)
>     {
>         ...
>     }
> 
>     // Update the ops from round_rate() to determine_rate()
>     @ ops depends on func_definition @
>     identifier has_round_rate.round_rate_name;
>     identifier generate_name.new_name;
>     @@
> 
>     {
>         ...,
>     -   .round_rate = round_rate_name,
>     +   .determine_rate = new_name,
>         ...,
>     }
> 
> Note that I used coccinelle 1.2 instead of 1.3 since the newer
> version
> adds unnecessary braces as described in this post.
> https://lore.kernel.org/cocci/[email protected]/
> 
> Signed-off-by: Brian Masney <[email protected]>
> ---
> Brian Masney (114):
>       clk: at91: peripheral: fix return value
>       clk: at91: peripheral: convert from round_rate() to
> determine_rate()
>       clk: fixed-factor: add determine_rate() ops
>       clk: at91: audio-pll: convert from round_rate() to
> determine_rate()
>       clk: at91: h32mx: convert from round_rate() to determine_rate()
>       clk: at91: pll: convert from round_rate() to determine_rate()
>       clk: at91: plldiv: convert from round_rate() to
> determine_rate()
>       clk: at91: sam9x60-pll: convert from round_rate() to
> determine_rate()
>       clk: at91: usb: convert from round_rate() to determine_rate()
>       clk: baikal-t1: ccu-div: convert from round_rate() to
> determine_rate()
>       clk: baikal-t1: ccu-pll: convert from round_rate() to
> determine_rate()
>       clk: cdce925: convert from round_rate() to determine_rate()
>       clk: cs2000-cp: convert from round_rate() to determine_rate()
>       clk: ep93xx: convert from round_rate() to determine_rate()
>       clk: fractional-divider: convert from round_rate() to
> determine_rate()
>       clk: gemini: convert from round_rate() to determine_rate()
>       clk: highbank: convert from round_rate() to determine_rate()
>       clk: hisilicon: clkdivider-hi6220: convert from round_rate() to
> determine_rate()
>       clk: hisilicon: hi3660-stub: move comma from declaration of
> DEFINE_CLK_STUB()
>       clk: hisilicon: hi3660-stub: convert from round_rate() to
> determine_rate()
>       clk: hisilicon: hi6220-stub: convert from round_rate() to
> determine_rate()
>       clk: ingenic: cgu: convert from round_rate() to
> determine_rate()
>       clk: ingenic: jz4780-cgu: convert from round_rate() to
> determine_rate()
>       clk: ingenic: x1000-cgu: convert from round_rate() to
> determine_rate()
>       clk: lmk04832: convert from round_rate() to determine_rate()
>       clk: loongson1: convert from round_rate() to determine_rate()
>       clk: max9485: convert from round_rate() to determine_rate()
>       clk: milbeaut: convert from round_rate() to determine_rate()
>       clk: mmp: audio: convert from round_rate() to determine_rate()
>       clk: mmp: frac: convert from round_rate() to determine_rate()
>       clk: multiplier: convert from round_rate() to determine_rate()
>       clk: mxs: div: convert from round_rate() to determine_rate()
>       clk: mxs: frac: convert from round_rate() to determine_rate()
>       clk: mxs: ref: convert from round_rate() to determine_rate()
>       clk: nuvoton: ma35d1-divider: convert from round_rate() to
> determine_rate()
>       clk: nuvoton: ma35d1-pll: convert from round_rate() to
> determine_rate()
>       clk: nxp: lpc18xx-cgu: convert from round_rate() to
> determine_rate()
>       clk: nxp: lpc32xx: convert from round_rate() to
> determine_rate()
>       clk: pistachio: pll: convert from round_rate() to
> determine_rate()
>       clk: scpi: convert from round_rate() to determine_rate()
>       clk: si514: convert from round_rate() to determine_rate()
>       clk: si521xx: convert from round_rate() to determine_rate()
>       clk: si5341: convert from round_rate() to determine_rate()
>       clk: si544: convert from round_rate() to determine_rate()
>       clk: si570: convert from round_rate() to determine_rate()
>       clk: sifive: sifive-prci: convert from round_rate() to
> determine_rate()
>       clk: sophgo: cv18xx-ip: convert from round_rate() to
> determine_rate()
>       clk: sophgo: sg2042-clkgen: convert from round_rate() to
> determine_rate()
>       clk: spacemit: ccu_ddn: convert from round_rate() to
> determine_rate()
>       clk: spacemit: ccu_mix: convert from round_rate() to
> determine_rate()
>       clk: spacemit: ccu_pll: convert from round_rate() to
> determine_rate()
>       clk: sparx5: convert from round_rate() to determine_rate()
>       clk: sprd: div: convert from round_rate() to determine_rate()
>       clk: sprd: pll: convert from round_rate() to determine_rate()
>       clk: st: clkgen-fsyn: convert from round_rate() to
> determine_rate()
>       clk: st: clkgen-pll: convert from round_rate() to
> determine_rate()
>       clk: stm32f4: convert from round_rate() to determine_rate()
>       clk: stm32: stm32-core: convert from round_rate() to
> determine_rate()
>       clk: stm32: stm32mp1: convert from round_rate() to
> determine_rate()
>       clk: tps68470: convert from round_rate() to determine_rate()
>       clk: versaclock3: convert from round_rate() to determine_rate()
>       clk: vt8500: convert from round_rate() to determine_rate()
>       clk: wm831x: convert from round_rate() to determine_rate()
>       clk: x86: cgu: convert from round_rate() to determine_rate()
>       clk: xgene: convert from round_rate() to determine_rate()
>       clk: xilinx: xlnx-clock-wizard: convert from round_rate() to
> determine_rate()
>       clk: xilinx: xlnx_vcu: convert from round_rate() to
> determine_rate()
>       clk: zynqmp: divider: convert from round_rate() to
> determine_rate()
>       clk: zynqmp: pll: convert from round_rate() to determine_rate()
>       clk: zynq: pll: convert from round_rate() to determine_rate()
>       clk: actions: owl-composite: convert from round_rate() to
> determine_rate()
>       clk: actions: owl-divider: convert from round_rate() to
> determine_rate()
>       clk: actions: owl-factor: convert from round_rate() to
> determine_rate()
>       clk: actions: owl-pll: convert from round_rate() to
> determine_rate()
>       clk: apple-nco: convert from round_rate() to determine_rate()
>       clk: axs10x: i2s_pll_clock: convert from round_rate() to
> determine_rate()
>       clk: axs10x: pll_clock: convert from round_rate() to
> determine_rate()
>       clk: bcm: iproc-asiu: convert from round_rate() to
> determine_rate()
>       clk: bm1880: convert from round_rate() to determine_rate()
>       clk: cdce706: convert from round_rate() to determine_rate()
>       clk: hsdk-pll: convert from round_rate() to determine_rate()
>       clk: mediatek: pll: convert from round_rate() to
> determine_rate()
>       clk: microchip: core: convert from round_rate() to
> determine_rate()
>       clk: mstar: msc313-cpupll: convert from round_rate() to
> determine_rate()
>       clk: mvebu: ap-cpu-clk: convert from round_rate() to
> determine_rate()
>       clk: mvebu: armada-37xx-periph: convert from round_rate() to
> determine_rate()
>       clk: mvebu: corediv: convert from round_rate() to
> determine_rate()
>       clk: mvebu: cpu: convert from round_rate() to determine_rate()
>       clk: mvebu: dove-divider: convert from round_rate() to
> determine_rate()
>       clk: qcom: alpha-pll: convert from round_rate() to
> determine_rate()
>       clk: qcom: regmap-divider: convert from round_rate() to
> determine_rate()
>       clk: renesas: rzg2l-cpg: convert from round_rate() to
> determine_rate()
>       clk: renesas: rzv2h-cpg: remove round_rate() in favor of
> determine_rate()
>       clk: rockchip: ddr: convert from round_rate() to
> determine_rate()
>       clk: rockchip: half-divider: convert from round_rate() to
> determine_rate()
>       clk: rockchip: pll: convert from round_rate() to
> determine_rate()
>       clk: rp1: convert from round_rate() to determine_rate()
>       clk: samsung: cpu: convert from round_rate() to
> determine_rate()
>       clk: samsung: pll: convert from round_rate() to
> determine_rate()
>       clk: sp7021: convert from round_rate() to determine_rate()
>       clk: spear: aux-synth: convert from round_rate() to
> determine_rate()
>       clk: spear: frac-synth: convert from round_rate() to
> determine_rate()
>       clk: spear: gpt-synth: convert from round_rate() to
> determine_rate()
>       clk: spear: vco-pll: convert from round_rate() to
> determine_rate()
>       clk: ux500: prcmu: convert from round_rate() to
> determine_rate()
>       clk: versaclock5: convert from round_rate() to determine_rate()
>       clk: versaclock7: convert from round_rate() to determine_rate()
>       clk: versatile: icst: convert from round_rate() to
> determine_rate()
>       clk: versatile: vexpress-osc: convert from round_rate() to
> determine_rate()
>       clk: visconti: pll: convert from round_rate() to
> determine_rate()
>       clk: divider: remove round_rate() in favor of determine_rate()
>       clk: scmi: remove round_rate() in favor of determine_rate()
>       clk: sophgo: sg2042-pll: remove round_rate() in favor of
> determine_rate()
>       clk: fixed-factor: drop round_rate() clk ops
> 
>  drivers/clk/actions/owl-composite.c        |   8 +-
>  drivers/clk/actions/owl-divider.c          |  13 +--
>  drivers/clk/actions/owl-factor.c           |  12 +--
>  drivers/clk/actions/owl-pll.c              |  25 ++++--
>  drivers/clk/at91/clk-audio-pll.c           |  42 +++++----
>  drivers/clk/at91/clk-h32mx.c               |  33 ++++---
>  drivers/clk/at91/clk-peripheral.c          |  48 ++++++----
>  drivers/clk/at91/clk-pll.c                 |  12 +--
>  drivers/clk/at91/clk-plldiv.c              |  34 +++++---
>  drivers/clk/at91/clk-sam9x60-pll.c         |  29 +++---
>  drivers/clk/at91/clk-usb.c                 |  20 +++--
>  drivers/clk/axs10x/i2s_pll_clock.c         |  14 +--
>  drivers/clk/axs10x/pll_clock.c             |  12 +--
>  drivers/clk/baikal-t1/ccu-div.c            |  27 +++---
>  drivers/clk/baikal-t1/ccu-pll.c            |  14 +--
>  drivers/clk/bcm/clk-iproc-asiu.c           |  25 +++---
>  drivers/clk/clk-apple-nco.c                |  14 +--
>  drivers/clk/clk-bm1880.c                   |  21 +++--
>  drivers/clk/clk-cdce706.c                  |  16 ++--
>  drivers/clk/clk-cdce925.c                  |  50 ++++++-----
>  drivers/clk/clk-cs2000-cp.c                |  14 +--
>  drivers/clk/clk-divider.c                  |  23 -----
>  drivers/clk/clk-ep93xx.c                   |  18 ++--
>  drivers/clk/clk-fixed-factor.c             |  16 ++--
>  drivers/clk/clk-fractional-divider.c       |  25 ++++--
>  drivers/clk/clk-gemini.c                   |  15 ++--
>  drivers/clk/clk-highbank.c                 |  26 +++---
>  drivers/clk/clk-hsdk-pll.c                 |  12 +--
>  drivers/clk/clk-lmk04832.c                 |  53 ++++++-----
>  drivers/clk/clk-loongson1.c                |  12 +--
>  drivers/clk/clk-max9485.c                  |  27 +++---
>  drivers/clk/clk-milbeaut.c                 |  22 +++--
>  drivers/clk/clk-multiplier.c               |  12 +--
>  drivers/clk/clk-rp1.c                      |  45 ++++++----
>  drivers/clk/clk-scmi.c                     |  30 -------
>  drivers/clk/clk-scpi.c                     |  18 ++--
>  drivers/clk/clk-si514.c                    |  24 +++--
>  drivers/clk/clk-si521xx.c                  |  14 +--
>  drivers/clk/clk-si5341.c                   |  22 +++--
>  drivers/clk/clk-si544.c                    |  10 +--
>  drivers/clk/clk-si570.c                    |  24 +++--
>  drivers/clk/clk-sp7021.c                   |  22 ++---
>  drivers/clk/clk-sparx5.c                   |  10 ++-
>  drivers/clk/clk-stm32f4.c                  |  26 +++---
>  drivers/clk/clk-tps68470.c                 |  12 +--
>  drivers/clk/clk-versaclock3.c              |  70 +++++++++------
>  drivers/clk/clk-versaclock5.c              |  71 ++++++++-------
>  drivers/clk/clk-versaclock7.c              |  30 ++++---
>  drivers/clk/clk-vt8500.c                   |  59 ++++++++-----
>  drivers/clk/clk-wm831x.c                   |  14 +--
>  drivers/clk/clk-xgene.c                    |  41 +++++----
>  drivers/clk/hisilicon/clk-hi3660-stub.c    |  18 ++--
>  drivers/clk/hisilicon/clk-hi6220-stub.c    |  12 +--
>  drivers/clk/hisilicon/clkdivider-hi6220.c  |  12 +--
>  drivers/clk/ingenic/cgu.c                  |  12 +--
>  drivers/clk/ingenic/jz4780-cgu.c           |  24 ++---
>  drivers/clk/ingenic/x1000-cgu.c            |  19 ++--
>  drivers/clk/mediatek/clk-pll.c             |  13 +--
>  drivers/clk/mediatek/clk-pll.h             |   3 +-
>  drivers/clk/mediatek/clk-pllfh.c           |   2 +-
>  drivers/clk/microchip/clk-core.c           |  44 ++++++----
>  drivers/clk/mmp/clk-audio.c                |  18 ++--
>  drivers/clk/mmp/clk-frac.c                 |  27 +++---
>  drivers/clk/mstar/clk-msc313-cpupll.c      |  18 ++--
>  drivers/clk/mvebu/ap-cpu-clk.c             |  12 +--
>  drivers/clk/mvebu/armada-37xx-periph.c     |  15 ++--
>  drivers/clk/mvebu/clk-corediv.c            |  18 ++--
>  drivers/clk/mvebu/clk-cpu.c                |  12 +--
>  drivers/clk/mvebu/dove-divider.c           |  16 ++--
>  drivers/clk/mxs/clk-div.c                  |   8 +-
>  drivers/clk/mxs/clk-frac.c                 |  16 ++--
>  drivers/clk/mxs/clk-ref.c                  |  16 ++--
>  drivers/clk/nuvoton/clk-ma35d1-divider.c   |  12 ++-
>  drivers/clk/nuvoton/clk-ma35d1-pll.c       |  28 +++---
>  drivers/clk/nxp/clk-lpc18xx-cgu.c          |  16 ++--
>  drivers/clk/nxp/clk-lpc32xx.c              |  59 +++++++------
>  drivers/clk/pistachio/clk-pll.c            |  20 +++--
>  drivers/clk/qcom/clk-alpha-pll.c           | 136 ++++++++++++++++---
> ----------
>  drivers/clk/qcom/clk-regmap-divider.c      |  27 +++---
>  drivers/clk/renesas/rzg2l-cpg.c            |   9 +-
>  drivers/clk/renesas/rzv2h-cpg.c            |  10 ---
>  drivers/clk/rockchip/clk-ddr.c             |  13 +--
>  drivers/clk/rockchip/clk-half-divider.c    |  12 +--
>  drivers/clk/rockchip/clk-pll.c             |  23 +++--
>  drivers/clk/samsung/clk-cpu.c              |  12 +--
>  drivers/clk/samsung/clk-pll.c              |  33 ++++---
>  drivers/clk/sifive/fu540-prci.h            |   2 +-
>  drivers/clk/sifive/fu740-prci.h            |   2 +-
>  drivers/clk/sifive/sifive-prci.c           |  11 +--
>  drivers/clk/sifive/sifive-prci.h           |   4 +-
>  drivers/clk/sophgo/clk-cv18xx-ip.c         |  10 ++-
>  drivers/clk/sophgo/clk-sg2042-clkgen.c     |  17 ++--
>  drivers/clk/sophgo/clk-sg2042-pll.c        |  24 ++---
>  drivers/clk/spacemit/ccu_ddn.c             |  11 ++-
>  drivers/clk/spacemit/ccu_mix.c             |  12 +--
>  drivers/clk/spacemit/ccu_pll.c             |  10 ++-
>  drivers/clk/spear/clk-aux-synth.c          |  12 +--
>  drivers/clk/spear/clk-frac-synth.c         |  12 +--
>  drivers/clk/spear/clk-gpt-synth.c          |  12 +--
>  drivers/clk/spear/clk-vco-pll.c            |  23 +++--
>  drivers/clk/sprd/div.c                     |  13 +--
>  drivers/clk/sprd/pll.c                     |   8 +-
>  drivers/clk/st/clkgen-fsyn.c               |  33 +++----
>  drivers/clk/st/clkgen-pll.c                |  38 ++++----
>  drivers/clk/stm32/clk-stm32-core.c         |  28 +++---
>  drivers/clk/stm32/clk-stm32mp1.c           |  13 +--
>  drivers/clk/ux500/clk-prcmu.c              |  14 +--
>  drivers/clk/versatile/clk-icst.c           |  72 +++++++++------
>  drivers/clk/versatile/clk-vexpress-osc.c   |  16 ++--
>  drivers/clk/visconti/pll.c                 |  17 ++--
>  drivers/clk/x86/clk-cgu.c                  |  35 ++++----
>  drivers/clk/xilinx/clk-xlnx-clock-wizard.c |  55 ++++++------
>  drivers/clk/xilinx/xlnx_vcu.c              |  15 ++--
>  drivers/clk/zynq/pll.c                     |  12 +--
>  drivers/clk/zynqmp/divider.c               |  23 ++---
>  drivers/clk/zynqmp/pll.c                   |  24 ++---
>  116 files changed, 1477 insertions(+), 1132 deletions(-)
> ---
> base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585
> change-id: 20250729-clk-for-stephen-round-rate-5a88ebdf8da6
> 
> Best regards,
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.