linux/drivers/clk
Christian Marangi 89da22456a clk: qcom: clk-rcg2: add support for rcg2 freq multi ops
Some RCG frequency can be reached by multiple configuration.

Add clk_rcg2_fm_ops ops to support these special RCG configurations.

These alternative ops will select the frequency using a CEIL policy.

When the correct frequency is found, the correct config is selected by
calculating the final rate (by checking the defined parent and values
in the config that is being checked) and deciding based on the one that
is less different than the requested one.

These check are skipped if there is just one config for the requested
freq.

qcom_find_freq_multi is added to search the freq with the new struct
freq_multi_tbl.
__clk_rcg2_select_conf is used to select the correct conf by simulating
the final clock.
If a conf can't be found due to parent not reachable, a WARN is printed
and -EINVAL is returned.

Tested-by: Wei Lei <quic_leiwei@quicinc.com>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Acked-by: Stephen Boyd <sboyd@kernel.org>
Link: https://lore.kernel.org/r/20231220221724.3822-3-ansuelsmth@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
2024-04-27 13:01:14 -05:00
..
actions clk: actions: Convert to devm_platform_ioremap_resource() 2023-08-22 14:28:03 -07:00
analogbits clk: analogbits: Allow building the library as a module 2023-10-23 20:26:49 -07:00
at91 clk: at91: remove unnecessary conditions 2023-10-18 17:56:13 -07:00
axis
axs10x clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
baikal-t1 clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
bcm clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
berlin clk: berlin: div: Add a determine_rate hook 2023-06-08 18:39:26 -07:00
davinci clk: Use device_get_match_data() 2023-10-23 20:16:21 -07:00
hisilicon clk: hisilicon: Use devm_kcalloc() instead of devm_kzalloc() 2024-02-21 20:27:19 -08:00
imgtec
imx Merge branches 'clk-samsung', 'clk-imx', 'clk-rockchip', 'clk-clkdev' and 'clk-rate-exclusive' into clk-next 2024-03-13 12:36:21 -07:00
ingenic clk: ingenic: tcu: Switch to determine_rate 2023-06-08 18:39:34 -07:00
keystone Merge branches 'clk-aspeed', 'clk-keystone', 'clk-mobileye' and 'clk-allwinner' into clk-next 2024-03-13 12:34:04 -07:00
mediatek clk: mediatek: clk-mt8173-apmixedsys: Use common error handling code in clk_mt8173_apmixed_probe() 2024-02-28 17:13:53 -08:00
meson clk: meson: Add missing clocks to axg_clk_regmaps 2024-02-05 10:06:21 +01:00
microchip clk: microchip: mpfs: convert MSSPLL outputs to clk_divider 2024-02-06 14:07:18 +00:00
mmp clk: mmp: pxa168: Fix memory leak in pxa168_clk_init() 2023-12-16 17:15:06 -08:00
mstar
mvebu Merge branches 'clk-imx', 'clk-samsung', 'clk-annotate', 'clk-marvell' and 'clk-lmk' into clk-next 2023-08-30 14:39:19 -07:00
mxs
nuvoton clk: nuvoton: Convert to devm_platform_ioremap_resource() 2023-08-22 14:52:11 -07:00
nxp
pistachio
pxa ARM: SoC changes for 6.5 2023-06-29 15:28:33 -07:00
qcom clk: qcom: clk-rcg2: add support for rcg2 freq multi ops 2024-04-27 13:01:14 -05:00
ralink clk: ralink: mtmips: quiet unused variable warning 2023-10-18 17:31:44 -07:00
renesas clk: renesas: r8a779h0: Add RPC-IF clock 2024-02-20 11:37:34 +01:00
rockchip clk: rockchip: rk3399: Allow to set rate of clk_i2s0_frac's parent 2024-02-27 23:45:53 +01:00
samsung clk: samsung: Add CPU clock support for Exynos850 2024-02-25 17:07:34 +01:00
sifive clk: sifive: Allow building the driver as a module 2023-10-23 20:27:46 -07:00
socfpga Merge branches 'clk-debugfs', 'clk-spreadtrum', 'clk-sifive', 'clk-counted' and 'clk-qcom' into clk-next 2023-10-30 14:10:51 -07:00
spear clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
sprd Merge branches 'clk-debugfs', 'clk-spreadtrum', 'clk-sifive', 'clk-counted' and 'clk-qcom' into clk-next 2023-10-30 14:10:51 -07:00
st clk: st: flexgen: Switch to determine_rate 2023-06-08 18:39:35 -07:00
starfive clk: starfive: jh7110-vout: Convert to platform remove callback returning void 2024-03-08 15:18:36 -08:00
stm32 clk: stm32mp1: use stm32mp13 reset driver 2023-12-17 15:33:26 -08:00
sunxi clk: sunxi: usb: fix kernel-doc warnings 2024-01-23 21:47:54 +01:00
sunxi-ng clk: sunxi-ng: nkm: remove redundant initialization of tmp_parent 2023-11-18 23:20:34 +01:00
tegra clk: tegra: fix error return case for recalc_rate 2023-09-12 10:56:05 -07:00
ti ARM: late SoC changes for 6.9 2024-03-19 11:57:26 -07:00
uniphier clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
ux500 clk: ux500: sysctrl: Add a determine_rate hook 2023-06-08 18:39:30 -07:00
versatile clk: versatile: sp810: Add a determine_rate hook 2023-06-08 18:39:31 -07:00
visconti clk: visconti: Add bounds-checking coverage for struct visconti_pll_provider 2023-10-23 19:40:20 -07:00
x86 clk: x86: Move clk-pmc-atom register defines to include/linux/platform_data/x86/pmc_atom.h 2024-03-12 12:48:15 +02:00
xilinx clk: clocking-wizard: Remove redundant initialization of pointer div_addr 2024-02-28 14:51:51 -08:00
zynq clk: zynq: Prevent null pointer dereference caused by kmalloc failure 2024-03-08 17:15:20 -08:00
zynqmp drivers: clk: zynqmp: update divider round rate logic 2023-12-16 17:20:14 -08:00
.kunitconfig clk: fractional-divider: tests: Add test suite for edge cases 2023-10-12 15:05:00 -07:00
clk_test.c clk: Parameterize clk_leaf_mux_set_rate_parent 2023-10-09 20:08:25 -07:00
clk-apple-nco.c
clk-asm9260.c clk: asm9620: Remove 'hw' local variable that isn't checked 2023-09-11 13:12:53 -07:00
clk-aspeed.c Merge branches 'clk-imx', 'clk-samsung', 'clk-annotate', 'clk-marvell' and 'clk-lmk' into clk-next 2023-08-30 14:39:19 -07:00
clk-aspeed.h
clk-ast2600.c clk: ast2600: Add FSI parent clock with correct rate 2024-02-21 21:46:13 -08:00
clk-axi-clkgen.c clk: axi-clkgen: Switch to determine_rate 2023-06-08 18:39:33 -07:00
clk-axm5516.c clk: axm5516: Convert to devm_platform_ioremap_resource() 2023-08-22 14:28:05 -07:00
clk-bd718x7.c
clk-bm1880.c clk: bm1880: Convert to devm_platform_ioremap_resource() 2023-08-22 14:28:11 -07:00
clk-bulk.c
clk-cdce706.c Merge branches 'clk-renesas', 'clk-determine-rate', 'clk-allwinner', 'clk-samsung' and 'clk-amlogic' into clk-next 2023-06-26 08:55:04 -07:00
clk-cdce925.c clk: cdce925: Remove redundant assignment to variable 'rate' 2024-02-21 21:36:09 -08:00
clk-clps711x.c
clk-composite.c clk: composite: Fix handling of high clock rates 2023-06-12 17:42:10 -07:00
clk-conf.c clk: add missing of_node_put() in "assigned-clocks" property parsing 2023-03-29 13:53:28 -07:00
clk-cs2000-cp.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-devres.c clk: Provide managed helper to get and enable bulk clocks 2024-02-21 21:13:36 -08:00
clk-divider.c
clk-en7523.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-fixed-factor.c clk: fixed-factor: add fwname-based constructor functions 2024-02-21 22:11:51 -08:00
clk-fixed-mmio.c Nothing looks out of the ordinary in this batch of clk driver updates. There 2023-04-29 17:29:39 -07:00
clk-fixed-rate.c clk: fixed-rate: Convert to platform remove callback returning void 2023-03-28 19:23:36 -07:00
clk-fractional-divider_test.c clk: fractional-divider: tests: Add test suite for edge cases 2023-10-12 15:05:00 -07:00
clk-fractional-divider.c clk: fractional-divider: Use bit operations consistently 2024-03-08 17:07:11 -08:00
clk-fractional-divider.h
clk-fsl-flexspi.c
clk-fsl-sai.c clk: fsl-sai: Convert to devm_platform_ioremap_resource() 2023-08-22 14:28:15 -07:00
clk-gate_test.c clk: Fix clk gate kunit test on big-endian CPUs 2023-10-27 19:12:09 -07:00
clk-gate.c clk: gate: fix comment typo and grammar 2023-09-11 13:20:40 -07:00
clk-gemini.c Merge branches 'clk-imx', 'clk-samsung', 'clk-annotate', 'clk-marvell' and 'clk-lmk' into clk-next 2023-08-30 14:39:19 -07:00
clk-gpio.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-hi655x.c
clk-highbank.c
clk-hsdk-pll.c clk: hsdk-pll: Convert to devm_platform_ioremap_resource() 2023-08-22 14:28:20 -07:00
clk-k210.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-lan966x.c clk: lan966x: Remove unused round_rate hook 2023-06-08 18:39:25 -07:00
clk-lmk04832.c clk: lmk04832: Support using PLL1_LD as SPI readback pin 2023-08-23 15:47:35 -07:00
clk-lochnagar.c clk: Use device_get_match_data() 2023-10-23 20:16:21 -07:00
clk-loongson1.c clk: loongson1: Re-implement the clock driver 2023-03-21 16:34:23 -07:00
clk-loongson2.c clk: clk-loongson2: Zero init clk_init_data 2023-06-12 18:30:46 -07:00
clk-max9485.c clk: Switch i2c drivers back to use .probe() 2023-05-10 14:05:34 -07:00
clk-max77686.c
clk-milbeaut.c clk: Annotate struct clk_hw_onecell_data with __counted_by 2023-08-22 13:51:26 -07:00
clk-moxart.c
clk-multiplier.c
clk-mux.c
clk-nomadik.c clk: nomadik: correct struct name kernel-doc warning 2022-12-09 10:26:25 -08:00
clk-npcm7xx.c clk: npcm7xx: Fix incorrect kfree 2023-10-18 18:06:05 -07:00
clk-nspire.c
clk-palmas.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-plldig.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-pwm.c clk: pwm: Convert to platform remove callback returning void 2023-03-28 19:23:37 -07:00
clk-qoriq.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-renesas-pcie.c clk: rs9: Add support for 9FGV0841 2023-12-17 15:26:24 -08:00
clk-rk808.c clk: RK808: Reduce 'struct rk808' usage 2023-05-15 16:13:56 +01:00
clk-s2mps11.c clk: s2mps11: Convert to platform remove callback returning void 2023-03-28 19:23:37 -07:00
clk-scmi.c clk: scmi: Add support for clock {set,get}_parent 2023-10-08 21:16:30 +01:00
clk-scpi.c clk: Explicitly include correct DT includes 2023-07-19 13:13:16 -07:00
clk-si514.c clk: si514: Convert to use maple tree register cache 2023-10-09 20:29:16 -07:00
clk-si521xx.c Merge branch 'clk-cleanup' into clk-next 2023-10-30 14:12:53 -07:00
clk-si544.c Merge branch 'clk-cleanup' into clk-next 2023-10-30 14:12:53 -07:00
clk-si570.c Merge branch 'clk-cleanup' into clk-next 2023-10-30 14:12:53 -07:00
clk-si5341.c clk: si5341: fix an error code problem in si5341_output_clk_set_rate 2023-12-17 17:46:42 -08:00
clk-si5351.c clk: si5351: allow PLLs to be adjusted without reset 2023-12-17 22:31:36 -08:00
clk-si5351.h
clk-sp7021.c clk: sp7021: fix return value check in sp7021_clk_probe() 2023-12-16 17:10:17 -08:00
clk-sparx5.c
clk-stm32f4.c clk: stm32f4: mux: Add a determine_rate hook 2023-06-08 18:39:27 -07:00
clk-stm32h7.c clk: stm32h7: Remove an unused field in struct stm32_fractional_divider 2023-04-03 14:10:42 -07:00
clk-tps68470.c
clk-twl6040.c
clk-twl.c clk: twl: add clock driver for TWL6032 2023-10-19 16:40:15 -07:00
clk-versaclock3.c clk: versaclock3: Drop ret variable 2023-12-17 15:56:14 -08:00
clk-versaclock5.c clk: versaclock5: Convert to use maple tree register cache 2023-10-09 20:31:23 -07:00
clk-versaclock7.c clk: versaclock7: Convert to use maple tree register cache 2023-10-09 20:31:23 -07:00
clk-vt8500.c
clk-wm831x.c clk: wm831x: clkout: Add a determine_rate hook 2023-06-08 18:39:28 -07:00
clk-xgene.c
clk.c Merge branches 'clk-samsung', 'clk-imx', 'clk-rockchip', 'clk-clkdev' and 'clk-rate-exclusive' into clk-next 2024-03-13 12:36:21 -07:00
clk.h
clkdev.c clkdev: Update clkdev id usage to allow for longer names 2024-02-28 14:14:44 -08:00
Kconfig clk: stm32mp1: move stm32mp1 clock driver into stm32 directory 2023-12-17 15:33:26 -08:00
Makefile clk: stm32mp1: move stm32mp1 clock driver into stm32 directory 2023-12-17 15:33:26 -08:00