linux/drivers/clk/imx
Sascha Hauer b09c68dc57 clk: imx: pll14xx: Support dynamic rates
The pll1443x PLL so far only supports rates from a rate table passed
during initialization. Calculating PLL settings dynamically helps audio
applications to get their desired rates, so support for this is added
in this patch.

The strategy to get to the PLL setting for a rate is:

- First try to only adjust kdiv which specifies the fractional part of the PLL.
  This setting can be changed without glitches on the output and is therefore
  preferred
- When that isn't possible then the rate table is searched for suitable rates,
  so for standard rates the same settings are used as without this patch
- As a last resort the best settings are calculated dynamically

The code in this patch is based on patches from Adrian Alonso <adrian.alonso@nxp.com>
and Mads Bligaard Nielsen <bli@bang-olufsen.dk>

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Abel Vesa <abel.vesa@nxp.com>
Link: https://lore.kernel.org/r/20220304125256.2125023-9-s.hauer@pengutronix.de
Signed-off-by: Abel Vesa <abel.vesa@nxp.com>
2022-03-04 17:06:30 +02:00
..
clk-busy.c clk: imx: Explicitly include bits.h 2020-08-22 20:36:57 +08:00
clk-composite-7ulp.c clk: imx: Fix the build break when clk-imx8ulp build as module 2021-10-01 10:15:42 +03:00
clk-composite-8m.c clk: imx: Rework all imx_clk_hw_composite wrappers 2021-09-30 16:22:55 +03:00
clk-composite-93.c clk: imx: add i.MX93 composite clk 2022-03-04 17:06:29 +02:00
clk-cpu.c clk: imx: Support building i.MX common clock driver as module 2020-08-22 12:38:20 +08:00
clk-divider-gate.c clk: imx: clk-divider-gate: Switch to clk_divider.determine_rate 2021-08-24 16:09:07 +03:00
clk-fixup-div.c clk: imx: drop redundant initialization 2020-02-17 14:32:32 +08:00
clk-fixup-mux.c clk: imx: Explicitly include bits.h 2020-08-22 20:36:57 +08:00
clk-frac-pll.c clk: imx: Support building i.MX common clock driver as module 2020-08-22 12:38:20 +08:00
clk-fracn-gppll.c clk: imx: support fracn gppll 2022-03-04 17:06:29 +02:00
clk-gate2.c clk: imx: gate2: Remove unused variable ret 2020-11-10 09:08:03 +08:00
clk-gate-exclusive.c This round of clk driver and framework updates is heavy on the driver update 2019-07-17 10:07:48 -07:00
clk-imx1.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 336 2019-06-05 17:37:07 +02:00
clk-imx5.c clk: imx: Fix reparenting of UARTs not associated with stdout 2021-04-04 22:39:04 +03:00
clk-imx6q.c clk: imx6q: fix uart earlycon unwork 2021-08-05 18:12:23 -07:00
clk-imx6sl.c clk: imx: Fix reparenting of UARTs not associated with stdout 2021-04-04 22:39:04 +03:00
clk-imx6sll.c clk: imx: Fix reparenting of UARTs not associated with stdout 2021-04-04 22:39:04 +03:00
clk-imx6sx.c clk: imx: Fix reparenting of UARTs not associated with stdout 2021-04-04 22:39:04 +03:00
clk-imx6ul.c clk: imx: imx6ul: Fix csi clk gate register 2021-10-01 10:15:51 +03:00
clk-imx7d.c clk: imx7d: Remove audio_mclk_root_clk 2022-03-04 17:06:21 +02:00
clk-imx7ulp.c clk: imx: Update the pfdv2 for 8ulp specific support 2021-09-30 16:22:56 +03:00
clk-imx8dxl-rsrc.c clk: imx: Add imx8dxl clk driver 2022-01-29 15:12:07 +02:00
clk-imx8mm.c clk: imx8mm: remove SYS PLL 1/2 clock gates 2022-03-04 17:06:29 +02:00
clk-imx8mn.c clk: imx8mn: remove SYS PLL 1/2 clock gates 2022-03-04 17:06:29 +02:00
clk-imx8mp.c clk: imx8mp: remove SYS PLL 1/2 clock gates 2022-03-04 17:06:29 +02:00
clk-imx8mq.c clk: imx8m: fix clock tree update of TF-A managed clocks 2021-08-24 16:09:07 +03:00
clk-imx8qm-rsrc.c clk: imx8qm: add clock valid resource checking 2021-06-14 12:33:22 +03:00
clk-imx8qxp-lpcg.c clk: imx: off by one in imx_lpcg_parse_clks_from_dt() 2022-03-04 17:06:29 +02:00
clk-imx8qxp-lpcg.h clk: imx: add imx8qxp lpcg driver 2018-12-14 13:01:14 -08:00
clk-imx8qxp-rsrc.c clk: imx8qxp: add clock valid checking mechnism 2021-06-14 12:33:19 +03:00
clk-imx8qxp.c clk: imx: Add imx8dxl clk driver 2022-01-29 15:12:07 +02:00
clk-imx8ulp.c clk: imx: imx8ulp: set suppress_bind_attrs to true 2021-11-22 14:40:17 +02:00
clk-imx25.c clk: imx: Fix reparenting of UARTs not associated with stdout 2021-04-04 22:39:04 +03:00
clk-imx27.c clk: imx: Fix reparenting of UARTs not associated with stdout 2021-04-04 22:39:04 +03:00
clk-imx31.c clk: imx: clk-imx31: Remove unused static const table 'uart_clks' 2021-01-29 21:31:52 +08:00
clk-imx35.c clk: imx: Fix reparenting of UARTs not associated with stdout 2021-04-04 22:39:04 +03:00
clk-imx93.c clk: imx: add i.MX93 clk 2022-03-04 17:06:29 +02:00
clk-imxrt1050.c clk: imx: Add initial support for i.MXRT1050 clock driver 2022-01-29 15:12:06 +02:00
clk-lpcg-scu.c clk: imx: Reference preceded by free 2021-04-04 22:39:05 +03:00
clk-pfd.c clk: imx: Fix and update kerneldoc 2020-09-07 11:08:50 +08:00
clk-pfdv2.c clk: imx: Fix the build break when clk-imx8ulp build as module 2021-10-01 10:15:42 +03:00
clk-pll14xx.c clk: imx: pll14xx: Support dynamic rates 2022-03-04 17:06:30 +02:00
clk-pllv1.c clk: imx: pllv1: fix kernel-doc notation for struct clk_pllv1 2021-12-02 17:26:40 -08:00
clk-pllv2.c clk: imx: pllv2: Switch to clk_hw based API 2019-12-11 19:19:44 +08:00
clk-pllv3.c clk: imx: Use div64_ul instead of do_div 2021-11-22 15:29:23 +02:00
clk-pllv4.c clk: imx: Fix the build break when clk-imx8ulp build as module 2021-10-01 10:15:42 +03:00
clk-scu.c clk: imx: scu: Do not enable runtime PM for CPU clks 2021-06-14 12:34:51 +03:00
clk-scu.h clk: imx: Add imx8dxl clk driver 2022-01-29 15:12:07 +02:00
clk-sscg-pll.c clk: imx: Support building i.MX common clock driver as module 2020-08-22 12:38:20 +08:00
clk-vf610.c clk: imx: vf610: Add CRC clock 2020-08-23 10:08:35 +08:00
clk.c clk: imx: Fix reparenting of UARTs not associated with stdout 2021-04-04 22:39:04 +03:00
clk.h clk: imx: support fracn gppll 2022-03-04 17:06:29 +02:00
Kconfig clk: imx: add i.MX93 clk 2022-03-04 17:06:29 +02:00
Makefile clk: imx: add i.MX93 clk 2022-03-04 17:06:29 +02:00