sound/soc/codecs/da7219.c | 64 ++++++++++++++++--------------- sound/soc/codecs/rt5682.c | 26 +++++++------ sound/soc/codecs/rt5682s.c | 26 +++++++------ sound/soc/qcom/qdsp6/q6dsp-lpass-clocks.c | 8 ++-- sound/soc/stm/stm32_i2s.c | 21 ++++++---- sound/soc/stm/stm32_sai_sub.c | 14 ++++--- 6 files changed, 87 insertions(+), 72 deletions(-)
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 drivers in the rtc subsystem using the Coccinelle semantic patch posted below. I did a few minor cosmetic cleanups of the code in a few cases. 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/67642477-5f3e-4b2a-914d-579a54f48cbd@intel.com/ Signed-off-by: Brian Masney <bmasney@redhat.com> --- Brian Masney (6): sound: soc: codecs: da7219: convert from round_rate() to determine_rate() sound: soc: codecs: rt5682: convert from round_rate() to determine_rate() sound: soc: codecs: rt5682s: convert from round_rate() to determine_rate() sound: soc: qcom: qdsp6: q6dsp-lpass-clocks: convert from round_rate() to determine_rate() sound: soc: stm: stm32_i2s: convert from round_rate() to determine_rate() sound: soc: stm: stm32_sai_sub: convert from round_rate() to determine_rate() sound/soc/codecs/da7219.c | 64 ++++++++++++++++--------------- sound/soc/codecs/rt5682.c | 26 +++++++------ sound/soc/codecs/rt5682s.c | 26 +++++++------ sound/soc/qcom/qdsp6/q6dsp-lpass-clocks.c | 8 ++-- sound/soc/stm/stm32_i2s.c | 21 ++++++---- sound/soc/stm/stm32_sai_sub.c | 14 ++++--- 6 files changed, 87 insertions(+), 72 deletions(-) --- base-commit: b551c4e2a98a177a06148cf16505643cd2108386 change-id: 20250710-sound-clk-round-rate-adb1a71bd867 Best regards, -- Brian Masney <bmasney@redhat.com>
On Thu, Jul 10, 2025 at 11:51:06AM -0400, Brian Masney wrote: > 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 > drivers in the rtc subsystem using the Coccinelle semantic patch > posted below. I did a few minor cosmetic cleanups of the code in a > few cases. Please submit patches using subject lines reflecting the style for the subsystem, this makes it easier for people to identify relevant patches. Look at what existing commits in the area you're changing are doing and make sure your subject lines visually resemble what they're doing. There's no need to resubmit to fix this alone.
On Thu, 10 Jul 2025 11:51:06 -0400, Brian Masney wrote: > 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 > drivers in the rtc subsystem using the Coccinelle semantic patch > posted below. I did a few minor cosmetic cleanups of the code in a > few cases. > > Coccinelle semantic patch: > > [...] Applied to https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next Thanks! [1/6] sound: soc: codecs: da7219: convert from round_rate() to determine_rate() commit: 8a4d73121d6bd9a70895e65d6d1014ed6b0a6c8e [2/6] sound: soc: codecs: rt5682: convert from round_rate() to determine_rate() commit: 4e15a10f6fb254e33d73a6da3c4d00e3e64d2eb8 [3/6] sound: soc: codecs: rt5682s: convert from round_rate() to determine_rate() commit: a37d9c8aef1c78876eff0bc8980a889c083de89d [4/6] sound: soc: qcom: qdsp6: q6dsp-lpass-clocks: convert from round_rate() to determine_rate() commit: fc62ed665eb2e8fb0f1e12ab9cdb578666704a76 [5/6] sound: soc: stm: stm32_i2s: convert from round_rate() to determine_rate() commit: afd529d740028a41fa750d4491b106cecbccba3e [6/6] sound: soc: stm: stm32_sai_sub: convert from round_rate() to determine_rate() commit: d5f317fd5cd9dfdf5bbe11384001817760c12b75 All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark
© 2016 - 2025 Red Hat, Inc.