0001 # SPDX-License-Identifier: GPL-2.0
0002
0003 config HAVE_CLK
0004 bool
0005 help
0006 The <linux/clk.h> calls support software clock gating and
0007 thus are a key power management tool on many systems.
0008
0009 config HAVE_CLK_PREPARE
0010 bool
0011
0012 config HAVE_LEGACY_CLK # TODO: Remove once all legacy users are migrated
0013 bool
0014 select HAVE_CLK
0015 help
0016 Select this option when the clock API in <linux/clk.h> is implemented
0017 by platform/architecture code. This method is deprecated. Modern
0018 code should select COMMON_CLK instead and not define a custom
0019 'struct clk'.
0020
0021 menuconfig COMMON_CLK
0022 bool "Common Clock Framework"
0023 depends on !HAVE_LEGACY_CLK
0024 select HAVE_CLK_PREPARE
0025 select HAVE_CLK
0026 select SRCU
0027 select RATIONAL
0028 help
0029 The common clock framework is a single definition of struct
0030 clk, useful across many platforms, as well as an
0031 implementation of the clock API in include/linux/clk.h.
0032 Architectures utilizing the common struct clk should select
0033 this option.
0034
0035 if COMMON_CLK
0036
0037 config COMMON_CLK_WM831X
0038 tristate "Clock driver for WM831x/2x PMICs"
0039 depends on MFD_WM831X
0040 help
0041 Supports the clocking subsystem of the WM831x/2x series of
0042 PMICs from Wolfson Microelectronics.
0043
0044 source "drivers/clk/versatile/Kconfig"
0045
0046 config CLK_HSDK
0047 bool "PLL Driver for HSDK platform"
0048 depends on ARC_SOC_HSDK || COMPILE_TEST
0049 depends on HAS_IOMEM
0050 help
0051 This driver supports the HSDK core, system, ddr, tunnel and hdmi PLLs
0052 control.
0053
0054 config LMK04832
0055 tristate "Ti LMK04832 JESD204B Compliant Clock Jitter Cleaner"
0056 depends on SPI
0057 select REGMAP_SPI
0058 help
0059 Say yes here to build support for Texas Instruments' LMK04832 Ultra
0060 Low-Noise JESD204B Compliant Clock Jitter Cleaner With Dual Loop PLLs
0061
0062 config COMMON_CLK_APPLE_NCO
0063 tristate "Clock driver for Apple SoC NCOs"
0064 depends on ARCH_APPLE || COMPILE_TEST
0065 default ARCH_APPLE
0066 help
0067 This driver supports NCO (Numerically Controlled Oscillator) blocks
0068 found on Apple SoCs such as t8103 (M1). The blocks are typically
0069 generators of audio clocks.
0070
0071 config COMMON_CLK_MAX77686
0072 tristate "Clock driver for Maxim 77620/77686/77802 MFD"
0073 depends on MFD_MAX77686 || MFD_MAX77620 || COMPILE_TEST
0074 help
0075 This driver supports Maxim 77620/77686/77802 crystal oscillator
0076 clock.
0077
0078 config COMMON_CLK_MAX9485
0079 tristate "Maxim 9485 Programmable Clock Generator"
0080 depends on I2C
0081 help
0082 This driver supports Maxim 9485 Programmable Audio Clock Generator
0083
0084 config COMMON_CLK_RK808
0085 tristate "Clock driver for RK805/RK808/RK809/RK817/RK818"
0086 depends on MFD_RK808
0087 help
0088 This driver supports RK805, RK809 and RK817, RK808 and RK818 crystal oscillator clock.
0089 These multi-function devices have two fixed-rate oscillators, clocked at 32KHz each.
0090 Clkout1 is always on, Clkout2 can off by control register.
0091
0092 config COMMON_CLK_HI655X
0093 tristate "Clock driver for Hi655x" if EXPERT
0094 depends on (MFD_HI655X_PMIC || COMPILE_TEST)
0095 depends on REGMAP
0096 default MFD_HI655X_PMIC
0097 help
0098 This driver supports the hi655x PMIC clock. This
0099 multi-function device has one fixed-rate oscillator, clocked
0100 at 32KHz.
0101
0102 config COMMON_CLK_SCMI
0103 tristate "Clock driver controlled via SCMI interface"
0104 depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
0105 help
0106 This driver provides support for clocks that are controlled
0107 by firmware that implements the SCMI interface.
0108
0109 This driver uses SCMI Message Protocol to interact with the
0110 firmware providing all the clock controls.
0111
0112 config COMMON_CLK_SCPI
0113 tristate "Clock driver controlled via SCPI interface"
0114 depends on ARM_SCPI_PROTOCOL || COMPILE_TEST
0115 help
0116 This driver provides support for clocks that are controlled
0117 by firmware that implements the SCPI interface.
0118
0119 This driver uses SCPI Message Protocol to interact with the
0120 firmware providing all the clock controls.
0121
0122 config COMMON_CLK_SI5341
0123 tristate "Clock driver for SiLabs 5341 and 5340 A/B/C/D devices"
0124 depends on I2C
0125 select REGMAP_I2C
0126 help
0127 This driver supports Silicon Labs Si5341 and Si5340 programmable clock
0128 generators. Not all features of these chips are currently supported
0129 by the driver, in particular it only supports XTAL input. The chip can
0130 be pre-programmed to support other configurations and features not yet
0131 implemented in the driver.
0132
0133 config COMMON_CLK_SI5351
0134 tristate "Clock driver for SiLabs 5351A/B/C"
0135 depends on I2C
0136 select REGMAP_I2C
0137 help
0138 This driver supports Silicon Labs 5351A/B/C programmable clock
0139 generators.
0140
0141 config COMMON_CLK_SI514
0142 tristate "Clock driver for SiLabs 514 devices"
0143 depends on I2C
0144 depends on OF
0145 select REGMAP_I2C
0146 help
0147 This driver supports the Silicon Labs 514 programmable clock
0148 generator.
0149
0150 config COMMON_CLK_SI544
0151 tristate "Clock driver for SiLabs 544 devices"
0152 depends on I2C
0153 select REGMAP_I2C
0154 help
0155 This driver supports the Silicon Labs 544 programmable clock
0156 generator.
0157
0158 config COMMON_CLK_SI570
0159 tristate "Clock driver for SiLabs 570 and compatible devices"
0160 depends on I2C
0161 depends on OF
0162 select REGMAP_I2C
0163 help
0164 This driver supports Silicon Labs 570/571/598/599 programmable
0165 clock generators.
0166
0167 config COMMON_CLK_BM1880
0168 bool "Clock driver for Bitmain BM1880 SoC"
0169 depends on ARCH_BITMAIN || COMPILE_TEST
0170 default ARCH_BITMAIN
0171 help
0172 This driver supports the clocks on Bitmain BM1880 SoC.
0173
0174 config COMMON_CLK_CDCE706
0175 tristate "Clock driver for TI CDCE706 clock synthesizer"
0176 depends on I2C
0177 select REGMAP_I2C
0178 help
0179 This driver supports TI CDCE706 programmable 3-PLL clock synthesizer.
0180
0181 config COMMON_CLK_TPS68470
0182 tristate "Clock Driver for TI TPS68470 PMIC"
0183 depends on I2C
0184 depends on INTEL_SKL_INT3472 || COMPILE_TEST
0185 select REGMAP_I2C
0186 help
0187 This driver supports the clocks provided by the TPS68470 PMIC.
0188
0189 config COMMON_CLK_CDCE925
0190 tristate "Clock driver for TI CDCE913/925/937/949 devices"
0191 depends on I2C
0192 depends on OF
0193 select REGMAP_I2C
0194 help
0195 This driver supports the TI CDCE913/925/937/949 programmable clock
0196 synthesizer. Each chip has different number of PLLs and outputs.
0197 For example, the CDCE925 contains two PLLs with spread-spectrum
0198 clocking support and five output dividers. The driver only supports
0199 the following setup, and uses a fixed setting for the output muxes.
0200 Y1 is derived from the input clock
0201 Y2 and Y3 derive from PLL1
0202 Y4 and Y5 derive from PLL2
0203 Given a target output frequency, the driver will set the PLL and
0204 divider to best approximate the desired output.
0205
0206 config COMMON_CLK_CS2000_CP
0207 tristate "Clock driver for CS2000 Fractional-N Clock Synthesizer & Clock Multiplier"
0208 depends on I2C
0209 select REGMAP_I2C
0210 help
0211 If you say yes here you get support for the CS2000 clock multiplier.
0212
0213 config COMMON_CLK_EN7523
0214 bool "Clock driver for Airoha EN7523 SoC system clocks"
0215 depends on OF
0216 depends on ARCH_AIROHA || COMPILE_TEST
0217 default ARCH_AIROHA
0218 help
0219 This driver provides the fixed clocks and gates present on Airoha
0220 ARM silicon.
0221
0222 config COMMON_CLK_FSL_FLEXSPI
0223 tristate "Clock driver for FlexSPI on Layerscape SoCs"
0224 depends on ARCH_LAYERSCAPE || COMPILE_TEST
0225 default ARCH_LAYERSCAPE && SPI_NXP_FLEXSPI
0226 help
0227 On Layerscape SoCs there is a special clock for the FlexSPI
0228 interface.
0229
0230 config COMMON_CLK_FSL_SAI
0231 bool "Clock driver for BCLK of Freescale SAI cores"
0232 depends on ARCH_LAYERSCAPE || COMPILE_TEST
0233 help
0234 This driver supports the Freescale SAI (Synchronous Audio Interface)
0235 to be used as a generic clock output. Some SoCs have restrictions
0236 regarding the possible pin multiplexer settings. Eg. on some SoCs
0237 two SAI interfaces can only be enabled together. If just one is
0238 needed, the BCLK pin of the second one can be used as general
0239 purpose clock output. Ideally, it can be used to drive an audio
0240 codec (sometimes known as MCLK).
0241
0242 config COMMON_CLK_GEMINI
0243 bool "Clock driver for Cortina Systems Gemini SoC"
0244 depends on ARCH_GEMINI || COMPILE_TEST
0245 select MFD_SYSCON
0246 select RESET_CONTROLLER
0247 help
0248 This driver supports the SoC clocks on the Cortina Systems Gemini
0249 platform, also known as SL3516 or CS3516.
0250
0251 config COMMON_CLK_LAN966X
0252 bool "Generic Clock Controller driver for LAN966X SoC"
0253 depends on HAS_IOMEM
0254 depends on OF
0255 depends on SOC_LAN966 || COMPILE_TEST
0256 help
0257 This driver provides support for Generic Clock Controller(GCK) on
0258 LAN966X SoC. GCK generates and supplies clock to various peripherals
0259 within the SoC.
0260
0261 config COMMON_CLK_ASPEED
0262 bool "Clock driver for Aspeed BMC SoCs"
0263 depends on ARCH_ASPEED || COMPILE_TEST
0264 default ARCH_ASPEED
0265 select MFD_SYSCON
0266 select RESET_CONTROLLER
0267 help
0268 This driver supports the SoC clocks on the Aspeed BMC platforms.
0269
0270 The G4 and G5 series, including the ast2400 and ast2500, are supported
0271 by this driver.
0272
0273 config COMMON_CLK_S2MPS11
0274 tristate "Clock driver for S2MPS1X/S5M8767 MFD"
0275 depends on MFD_SEC_CORE || COMPILE_TEST
0276 help
0277 This driver supports S2MPS11/S2MPS14/S5M8767 crystal oscillator
0278 clock. These multi-function devices have two (S2MPS14) or three
0279 (S2MPS11, S5M8767) fixed-rate oscillators, clocked at 32KHz each.
0280
0281 config CLK_TWL6040
0282 tristate "External McPDM functional clock from twl6040"
0283 depends on TWL6040_CORE
0284 help
0285 Enable the external functional clock support on OMAP4+ platforms for
0286 McPDM. McPDM module is using the external bit clock on the McPDM bus
0287 as functional clock.
0288
0289 config COMMON_CLK_AXI_CLKGEN
0290 tristate "AXI clkgen driver"
0291 depends on HAS_IOMEM || COMPILE_TEST
0292 depends on OF
0293 help
0294 Support for the Analog Devices axi-clkgen pcore clock generator for Xilinx
0295 FPGAs. It is commonly used in Analog Devices' reference designs.
0296
0297 config CLK_QORIQ
0298 bool "Clock driver for Freescale QorIQ platforms"
0299 depends on OF
0300 depends on PPC_E500MC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
0301 help
0302 This adds the clock driver support for Freescale QorIQ platforms
0303 using common clock framework.
0304
0305 config CLK_LS1028A_PLLDIG
0306 tristate "Clock driver for LS1028A Display output"
0307 depends on ARCH_LAYERSCAPE || COMPILE_TEST
0308 default ARCH_LAYERSCAPE
0309 help
0310 This driver support the Display output interfaces(LCD, DPHY) pixel clocks
0311 of the QorIQ Layerscape LS1028A, as implemented TSMC CLN28HPM PLL. Not all
0312 features of the PLL are currently supported by the driver. By default,
0313 configured bypass mode with this PLL.
0314
0315 config COMMON_CLK_XGENE
0316 bool "Clock driver for APM XGene SoC"
0317 default ARCH_XGENE
0318 depends on ARM64 || COMPILE_TEST
0319 help
0320 Support for the APM X-Gene SoC reference, PLL, and device clocks.
0321
0322 config COMMON_CLK_LOCHNAGAR
0323 tristate "Cirrus Logic Lochnagar clock driver"
0324 depends on MFD_LOCHNAGAR
0325 help
0326 This driver supports the clocking features of the Cirrus Logic
0327 Lochnagar audio development board.
0328
0329 config COMMON_CLK_NXP
0330 def_bool COMMON_CLK && (ARCH_LPC18XX || ARCH_LPC32XX)
0331 select REGMAP_MMIO if ARCH_LPC32XX
0332 select MFD_SYSCON if ARCH_LPC18XX
0333 help
0334 Support for clock providers on NXP platforms.
0335
0336 config COMMON_CLK_PALMAS
0337 tristate "Clock driver for TI Palmas devices"
0338 depends on MFD_PALMAS
0339 help
0340 This driver supports TI Palmas devices 32KHz output KG and KG_AUDIO
0341 using common clock framework.
0342
0343 config COMMON_CLK_PWM
0344 tristate "Clock driver for PWMs used as clock outputs"
0345 depends on PWM
0346 help
0347 Adapter driver so that any PWM output can be (mis)used as clock signal
0348 at 50% duty cycle.
0349
0350 config COMMON_CLK_PXA
0351 def_bool COMMON_CLK && ARCH_PXA
0352 help
0353 Support for the Marvell PXA SoC.
0354
0355 config COMMON_CLK_OXNAS
0356 bool "Clock driver for the OXNAS SoC Family"
0357 depends on ARCH_OXNAS || COMPILE_TEST
0358 select MFD_SYSCON
0359 help
0360 Support for the OXNAS SoC Family clocks.
0361
0362 config COMMON_CLK_RS9_PCIE
0363 tristate "Clock driver for Renesas 9-series PCIe clock generators"
0364 depends on I2C
0365 depends on OF
0366 select REGMAP_I2C
0367 help
0368 This driver supports the Renesas 9-series PCIe clock generator
0369 models 9FGV/9DBV/9DMV/9FGL/9DML/9QXL/9SQ.
0370
0371 config COMMON_CLK_VC5
0372 tristate "Clock driver for IDT VersaClock 5,6 devices"
0373 depends on I2C
0374 depends on OF
0375 select REGMAP_I2C
0376 help
0377 This driver supports the IDT VersaClock 5 and VersaClock 6
0378 programmable clock generators.
0379
0380 config COMMON_CLK_STM32MP135
0381 def_bool COMMON_CLK && MACH_STM32MP13
0382 help
0383 Support for stm32mp135 SoC family clocks
0384
0385 config COMMON_CLK_STM32MP157
0386 def_bool COMMON_CLK && MACH_STM32MP157
0387 help
0388 Support for stm32mp157 SoC family clocks
0389
0390 config COMMON_CLK_STM32F
0391 def_bool COMMON_CLK && (MACH_STM32F429 || MACH_STM32F469 || MACH_STM32F746)
0392 help
0393 Support for stm32f4 and stm32f7 SoC families clocks
0394
0395 config COMMON_CLK_STM32H7
0396 def_bool COMMON_CLK && MACH_STM32H743
0397 help
0398 Support for stm32h7 SoC family clocks
0399
0400 config COMMON_CLK_MMP2
0401 def_bool COMMON_CLK && (MACH_MMP2_DT || MACH_MMP3_DT)
0402 help
0403 Support for Marvell MMP2 and MMP3 SoC clocks
0404
0405 config COMMON_CLK_MMP2_AUDIO
0406 tristate "Clock driver for MMP2 Audio subsystem"
0407 depends on COMMON_CLK_MMP2 || COMPILE_TEST
0408 help
0409 This driver supports clocks for Audio subsystem on MMP2 SoC.
0410
0411 config COMMON_CLK_BD718XX
0412 tristate "Clock driver for 32K clk gates on ROHM PMICs"
0413 depends on MFD_ROHM_BD718XX || MFD_ROHM_BD71828
0414 help
0415 This driver supports ROHM BD71837, BD71847, BD71850, BD71815
0416 and BD71828 PMICs clock gates.
0417
0418 config COMMON_CLK_FIXED_MMIO
0419 bool "Clock driver for Memory Mapped Fixed values"
0420 depends on COMMON_CLK && OF
0421 help
0422 Support for Memory Mapped IO Fixed clocks
0423
0424 config COMMON_CLK_K210
0425 bool "Clock driver for the Canaan Kendryte K210 SoC"
0426 depends on OF && RISCV && SOC_CANAAN
0427 default SOC_CANAAN
0428 help
0429 Support for the Canaan Kendryte K210 RISC-V SoC clocks.
0430
0431 source "drivers/clk/actions/Kconfig"
0432 source "drivers/clk/analogbits/Kconfig"
0433 source "drivers/clk/baikal-t1/Kconfig"
0434 source "drivers/clk/bcm/Kconfig"
0435 source "drivers/clk/hisilicon/Kconfig"
0436 source "drivers/clk/imgtec/Kconfig"
0437 source "drivers/clk/imx/Kconfig"
0438 source "drivers/clk/ingenic/Kconfig"
0439 source "drivers/clk/keystone/Kconfig"
0440 source "drivers/clk/mediatek/Kconfig"
0441 source "drivers/clk/meson/Kconfig"
0442 source "drivers/clk/mstar/Kconfig"
0443 source "drivers/clk/microchip/Kconfig"
0444 source "drivers/clk/mvebu/Kconfig"
0445 source "drivers/clk/pistachio/Kconfig"
0446 source "drivers/clk/qcom/Kconfig"
0447 source "drivers/clk/ralink/Kconfig"
0448 source "drivers/clk/renesas/Kconfig"
0449 source "drivers/clk/rockchip/Kconfig"
0450 source "drivers/clk/samsung/Kconfig"
0451 source "drivers/clk/sifive/Kconfig"
0452 source "drivers/clk/socfpga/Kconfig"
0453 source "drivers/clk/sprd/Kconfig"
0454 source "drivers/clk/starfive/Kconfig"
0455 source "drivers/clk/sunxi/Kconfig"
0456 source "drivers/clk/sunxi-ng/Kconfig"
0457 source "drivers/clk/tegra/Kconfig"
0458 source "drivers/clk/ti/Kconfig"
0459 source "drivers/clk/uniphier/Kconfig"
0460 source "drivers/clk/visconti/Kconfig"
0461 source "drivers/clk/x86/Kconfig"
0462 source "drivers/clk/xilinx/Kconfig"
0463 source "drivers/clk/zynqmp/Kconfig"
0464
0465 # Kunit test cases
0466 config CLK_KUNIT_TEST
0467 tristate "Basic Clock Framework Kunit Tests" if !KUNIT_ALL_TESTS
0468 depends on KUNIT
0469 default KUNIT_ALL_TESTS
0470 help
0471 Kunit tests for the common clock framework.
0472
0473 config CLK_GATE_KUNIT_TEST
0474 tristate "Basic gate type Kunit test" if !KUNIT_ALL_TESTS
0475 depends on KUNIT
0476 default KUNIT_ALL_TESTS
0477 help
0478 Kunit test for the basic clk gate type.
0479
0480 endif