mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 22:44:27 +08:00
f6f64ed868
Starting with the A83T SoC, Allwinner introduced a new timing mode for its MMC clocks. The new mode changes how the MMC controller sample and output clocks are delayed to match chip and board specifics. There are two controls for this, one on the CCU side controlling how the clocks behave, and one in the MMC controller controlling what inputs to take and how to route them. In the old mode, the MMC clock had 2 child clocks providing the output and sample clocks, which could be delayed by a number of clock cycles measured from the MMC clock's parent. With the new mode, the 2 delay clocks are no longer active. Instead, the delays and associated controls are moved into the MMC controller. The output of the MMC clock is also halved. The difference in how things are wired between the modes means that the clock controls and the MMC controls must match. To achieve this in a clear, explicit way, we introduce two functions for the MMC driver to use: one queries the hardware for the current mode set, and the other allows the MMC driver to request a mode. Signed-off-by: Chen-Yu Tsai <wens@csie.org> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
44 lines
1.6 KiB
Makefile
44 lines
1.6 KiB
Makefile
# Common objects
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_common.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_mmc_timing.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_reset.o
|
|
|
|
# Base clock types
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_div.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_frac.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_gate.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_mux.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_mult.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_phase.o
|
|
|
|
# Multi-factor clocks
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_nk.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_nkm.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_nkmp.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_nm.o
|
|
lib-$(CONFIG_SUNXI_CCU) += ccu_mp.o
|
|
|
|
# SoC support
|
|
obj-$(CONFIG_SUN50I_A64_CCU) += ccu-sun50i-a64.o
|
|
obj-$(CONFIG_SUN5I_CCU) += ccu-sun5i.o
|
|
obj-$(CONFIG_SUN6I_A31_CCU) += ccu-sun6i-a31.o
|
|
obj-$(CONFIG_SUN8I_A23_CCU) += ccu-sun8i-a23.o
|
|
obj-$(CONFIG_SUN8I_A33_CCU) += ccu-sun8i-a33.o
|
|
obj-$(CONFIG_SUN8I_A83T_CCU) += ccu-sun8i-a83t.o
|
|
obj-$(CONFIG_SUN8I_H3_CCU) += ccu-sun8i-h3.o
|
|
obj-$(CONFIG_SUN8I_V3S_CCU) += ccu-sun8i-v3s.o
|
|
obj-$(CONFIG_SUN8I_DE2_CCU) += ccu-sun8i-de2.o
|
|
obj-$(CONFIG_SUN8I_R_CCU) += ccu-sun8i-r.o
|
|
obj-$(CONFIG_SUN9I_A80_CCU) += ccu-sun9i-a80.o
|
|
obj-$(CONFIG_SUN9I_A80_CCU) += ccu-sun9i-a80-de.o
|
|
obj-$(CONFIG_SUN9I_A80_CCU) += ccu-sun9i-a80-usb.o
|
|
|
|
# The lib-y file goals is supposed to work only in arch/*/lib or lib/. In our
|
|
# case, we want to use that goal, but even though lib.a will be properly
|
|
# generated, it will not be linked in, eventually resulting in a linker error
|
|
# for missing symbols.
|
|
#
|
|
# We can work around that by explicitly adding lib.a to the obj-y goal. This is
|
|
# an undocumented behaviour, but works well for now.
|
|
obj-$(CONFIG_SUNXI_CCU) += lib.a
|