From: "Xuyang Dong" <dongxuyang@eswincomputing.com>
To: mturquette@baylibre.com, sboyd@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org,
linux-clk@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, troy.mitchell@linux.dev,
bmasney@redhat.com
Cc: ningyu@eswincomputing.com, linmin@eswincomputing.com,
huangyifeng@eswincomputing.com, pinkesh.vaghela@einfochips.com,
ganboing@gmail.com, marcel@ziswiler.com
Subject: Re: [PATCH v15 0/4] Add driver support for ESWIN eic700 SoC clock controller
Date: Mon, 16 Mar 2026 14:54:00 +0800 (GMT+08:00) [thread overview]
Message-ID: <54e32101.4409.19cf56c4aae.Coremail.dongxuyang@eswincomputing.com> (raw)
In-Reply-To: <20260303080513.2042-1-dongxuyang@eswincomputing.com>
>
> The link [1] provides the official documentation for the EIC7700. Section 3.2
> covers the clock subsystem.
>
> [1] https://www.sifive.com/document-file/eic7700x-datasheet
>
> Updates:
> Change in v15:
> - Updated driver file
> - Add 'Reviewed-by: Brian Masney <bmasney@redhat.com>' for patch 2/4, 3/4 and 4/4.
> - Add space between the name and < in MODULE_AUTHOR.
> - Remove memset_p() and commit in eswin_clk_init().
> The current implementation ensures that parent clocks are registered
> before child clocks, thus preventing the creation of invalid clocks.
>
Hi Stephen,
I received your review comments on v9. After addressing them and submitting
v10 through v14, I received additional comments from Brian, Bo, Marcel,
and the kernel test robot.
v15 now has a Reviewed-by tag from Brian and a Tested-by tag from Marcel.
Do you have any further comments on v15? I would like to send a GIT PULL
request for 7.0-rc4 by the end of this week.
Do you think this is okay?
Best regards,
Xuyang Dong
> - Link to v14: https://lore.kernel.org/all/20260226090513.1696-1-dongxuyang@eswincomputing.com/
>
> Change in v14:
> - Updated driver file
> - Change the error code from eswin_clk_init() from -EAGAIN to PTR_ERR(clk_data).
> - In eswin_clk_init(), change error handling:
> - Replace NULL return from devm_kzalloc() with ERR_PTR(-ENOMEM).
> - Replace NULL return from devm_platform_ioremap_resource() with ERR_PTR(-EINVAL)
> and remove dev_err().
> - Add CLK_IGNORE_UNUSED flag to gate clocks. When clk_ignore_unused is dropped
> during testing, these clocks should remain enabled.
> - Modify the frac calculation formula to:
> frac = (rate * 4 % parent_rate * (2^24)) / parent_rate
> - Add calculation step descriptions in eswin_calc_pll.
> Remove tmp1 and temp2 variables, using only 'rem = do_div(tmp, parent_rate)'
> to calculate frac. The previous calculation formula was overly complex.
>
> - Link to v13: https://lore.kernel.org/all/20260214101421.228-1-dongxuyang@eswincomputing.com/
>
> Change in v13:
> - Updated driver file
> - Modify commit subject from "clock: eswin: ..." to "clk: eswin: ...".
> - Use parent rate to calculate PLL clock rate.
> - Use GENMASK() to define PLL mask macros and use FIELD_PREP() to simplify
> bitwise operations.
> - Remove shift and width references for pll enable, refdiv, fbdiv, frac and postdiv.
> (Use only the PLL macros to match the functionality)
> - Set postdiv1 and postdiv2 in clk_pll_set_rate function.
>
> - Link to v12: https://lore.kernel.org/all/20260213094112.115-1-dongxuyang@eswincomputing.com/
>
> Change in v12:
> - Updated driver file
> - Add CLK_MUX_ROUND_CLOSEST to the mux clocks since they need a more
> accurate clock frequency.
> - Change 'rem' from u64 to u32 for function 'eswin_calc_pll' and
> function 'clk_pll_recalc_rate'.
> - Change 'rate' from u64 to unsigned long for function 'clk_pll_recalc_rate'.
> - Fix build error with u64 divisor for function `clk_pll_set_rate'.
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202602111424.mhTAakDX-lkp@intel.com/
>
> - Link to v11: https://lore.kernel.org/all/20260210095008.726-1-dongxuyang@eswincomputing.com/
>
> Change in v11:
> - Updated driver file
> - Add "Tested-by: Marcel Ziswiler <marcel@ziswiler.com> # ebc77" tag.
> - Fix build error in function eswin_clk_register_clks.
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202602060520.p4Hg35Ja-lkp@intel.com/
>
> - Link to v10: https://lore.kernel.org/all/20260205093322.1030-1-dongxuyang@eswincomputing.com/
>
> Changes in v10:
> - Updated driver file
> - Add a private clock divider API named 'eswin_register_clkdiv' to
> register divider clocks with private flag.
> Define 'ESWIN_PRIV_DIV_MIN_2' private flag for registering the clock
> dividers whose division ratio start from 2.
> Implement the private set_rate, recalc_rate, and determine_rate accordingly.
> - Add CLK_DIVIDER_ALLOW_ZERO flag to the clock dividers whose division
> ratio start from 0.
> - Replace CONFIG_ARCH_ESWIN with CONFIG_COMMON_CLK_ESWIN in the Makefile.
> - Modify the help description of COMMON_CLK_EIC7700.
> - Move register offset definitions from 'clk-eic7700.h' to 'clk-eic7700.c' and
> remove the 'clk-eic7700.h'. Remove '_CTRL' from the offset names.
> - Remove all unused headers.
> - Use devm_platform_ioremap_resource() instead of devm_of_iomap().
> - Export the functions from clk.c as symbols.
> - Use readl_poll_timeout().
> - Use 'clk_parent_data' and '.hw' instead of string parent names.
> - Rename the header file from clk.h to common.h.
> - Rename macros from EIC7700_* to ESWIN_* in common.h.
> - Add a new function, 'eswin_clk_register_clks', which can register
> divider, mux, gate, and fixed-factor clocks based on their types.
> - Add structure 'eswin_clk_info' to manage the clocks that need to be registered
> in a specific order.
> - Add macros 'ESWIN_*_TYPE' to define divider, mux, gate, and fixed-factor clocks
> with type. Add enum 'eswin_clk_type' for these types.
> - Remove 'eswin_clk_register_mux_tbl'. Use 'eswin_clk_register_mux' to register
> mux clocks with or without table.
> - Add xtal24m as the parent clock of the PLL.
> - Change 2025 to 2026 in all files.
>
> - Link to v9: https://lore.kernel.org/all/20251229105844.1089-1-dongxuyang@eswincomputing.com/
>
> Changes in v9:
> - Updated driver file
> - Checked return values of eswin_clk_register_*() in the probe function.
> - Removed binding IDs check from pll functions in clk.c, as these functions
> were exclusively used by pll clocks and did not require ID validation.
> - The PLL structure has been extended with max_rate and min_rate fields to
> explicitly define the frequency operating range of the PLL. These limits
> were now utilized by the clk_pll_determine_rate() function.
> - Removed __clk_lookup() in clk_pll_set_rate. Added clk_notifier support
> in clk-eic7700.c.
> - Added five previously missing clocks from [1].
>
> - Link to v8: https://lore.kernel.org/all/20251113013637.1109-1-dongxuyang@eswincomputing.com/
>
> Changes in v8:
> - Updated YAML file
> - Added "Acked-by: Troy Mitchell <troy.mitchell@linux.dev>"
> - Updated driver file
> - Changed Kconfig from bool to tristate.
> - Updated MAINTAINERS file
> - Added "ESWIN SOC SERIES CLOCK DRIVER"
>
> - Link to v7: https://lore.kernel.org/all/20251023071658.455-1-dongxuyang@eswincomputing.com/
>
> Changes in v7:
> - Updated YAML file
> - Added "Acked-by: Conor Dooley <conor.dooley@microchip.com>" for bindings.
> - Updated driver file
> - Added description for clk of eswin_calc_pll().
> - Added macro EIC7700_MUX_TBL to manage mux clock-tree.
> - Added eswin_clk_register_mux_tbl() to register mux clocks with
> discontinuous parent indexes.
>
> - Link to v6: https://lore.kernel.org/all/20251009092029.140-1-dongxuyang@eswincomputing.com/
>
> Changes in v6:
> - Removed config option patch dependency from cover letter, because the patch
> was applied.
> - Updated YAML file
> - Added an oscillator as the clock input, named xtal24m.
> - Added clocks property.
> - Updated driver file
> - Replaced fixed_rate_clk_xtal_24m with xtal24m.
> - Dropped fixed_rate_clk_xtal_24m from driver. Because clock xtal24m was
> registered by fixed-clock as oscillator.
>
> - Link to v5: https://lore.kernel.org/all/20250923084637.1223-1-dongxuyang@eswincomputing.com/
>
> Changes in v5:
> - Removed vendor prefix patch dependency from cover letter, because the patch
> was applied.
> - Updated YAML file
> - Placed the required after all properties.
> - Removed patternProperties. Also removed compatible of eswin,pll-clock,
> eswin,mux-clock, eswin,divider-clock and eswin,gate-clock as we have moved
> clock tree from DTS to Linux driver.
> - Removed the clock tree from DTS. Used clock-controller to manage all
> clock. Removed all child nodes in clock-controller.
> - Removed '#address-cells' and '#size-cells' properties, because the clock
> controller did not need to define these properties.
> - Removed eic7700-clocks.dtsi.
> - Added dt-bindings header for clock IDs. Because used the IDs to register
> clocks.
> - Updated driver file
> - Modified the commit for clock driver. Dropped indentation in commit.
> - Removed CLK_OF_DECLARE(). Used *clk_hw_register* to register clocks. Used
> devm_of_clk_add_hw_provider.
> - Dropped singletons.
> - Checked the value right after obtaining it.
> - Removed the definitions of macro frequency in clk.h like CLK_FREQ_24M.
> - Modified description of help in Kconfig.
> - Added COMPILE_TEST. Added COMMON_CLK_ESWIN for clk.o. And added
> "select COMMON_CLK_ESWIN" for clk-eic7700.c. Without COMMON_CLK_EIC7700,
> clk.c could not be compiled.
> - Used .determined_rate.
> - Added macro definitions of EIC7700_DIV, EIC7700_FIXED, EIC7700_FACTOR,
> EIC7700_MUX and EIC7700_PLL to manage clock tree.
> - Added clk-eic7700.h to place eic7700 SoC clock registers.
> - Removed refdiv_val and postdiv1_val from clk_pll_recalc_rate(). Because
> these values were unused.
>
> - Link to v4: https://lore.kernel.org/all/20250815093539.975-1-dongxuyang@eswincomputing.com/
>
> Changes in v4:
> - Updated YAML file
> - Changed name from cpu-default-frequency to cpu-default-freq-hz.
> - Dropped $ref of cpu-default-frequency.
> - Added cpu-default-frequency for required.
> - Removed cpu-default-frequency in updated file, because there was no
> need to add cpu-default-frequency.
> - Moved DIVIDER to DIV.
> - Arranged the IDs in order.
> - Dropped EIC7700_NR_CLKS.
> - Removed dt-bindings eswin,eic7700-clock.h. Because IDs was not used,
> and used clock device nodes.
> - According to the updated driver codes, the YAML has been updated.
> - Updated driver file
> - Remove undocumented parameters "cpu_no_boost_1_6ghz" and
> "cpu-default-frequency".
> - Modified the comment and used the correct Linux coding style.
> - Removed codes of voltage, because it was not the clock driver.
> - Updated the formula of clock frequency calculation. Removed the logic
> that only used register selection.
> - Used CLK_OF_DECLARE() to register clocks. Registered pll-clock,
> mux-clock, divider-clock, and gate-clock in clk-eic7700.c.
> The specific implementation of clock registration was in clk.c.
> - Added eic7700-clocks.dtsi.
> - Moved device information to DTS. Put all clocks' node in the
> eic7700-clocks.dtsi.
>
> - Link to v3: https://lore.kernel.org/all/20250624103212.287-1-dongxuyang@eswincomputing.com/
>
> Changes in v3:
> - Update example, drop child node and add '#clock-cells' to the parent
> node.
> - Change parent node from sys-crg to clock-controller for this yaml.
> - Drop "syscon", "simple-mfd" to clear warnings/errors by using "make
> dt_binding_check". And these are not necessary.
> - Add "cpu-default-frequency" definition in yaml for "undocumented ABI".
> - Drop Reviewed-by, this is misunderstanding. We have not received such
> an email.
> - Link to v2: https://lore.kernel.org/all/20250523090747.1830-1-dongxuyang@eswincomputing.com/
>
> Changes in v2:
> - Update example, drop child node.
> - Clear warnings/errors for using "make dt_binding_check".
> - Change to the correct format.
> - Drop some non-stanard code.
> - Use dev_err_probe() in probe functions.
> - Link to v1: https://lore.kernel.org/all/20250514002233.187-1-dongxuyang@eswincomputing.com/
>
> Xuyang Dong (4):
> dt-bindings: clock: eswin: Documentation for eic7700 SoC
> clk: divider: Add devm_clk_hw_register_divider_parent_data
> clk: eswin: Add eic7700 clock driver
> MAINTAINERS: Add entry for ESWIN EIC7700 clock driver
>
> .../bindings/clock/eswin,eic7700-clock.yaml | 46 +
> MAINTAINERS | 8 +
> drivers/clk/Kconfig | 1 +
> drivers/clk/Makefile | 1 +
> drivers/clk/eswin/Kconfig | 15 +
> drivers/clk/eswin/Makefile | 8 +
> drivers/clk/eswin/clk-eic7700.c | 1376 +++++++++++++++++
> drivers/clk/eswin/clk.c | 586 +++++++
> drivers/clk/eswin/common.h | 340 ++++
> .../dt-bindings/clock/eswin,eic7700-clock.h | 285 ++++
> include/linux/clk-provider.h | 20 +
> 11 files changed, 2686 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/clock/eswin,eic7700-clock.yaml
> create mode 100644 drivers/clk/eswin/Kconfig
> create mode 100644 drivers/clk/eswin/Makefile
> create mode 100644 drivers/clk/eswin/clk-eic7700.c
> create mode 100644 drivers/clk/eswin/clk.c
> create mode 100644 drivers/clk/eswin/common.h
> create mode 100644 include/dt-bindings/clock/eswin,eic7700-clock.h
>
> --
> 2.34.1
next prev parent reply other threads:[~2026-03-16 6:54 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-03 8:05 [PATCH v15 0/4] Add driver support for ESWIN eic700 SoC clock controller dongxuyang
2026-03-03 8:06 ` [PATCH v15 1/4] dt-bindings: clock: eswin: Documentation for eic7700 SoC dongxuyang
2026-03-25 2:13 ` Stephen Boyd
2026-03-03 8:06 ` [PATCH v15 2/4] clk: divider: Add devm_clk_hw_register_divider_parent_data dongxuyang
2026-03-25 2:12 ` Stephen Boyd
2026-03-03 8:07 ` [PATCH v15 3/4] clk: eswin: Add eic7700 clock driver dongxuyang
2026-03-17 8:05 ` Bo Gan
2026-03-25 2:12 ` Stephen Boyd
2026-03-03 8:07 ` [PATCH v15 4/4] MAINTAINERS: Add entry for ESWIN EIC7700 " dongxuyang
2026-03-25 2:12 ` Stephen Boyd
2026-03-16 6:54 ` Xuyang Dong [this message]
2026-03-16 15:04 ` [PATCH v15 0/4] Add driver support for ESWIN eic700 SoC clock controller Brian Masney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54e32101.4409.19cf56c4aae.Coremail.dongxuyang@eswincomputing.com \
--to=dongxuyang@eswincomputing.com \
--cc=bmasney@redhat.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=ganboing@gmail.com \
--cc=huangyifeng@eswincomputing.com \
--cc=krzk+dt@kernel.org \
--cc=linmin@eswincomputing.com \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marcel@ziswiler.com \
--cc=mturquette@baylibre.com \
--cc=ningyu@eswincomputing.com \
--cc=pinkesh.vaghela@einfochips.com \
--cc=robh@kernel.org \
--cc=sboyd@kernel.org \
--cc=troy.mitchell@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox