mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-18 16:44:27 +08:00
70fa895488
Before adding the directly controlled resets support it's reasonable to move the existing resets control functionality into a dedicated object for the sake of the CCU dividers clock driver simplification. After the new functionality was added clk-ccu-div.c would have got to a mixture of the weakly dependent clocks and resets methods. Splitting the methods up into the two objects will make the code easier to read and maintain. It shall also improve the code scalability (though hopefully we won't need this part that much in the future). The reset control functionality is now implemented in the framework of a single unit since splitting it up doesn't make much sense due to relatively simple reset operations. The ccu-rst.c has been designed to be looking like ccu-div.c or ccu-pll.c with two globally available methods for the sake of the code unification and better code readability. This commit doesn't provide any change in the CCU reset implementation semantics. As before the driver will support the trigger-like CCU resets only, which are responsible for the AXI-bus, APB-bus and SATA-ref blocks reset. The assert/de-assert-capable reset controls support will be added in the next commit. Note the CCU Clock dividers and resets functionality split up was possible due to not having any side-effects (at least we didn't found ones) of the regmap-based concurrent access of the common CCU dividers/reset CSRs. Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru> Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de> Link: https://lore.kernel.org/r/20220929225402.9696-6-Sergey.Semin@baikalelectronics.ru Signed-off-by: Stephen Boyd <sboyd@kernel.org>
53 lines
2.1 KiB
Plaintext
53 lines
2.1 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
config CLK_BAIKAL_T1
|
|
bool "Baikal-T1 Clocks Control Unit interface"
|
|
depends on (MIPS_BAIKAL_T1 && OF) || COMPILE_TEST
|
|
default MIPS_BAIKAL_T1
|
|
help
|
|
Clocks Control Unit is the core of Baikal-T1 SoC System Controller
|
|
responsible for the chip subsystems clocking and resetting. It
|
|
consists of multiple global clock domains, which can be reset by
|
|
means of the CCU control registers. These domains and devices placed
|
|
in them are fed with clocks generated by a hierarchy of PLLs,
|
|
configurable and fixed clock dividers. Enable this option to be able
|
|
to select Baikal-T1 CCU PLLs and Dividers drivers.
|
|
|
|
if CLK_BAIKAL_T1
|
|
|
|
config CLK_BT1_CCU_PLL
|
|
bool "Baikal-T1 CCU PLLs support"
|
|
select MFD_SYSCON
|
|
default MIPS_BAIKAL_T1
|
|
help
|
|
Enable this to support the PLLs embedded into the Baikal-T1 SoC
|
|
System Controller. These are five PLLs placed at the root of the
|
|
clocks hierarchy, right after an external reference oscillator
|
|
(normally of 25MHz). They are used to generate high frequency
|
|
signals, which are either directly wired to the consumers (like
|
|
CPUs, DDR, etc.) or passed over the clock dividers to be only
|
|
then used as an individual reference clock of a target device.
|
|
|
|
config CLK_BT1_CCU_DIV
|
|
bool "Baikal-T1 CCU Dividers support"
|
|
select MFD_SYSCON
|
|
default MIPS_BAIKAL_T1
|
|
help
|
|
Enable this to support the CCU dividers used to distribute clocks
|
|
between AXI-bus and system devices coming from CCU PLLs of Baikal-T1
|
|
SoC. CCU dividers can be either configurable or with fixed divider,
|
|
either gateable or ungateable. Some of the CCU dividers can be as well
|
|
used to reset the domains they're supplying clock to.
|
|
|
|
config CLK_BT1_CCU_RST
|
|
bool "Baikal-T1 CCU Resets support"
|
|
select RESET_CONTROLLER
|
|
select MFD_SYSCON
|
|
default MIPS_BAIKAL_T1
|
|
help
|
|
Enable this to support the CCU reset blocks responsible for the
|
|
AXI-bus and some subsystems reset. These are mainly the
|
|
self-deasserted reset controls but there are several lines which
|
|
can be directly asserted/de-asserted (PCIe and DDR sub-domains).
|
|
|
|
endif
|