summaryrefslogtreecommitdiff
path: root/drivers/clk
AgeCommit message (Collapse)Author
2024-03-01clk/qcom: use upstream compatible propertiesCaleb Connolly
Adjust the apq8016 and apq8096 drivers to use the upstream compatible properties, and adjust the associated dts files in U-Boot. Reviewed-by: Neil Armstrong <[email protected]> Reviewed-by: Sumit Garg <[email protected]> Tested-by: Sumit Garg <[email protected]> #qcs404 Signed-off-by: Caleb Connolly <[email protected]>
2024-02-28clk: renesas: Confirm all clock & reset changes on RZ/G2LPaul Barker
When enabling/disabling a clock or reset signal, confirm that the change has completed before returning from the function. A somewhat arbitrary 100ms timeout is defined to ensure that the system doesn't lock up in the case of an error. Since we need to dynamically determine if we're waiting for a 0 bit or a 1 bit, it's easier to use wait_for_bit_32() than readl_poll_timeout(). This change is needed for reliable initialization of the I2C driver which is added in a following patch. Signed-off-by: Paul Barker <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2024-02-20Merge https://gitlab.denx.de/u-boot/custodians/u-boot-samsungTom Rini
2024-02-17clk: renesas: Fix broken clocks on all Gen2 boardsNiklas Söderlund
To prepare support for multiple register layouts pointers to register tables where added to struct cpg_mssr_info. These pointers are suppose to be filled in at probe time and no intended change in behavior was intended. However the new pointers where only filled in by some paths of the driver implemented in clk-rcar-gen3.c. The path implemented in clk-rcar-gen2.c was not updated leaving the pointers uninitialized leading to a crash when trying to probe the clocks. Fix this by filling in the pointers in the Gen2 code path with the values used before they where moved to struct cpg_mssr_info. Fixes: d413214fb748 ("clk: renesas: Add register pointers into struct cpg_mssr_info") Signed-off-by: Niklas Söderlund <[email protected]> Acked-by: Marek Vasut <[email protected]> Tested-by: Marek Vasut <[email protected]> # R8A7791 Porter Reviewed-by: Geert Uytterhoeven <[email protected]>
2024-02-10clk: renesas: Implement R8A779H0 V4M PLL7 supportMarek Vasut
Add PLL7 support to Gen3/Gen4 common clock driver. Add initial PLL7 multiplier and divider values into table in R8A779H0 V4M clock driver. The PLL7 is new PLL added in R8A779H0 V4M SoC. Only integer multiplication mode is supported by PLL7. The PLL reference clock are either 16.66 MHz or 20 MHz on R8A779H0 V4M SoC, and the output frequency must be 2000 MHz. The multiplier values fitting this requirement are calculated to 120 or 100. Signed-off-by: Marek Vasut <[email protected]>
2024-02-10clk: renesas: Add R8A779H0 V4M clock tablesHai Pham
Add clock tables for R8A779H0 V4M SoC. The current version is imported from: https://lore.kernel.org/linux-renesas-soc/c678ef7164e3777fa91572f72e47ef385cea64b8.1706194617.git.geert+renesas@glider.be/ The current version still contains PLL7 extras from the previous version to provide ethernet support in U-Boot. Signed-off-by: Hai Pham <[email protected]>
2024-01-29clk: clk-gpio: add actual gated clockSvyatoslav Ryhel
Existing gpio-gate-clock driver acts like a simple GPIO switch without any effect on gated clock. Add actual clock actions into enable/disable ops and implement get_rate op by passing gated clock if it is enabled. Signed-off-by: Svyatoslav Ryhel <[email protected]> Reviewed-by: Sean Anderson <[email protected]> Link: https://lore.kernel.org/r/[email protected] [ sorted includes ] Signed-off-by: Sean Anderson <[email protected]>
2024-01-29treewide: Remove clk_freeSean Anderson
This function is a no-op. Remove it. Signed-off-by: Sean Anderson <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2024-01-29clk: Remove rfreeSean Anderson
Nothing uses this function. Remove it. Since clk_free no longer does anything, just stub it out. Signed-off-by: Sean Anderson <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2024-01-29clk: fix clk_get_rate() always return ulongJulien Masson
When we call clk_get_rate(), we expect to get clock rate value as ulong. In that case we should not use log_ret() macro since it use internally an int. Otherwise we may return an invalid/truncated clock rate value. Signed-off-by: Julien Masson <[email protected]> Fixes: 5c5992cb90c ("clk: Add debugging for return values") Reviewed-by: Sean Anderson <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2024-01-29clk: meson: add Hardware Clock measure driverNeil Armstrong
Amlogic SoCs embeds an hardware clock measure block, port it from Linux and implement it as a UCLK_CLK with only the dump op and fail-only xlate. Based on the Linux driver introduced in [1]. [1] commit 2b45ebef39a2 ("soc: amlogic: Add Meson Clock Measure driver"). Reviewed-by: Sean Anderson <[email protected]> Signed-off-by: Neil Armstrong <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2024-01-27Merge branch 'master-cleanup' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-sh - Assorted code clean-ups
2024-01-27clk: renesas: Drop include common.hMarek Vasut
The header file is not necessary in either of those files, remove it as common.h is going away. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Paul Barker <[email protected]>
2024-01-24clk: exynos: Add Exynos850 clock driverSam Protsenko
Heavily influenced by its Linux kernel counterpart. It's implemented on top of recently added Samsung CCF clock framework API. For now only UART leaf clocks are implemented, along with all preceding clocks in CMU_TOP and CMU_PERI. The UART baud clock is required in the serial driver, to get its rate for the consequent baud rate calculation. Signed-off-by: Sam Protsenko <[email protected]> Reviewed-by: Chanho Park <[email protected]> Signed-off-by: Minkyu Kang <[email protected]>
2024-01-24clk: exynos: Add Samsung clock frameworkSam Protsenko
Heavily based on Linux kernel Samsung clock framework, with some changes to accommodate the differences in U-Boot CCF implementation. It's also quite minimal as compared to the Linux version. Signed-off-by: Sam Protsenko <[email protected]> Reviewed-by: Chanho Park <[email protected]> Signed-off-by: Minkyu Kang <[email protected]>
2024-01-24clk: exynos: Move pll code into clk-exynos7420Sam Protsenko
PLL utilities code is only used by clk-exynos7420 driver at the moment. Move it into clk-exynos7420 to make clk-pll.c file available for CCF PLL clocks implementation, which is coming in the next patches. Signed-off-by: Sam Protsenko <[email protected]> Reviewed-by: Chanho Park <[email protected]> Signed-off-by: Minkyu Kang <[email protected]>
2024-01-22clk: altera: n5x: Fix MEMCLKMGR_EXTCNTRST_C0CNTRST to bit(0)Dinesh Maniyam
MEMCLKMGR_EXTCNTRST_C0CNTRST register defined as BIT[0] in documentation but it is wrongly defined as BIT[7] in u-boot code. This register is used to hold associated pingpong counter in reset while PLL and 5:1 mux configuration is changed. Signed-off-by: Dinesh Maniyam <[email protected]> Reviewed-by: Tien Fong Chee <[email protected]>
2024-01-19arm: Rename STM32MP15xPatrick Delaunay
CONFIG options must not use lower-case letter. Convert this and related ones to upper case. Signed-off-by: Simon Glass <[email protected] Signed-off-by: Patrick Delaunay <[email protected]> Reviewed-by: Patrice Chotard <[email protected]>
2024-01-19arm: Rename STM32MP13xPatrick Delaunay
CONFIG options must not use lower-case letter. Convert this and related ones to upper case. Signed-off-by: Simon Glass <[email protected]> Signed-off-by: Patrick Delaunay <[email protected]> Reviewed-by: Igor Opaniuk <[email protected]>
2024-01-16clk/qcom: fix rcg divider valueCaleb Connolly
The RCG divider field takes a value of (2*h - 1) where h is the divisor. This allows fractional dividers to be supported by calculating them at compile time using a macro. However, the clk_rcg_set_rate_mnd() function was also performing the calculation. Clean this all up and consistently use the F() macro to calculate these at compile time and properly support fractional divisors. Additionally, improve clk_bcr_update() to timeout with a warning rather than hanging the board, and make the freq_tbl struct and helpers common so that they can be reused by future platforms. Reviewed-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-01-16clk/qcom: add mnd_width to clk_rcg_set_rate_mnd()Caleb Connolly
This property is needed on some platforms to ensure that only the relevant bits are set in the M/N/D registers. Reviewed-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-01-16clk/qcom: use function pointers for enable and set_rateCaleb Connolly
Currently, it isn't possible to build clock drivers for more than one platform due to how the msm_enable() and msm_set_rate() callbacks are implemented. Extend qcom_clk_data to include function pointers for these and convert all platforms to use them. Previously, clock drivers relied on include/configs/<board.h> to include the board specific sysmap header, however as most of the header contents are clock driver related, import the contents directly into each clock driver and remove the header. The only exception here is the dragonboard820c board file which includes some pinctrl macros, those are also inlined. Reviewed-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]> [caleb: remove additional sysmap-sdm845.h mention]
2024-01-16clk/qcom: sdm845: add register map for simple gate clocksCaleb Connolly
Many gate clocks can be enabled with a single register write, add support for defining these simple gate clocks and add the ones found on SDM845. While we're here, inline clk_init_uart() into msm_set_rate(). Reviewed-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-01-16clk/qcom: handle resets and clocks in one deviceKonrad Dybcio
Qualcomm's clock controller blocks actually do much more than it says on the tin.. They provide clocks, resets and power domains. Currently, U-Boot requires one to spawn 2 separate devices for controlling clocks and resets, both spanning the same register space. Refactor the code to make it work with just a single DT node, making it compatible with upstream Linux bindings and dropping the dedicated reset driver in favour of including it in the clock driver. Heavily inspired by Renesas code for a similar hw block. [caleb: moved drivers to clk/qcom, added reset driver and adjusted bind logic. Imported qcom,gcc-ipq4019.h from Linux] Signed-off-by: Konrad Dybcio <[email protected]> Reviewed-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-01-16clk/qcom: move ipq4019 driver from mach-ipq40xxCaleb Connolly
This driver is just a stub, but it's necessary to support the upcoming reset driver changes. Reviewed-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-01-16clk/qcom: move from mach-snapdragonCaleb Connolly
Clock drivers don't belong here, move them to the right place and declutter mach-snapdragon a bit. To de-couple these drivers from specific "target" platforms, add additional config options to enable each clock driver gated behind a common CLK_QCOM option and enable them by default for the respective targets. This will make future work easier as we move towards a generic Qualcomm target. Reviewed-by: Sumit Garg <[email protected]> Signed-off-by: Caleb Connolly <[email protected]>
2024-01-14clk: renesas: Synchronize RZ R8A774E1 RZ/G2H clock tables with Linux 6.6.3Marek Vasut
Synchronize RZ R8A774E1 RZ/G2H clock tables with Linux 6.6.3, commit bd3a9e5771a8b332f466d06f7c130a69cab0d526 . Signed-off-by: Marek Vasut <[email protected]>
2024-01-14clk: renesas: Synchronize RZ R8A774C0 RZ/G2E clock tables with Linux 6.6.3Marek Vasut
Synchronize RZ R8A774C0 RZ/G2E clock tables with Linux 6.6.3, commit bd3a9e5771a8b332f466d06f7c130a69cab0d526 . Signed-off-by: Marek Vasut <[email protected]>
2024-01-14clk: renesas: Synchronize RZ R8A774B1 RZ/G2N clock tables with Linux 6.6.3Marek Vasut
Synchronize RZ R8A774B1 RZ/G2N clock tables with Linux 6.6.3, commit bd3a9e5771a8b332f466d06f7c130a69cab0d526 . Signed-off-by: Marek Vasut <[email protected]>
2024-01-14clk: renesas: Synchronize RZ R8A774A1 RZ/G2M clock tables with Linux 6.6.3Marek Vasut
Synchronize RZ R8A774A1 RZ/G2M clock tables with Linux 6.6.3, commit bd3a9e5771a8b332f466d06f7c130a69cab0d526 . Signed-off-by: Marek Vasut <[email protected]>
2024-01-14clk: renesas: Synchronize R-Car R8A77995 D3 clock tables with Linux 6.6.3Marek Vasut
Synchronize R-Car R8A77995 D3 clock tables with Linux 6.6.3, commit bd3a9e5771a8b332f466d06f7c130a69cab0d526 . Signed-off-by: Marek Vasut <[email protected]>
2024-01-14clk: renesas: Synchronize R-Car R8A77990 E3 clock tables with Linux 6.6.3Marek Vasut
Synchronize R-Car R8A77990 E3 clock tables with Linux 6.6.3, commit bd3a9e5771a8b332f466d06f7c130a69cab0d526 . Signed-off-by: Marek Vasut <[email protected]>
2024-01-14clk: renesas: Synchronize R-Car R8A77965 M3-N clock tables with Linux 6.6.3Marek Vasut
Synchronize R-Car R8A77965 M3-N clock tables with Linux 6.6.3, commit bd3a9e5771a8b332f466d06f7c130a69cab0d526 . Signed-off-by: Marek Vasut <[email protected]>
2024-01-14clk: renesas: Synchronize R-Car R8A77960 M3-W and R8A77961 M3-W+ clock ↵Marek Vasut
tables with Linux 6.6.3 Synchronize R-Car R8A77960 M3-W and R8A77961 M3-W+ clock tables with Linux 6.6.3, commit bd3a9e5771a8b332f466d06f7c130a69cab0d526 . Add ZG clock macro into rcar-gen3-cpg.h to cover the new clock type . Signed-off-by: Marek Vasut <[email protected]>
2023-12-19Merge patch series "Add support for MediaTek MT8365 EVK Board"Tom Rini
Julien Masson <[email protected]> says: This patch series add the support for the MediaTek MT8365 EVK Board [1]. Most of the code have been copied/adapted from Linux tag v6.7-rc2. For now we only enable/test these features: Boot, UART, Watchdog and MMC. [trini: This includes two clocks not listed in the Linux binding, which needs resyncing later]
2023-12-19clk: mediatek: add clock driver support for MediaTek MT8365 SoCJulien Masson
This patch adds clock driver support for MediaTek MT8365 SoC. The changes are based on the Linux source code tag v6.7-rc2. clk-mt8365.c has been written based on these kernel files: - clk-mt8365.c (a96cbb146a9736f501fe66ebda6a9018735e5e8a) - clk-mt8365-apmixedsys.c (65c9ad77cbc0eed78db94d80041aba675cfbdfa9) And adapted following the clk attributes supported by U-Boot. Signed-off-by: Julien Masson <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]>
2023-12-18Merge tag 'v2024.01-rc5' into nextTom Rini
Prepare v2024.01-rc5
2023-12-15Merge tag 'clk-2024.01-next' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-clk into next clock patches for u-boot/next The main thing in here is Igor's conversion of soc_clk_dump to a clk_ops member. There's also a write-protect feature for nuvoton clocks. Signed-off-by: Sean Anderson <[email protected]>
2023-12-15test: dm: clk_ccf: test ccf_clk_opsYang Xiwen
Assign ccf_clk_ops to .ops of clk_ccf driver so that it can act as an clk provider. Also add "#clock-cells=<1>" to its device tree node. Add "i2c_root" to clk_test in the device tree and driver for testing. Get "i2c_root" clock in CCF unit tests and add tests for it. Signed-off-by: Yang Xiwen <[email protected]> Reviewed-by: Sean Anderson <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2023-12-15clk: nuvoton: add read only feature for clk driverJim Liu
Add a flag to set ahb/apb/fiu/spi clock divider as read-only The spi clock setting is related to booting flash, it is setup by early bootloader. It just protects the clock source and can't modify it in uboot. Signed-off-by: Jim Liu <[email protected]> Reviewed-by: Sean Anderson <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2023-12-15clk: treewide: switch to clock dump from clk_opsIgor Prusov
Switch to using new dump operation in clock provider drivers instead of overriding soc_clk_dump. Tested-by: Patrice Chotard <[email protected]> Reviewed-by: Sean Anderson <[email protected]> Signed-off-by: Igor Prusov <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2023-12-15clk: amlogic: Move driver and ops structsIgor Prusov
Move driver and ops structs to avoid forward declaration after switching to dump in clk_ops. Reviewed-by: Neil Armstrong <[email protected]> Signed-off-by: Igor Prusov <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2023-12-15clk: k210: Move soc_clk_dump functionIgor Prusov
Move clock dump function to avoid forward declaration after switching to dump in clk_ops. Reviewed-by: Sean Anderson <[email protected]> Signed-off-by: Igor Prusov <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2023-12-15clk: ast2600: Move soc_clk_dump functionIgor Prusov
Move clock dump function to avoid forward declaration after switching to dump in clk_ops. Signed-off-by: Igor Prusov <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2023-12-15clk: zynq: Move soc_clk_dump to Zynq clock driverIgor Prusov
Move clock dump function in preparation for switching to dump function in clk_ops. Acked-by: Michal Simek <[email protected]> Signed-off-by: Igor Prusov <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2023-12-15clk: Check that composite clock's div has set_rate()Igor Prusov
It's possible for composite clocks to have a divider that does not implement set_rate() operation. For example, sandbox_clk_composite() registers composite clock with a divider that only has get_rate(). Currently clk_composite_set_rate() only checks thate rate_ops are present, so for sandbox it will cause NULL dereference during clk_set_rate(). This patch adds rate_ops->set_rate check tp clk_composite_set_rate(). Signed-off-by: Igor Prusov <[email protected]> Reviewed-by: Sean Anderson <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2023-12-15clk: get correct ops for clk_enable() and clk_disable()Yang Xiwen
assign clk_dev_ops(clkp->dev) to ops to ensure correct clk operations are called on clocks. This fixes the incorrect enable_count issue as described in [1]. [1]: https://lore.kernel.org/all/SEZPR06MB695927A6DEEEF8489A06897396A7A@SEZPR06MB6959.apcprd06.prod.outlook.com/ Signed-off-by: Yang Xiwen <[email protected]> Reviewed-by: Sean Anderson <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2023-12-15clk: check parent_name in clk_register to avoid confusing log_error() outputYang Xiwen
For some gate clocks and fixed clocks without a parent, calling clk_register will print an useless error message indicating that parent is missing. Fix that by gaurding log_xxx() with an if-statement. Signed-off-by: Yang Xiwen <[email protected]> Suggested-by: Sean Anderson <[email protected]> Reviewed-by: Sean Anderson <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2023-12-15clk: stm32f: fix setting of LCD clockDario Binacchi
Set pllsaidivr only if the PLLSAIR output frequency is an exact multiple of the pixel clock rate. Otherwise, we search through all combinations of pllsaidivr * pllsair and use the one which gives the rate closest to requested one. Fixes: 5e993508cb25 ("clk: clk_stm32f: Add set_rate for LTDC clock") Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Patrice Chotard <[email protected]>
2023-12-15clk: stm32f: fix setting of division factor for LCD_CLKDario Binacchi
The value to be written to the register must be appropriately shifted, as is correctly done in other parts of the code. Fixes: 5e993508cb25 ("clk: clk_stm32f: Add set_rate for LTDC clock") Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Patrice Chotard <[email protected]>