alistair23-linux/drivers/clk
Chen-Yu Tsai 25eb035c3f clk: sunxi-ng: a80: Remodel CPU cluster PLLs as N-type multiplier clocks
The CPU cluster PLLs on the A80 are NP clocks that are atypical in two ways:

  - The P factor is 1 bit wide, and translates to a /1 or /4 divider.

  - The P factor should only be used for output frequencies lower than
    288 MHz. The N factor has a lower limit of 12, which likely contributed
    to this extra divider.

According to the user manual, the clocks can only go as low as 200 MHz.
The vendor BSP kernel does not even define operating points below 360
MHz for these clocks. The lower end for cpufreq in the vendor kernel is
even higher. The mainline Linux kernel doesn't support cpufreq for the
A80 at the moment. This means the lower frequencies are untested, and
will likely remain unused.

The new sunxi-ng style clocks don't support the quirks listed above.
Instead of trying to work the quirks in for something of little usage,
we re-model the clocks into N-type multipler clocks, with P fixed at 1.
At probe time we check if P is set to 4, and fix it up if needed. This
is highly unlikely though.

Fixes: b8eb71dcdd ("clk: sunxi-ng: Add A80 CCU")
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2017-04-05 09:02:56 +02:00
..
at91 clk: at91: Fix a return value in case of error 2016-10-20 16:37:56 -07:00
axis
axs10x clk/axs10x: Clear init field in driver probe 2017-01-09 16:06:40 -08:00
bcm clk: bcm2835: Add leaf clock measurement support, disabled by default 2017-01-20 16:22:56 -08:00
berlin clk: berlin: Pass correct type to hw provider registration 2016-11-16 11:04:17 -08:00
h8300
hisilicon clk: hisilicon: fix lock assignment 2017-01-26 16:18:34 -08:00
imx Merge branch 'clk-imx7', 'clk-bcm2835' into clk-next 2017-01-26 15:52:37 -08:00
ingenic
keystone clk: keystone: pll: Unmap region obtained by of_iomap 2016-12-08 16:34:15 -08:00
loongson1 CLK: Add Loongson1C clock support 2016-09-23 14:49:21 -07:00
mediatek clk: mediatek: Fix MT8135 dependencies 2017-01-26 16:04:31 -08:00
meson ARM: SoC: late DT updates for v4.11 2017-03-03 16:15:48 -08:00
microchip
mmp clk:mmp:clk-of-mmp2: Free memory and Unmap region obtained by kzalloc and of_iomap 2016-12-08 16:29:39 -08:00
mvebu clk: mvebu: adjust clock handling for the CP110 system controller 2017-02-14 10:59:15 -08:00
mxs
nxp clk: nxp: clk-lpc18xx-ccu: Unmap region obtained by of_iomap 2016-11-01 17:32:25 -07:00
pistachio
pxa ARM: SoC platform updates for v4.10 2016-12-15 15:39:02 -08:00
qcom clk: qcom: Do not drop device node twice 2017-02-15 17:17:55 -08:00
renesas clk: renesas: mstp: ensure register writes complete 2017-02-16 10:36:05 -08:00
rockchip clk: rockchip: rk3288: make all niu clocks critical 2017-01-23 00:58:45 +01:00
samsung Merge branch 'next/late' with mainline 2017-03-02 17:52:44 +01:00
sirf
socfpga
spear
st clk: st: clk-flexgen: Unmap region obtained by of_iomap 2016-12-08 16:35:22 -08:00
sunxi Allwinner clock changes for 4.10 2016-11-16 11:19:20 -08:00
sunxi-ng clk: sunxi-ng: a80: Remodel CPU cluster PLLs as N-type multiplier clocks 2017-04-05 09:02:56 +02:00
tegra The usual collection of new drivers, non-critical fixes, and updates 2017-02-25 14:28:06 -08:00
ti clk: ti: divider: Add the table parsing to get the best divider value 2017-01-26 16:03:04 -08:00
uniphier clk: uniphier: add eMMC clock for LD11 and LD20 SoCs 2017-02-03 11:55:21 -08:00
ux500 clk: ux500: Convert ABx500 clocks to use OF probing 2017-01-26 16:10:02 -08:00
versatile
x86 clk: x86: Add Atom PMC platform clocks 2017-01-26 16:20:46 -08:00
zte clk: zte: add i2s clocks for zx296718 2017-02-10 09:17:38 -08:00
zynq
clk-asm9260.c
clk-axi-clkgen.c
clk-axm5516.c
clk-cdce706.c
clk-cdce925.c clk: cdce925: add support for CDCE913, CDCE937, and CDCE949 2017-01-09 16:38:30 -08:00
clk-clps711x.c
clk-composite.c
clk-conf.c clk: clk-conf: Do not print error messages if EPROBE_DEFER 2017-01-09 16:09:05 -08:00
clk-cs2000-cp.c clk: cs2000: add Suspend/Resume feature 2017-01-20 16:17:39 -08:00
clk-devres.c clk: add devm_get_clk_from_child() API 2016-12-08 16:37:33 -08:00
clk-divider.c
clk-efm32gg.c clk: efm32gg: Pass correct type to hw provider registration 2016-11-16 11:08:55 -08:00
clk-fixed-factor.c
clk-fixed-rate.c
clk-fractional-divider.c
clk-gate.c clk: gate: fix coding style 2016-11-09 12:05:50 -08:00
clk-gpio.c
clk-highbank.c
clk-max77686.c clk: max77686: fix number of clocks setup for clk_hw based registration 2016-10-17 15:31:59 -07:00
clk-mb86s7x.c
clk-moxart.c
clk-multiplier.c
clk-mux.c
clk-nomadik.c
clk-nspire.c
clk-oxnas.c clk: oxnas: Add OX820 Gate clocks 2016-10-23 10:18:45 -07:00
clk-palmas.c
clk-pwm.c
clk-qoriq.c clk: qoriq: added ls1012a clock configuration 2016-12-08 16:29:30 -08:00
clk-rk808.c
clk-s2mps11.c
clk-scpi.c clk: scpi: don't add cpufreq device if the scpi dvfs node is disabled 2017-01-09 16:08:19 -08:00
clk-si514.c
clk-si570.c
clk-si5351.c
clk-si5351.h
clk-stm32f4.c clk: stm32f7: Introduce stm32f7 clocks for STM32F746 boards 2017-01-26 15:53:03 -08:00
clk-tango4.c
clk-twl6040.c
clk-u300.c
clk-versaclock5.c clk: vc5: Add support for IDT VersaClock 5P49V5923 and 5P49V5933 2017-01-20 16:17:34 -08:00
clk-vt8500.c
clk-wm831x.c clk: wm831x: fix usleep_range with bad range 2017-01-09 16:06:41 -08:00
clk-xgene.c clk: xgene: Don't call __pa on ioremaped address 2016-10-28 11:03:47 -07:00
clk.c
clk.h
clkdev.c ARM: 8631/1: clkdev: Detect errors in clk_hw_register_clkdev() for mass registration 2016-11-22 11:45:28 +00:00
Kconfig clk: vc5: Add support for IDT VersaClock 5P49V5923 and 5P49V5933 2017-01-20 16:17:34 -08:00
Makefile clk: Make x86/ conditional on CONFIG_COMMON_CLK 2017-01-26 16:20:07 -08:00