linux/drivers/clk
Richard Watts 035cd485a4 clk: ti: omap36xx: Work around sprz319 advisory 2.1
The OMAP36xx DPLL5, driving EHCI USB, can be subject to a long-term
frequency drift. The frequency drift magnitude depends on the VCO update
rate, which is inversely proportional to the PLL divider. The kernel
DPLL configuration code results in a high value for the divider, leading
to a long term drift high enough to cause USB transmission errors. In
the worst case the USB PHY's ULPI interface can stop responding,
breaking USB operation completely. This manifests itself on the
Beagleboard xM by the LAN9514 reporting 'Cannot enable port 2. Maybe the
cable is bad?' in the kernel log.

Errata sprz319 advisory 2.1 documents PLL values that minimize the
drift. Use them automatically when DPLL5 is used for USB operation,
which we detect based on the requested clock rate. The clock framework
will still compute the PLL parameters and resulting rate as usual, but
the PLL M and N values will then be overridden. This can result in the
effective clock rate being slightly different than the rate cached by
the clock framework, but won't cause any adverse effect to USB
operation.

Signed-off-by: Richard Watts <rrw@kynesim.co.uk>
[Upported from v3.2 to v4.9]
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Ladislav Michl <ladis@linux-mips.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2016-12-08 13:15:25 -08:00
..
at91 clk: at91: Fix a return value in case of error 2016-10-20 16:37:56 -07:00
axis clk: axis: Use new macro CLK_OF_DECLARE_DRIVER 2016-08-12 18:00:37 -07:00
axs10x clk/axs10x: Add I2S PLL clock driver 2016-05-06 10:35:04 -07:00
bcm Two small fixes for MIPI PLLs on sunxi devices and a build fix 2016-11-23 14:31:45 -08:00
berlin clk: berlin: Pass correct type to hw provider registration 2016-11-16 11:04:17 -08:00
h8300 clk: h8300: Migrate to clk_hw based registration APIs 2016-08-24 17:37:10 -07:00
hisilicon clk: Hi6220: enable stub clock driver for ARCH_HISI 2016-11-14 18:40:47 -08:00
imx i.MX clock updates for 4.10: 2016-11-16 11:16:07 -08:00
ingenic clk: ingenic: Allow divider value to be divided 2016-05-12 14:48:25 -07:00
keystone clk: keystone: improve function-level documentation 2016-11-01 17:38:04 -07:00
loongson1 CLK: Add Loongson1C clock support 2016-09-23 14:49:21 -07:00
mediatek reset: mediatek: Add MT2701 reset driver 2016-11-08 15:59:51 -08:00
meson ARM: SoC: late DT updates for v4.9 2016-10-07 21:34:49 -07:00
microchip clk: microchip: Initialize SOSC clock rate for PIC32MZDA. 2016-08-24 16:05:24 -07:00
mmp clk: mmp: pxa910: fix return value check in pxa910_clk_init() 2016-11-01 17:41:20 -07:00
mvebu clk: mvebu: make ap806-system-controller explicitly non-modular 2016-11-04 13:32:58 -07:00
mxs clk: mxs: Remove CLK_IS_ROOT 2016-03-02 17:44:59 -08:00
nxp clk: nxp: clk-lpc18xx-ccu: Unmap region obtained by of_iomap 2016-11-01 17:32:25 -07:00
pistachio clk: pistachio: correct critical clock list 2015-08-26 11:34:43 -07:00
pxa clk: pxa: Use __iomem properly and staticize lock variable 2016-11-09 12:43:19 -08:00
qcom clk: qcom: Put venus core0/1 gdscs to hw control mode 2016-11-23 16:41:19 -08:00
renesas clk: renesas: cpg-mssr: Add R8A7745 support 2016-11-10 15:29:30 +01:00
rockchip Merge tag 'v4.10-rockchip-clk2' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into clk-next 2016-12-06 15:17:26 -08:00
samsung Exynos5433 SoC related fixes: 2016-11-21 17:27:02 -08:00
sirf clk: sirf: Remove CLK_IS_ROOT 2016-04-15 16:50:04 -07:00
socfpga clk: socfpga: allow for multiple parents on Arria10 periph clocks 2016-02-22 14:17:37 -08:00
spear clk: spear: Remove CLK_IS_ROOT 2016-03-02 17:46:55 -08:00
st drivers: clk: st: Handle clk synchronous mode for video clocks 2016-09-16 16:01:41 -07:00
sunxi Allwinner clock changes for 4.10 2016-11-16 11:19:20 -08:00
sunxi-ng Two small fixes for MIPI PLLs on sunxi devices and a build fix 2016-11-23 14:31:45 -08:00
tegra clk: tegra: dfll: Use builtin_platform_driver to simplify the code 2016-11-10 14:08:46 -08:00
ti clk: ti: omap36xx: Work around sprz319 advisory 2.1 2016-12-08 13:15:25 -08:00
uniphier clk: uniphier: add cpufreq data for LD11, LD20 SoCs 2016-12-07 16:17:03 -08:00
ux500 ARM: ux500: use CLK_OF_DECLARE() 2016-07-12 11:24:07 +02:00
versatile clk: versatile/icst: support for AP baseboard clocks 2016-08-29 11:38:51 -07:00
x86 clk: x86: Remove clkdev.h and clk.h includes 2016-03-03 11:27:26 -08:00
zte clk: zx296718: register driver earlier with core_initcall 2016-09-23 14:42:13 -07:00
zynq clk: zynq: Remove CLK_IS_ROOT 2016-03-02 17:48:26 -08:00
clk-asm9260.c clk: asm9260: Migrate to clk_hw based registration and OF APIs 2016-08-24 16:08:33 -07:00
clk-axi-clkgen.c clk: axi-clkgen: Migrate to clk_hw based OF and registration APIs 2016-08-24 16:10:31 -07:00
clk-axm5516.c clk: axm5516: Migrate to clk_hw based OF and registration APIs 2016-08-24 16:11:07 -07:00
clk-cdce706.c clk: cdce: Migrate to clk_hw based OF and registration APIs 2016-08-24 16:12:38 -07:00
clk-cdce925.c clk: cdce925: Migrate to clk_hw based OF and provider APIs 2016-08-24 17:18:13 -07:00
clk-clps711x.c clk: clps711x: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:19:26 -07:00
clk-composite.c Merge branch 'clk-hw-register' (early part) into clk-next 2016-04-21 14:47:18 -07:00
clk-conf.c clk: clk-conf: Fix error message when clock isn't found 2016-07-08 11:27:58 -07:00
clk-cs2000-cp.c clk: cs2000: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:20:31 -07:00
clk-devres.c
clk-divider.c clk: divider: Fix clk_divider_round_rate() to use clk_readl() 2016-08-12 17:33:09 -07:00
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-factor: Remove export symbol on setup function 2016-08-15 15:08:03 -07:00
clk-fixed-rate.c clk: fixed-rate: Remove export symbol on setup function 2016-08-15 15:08:06 -07:00
clk-fractional-divider.c clk: fractional-divider: Add hw based registration APIs 2016-04-19 16:56:28 -07:00
clk-gate.c clk: gate: fix coding style 2016-11-09 12:05:50 -08:00
clk-gpio.c clk: gpio: Add hw based registration APIs 2016-04-19 16:56:28 -07:00
clk-highbank.c clk: highbank: Migrate to clk_hw based registration and OF APIs 2016-06-30 12:25:28 -07:00
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: mb86s7x: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:23:01 -07:00
clk-moxart.c clk: moxart: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:23:20 -07:00
clk-multiplier.c clk: multiplier: Prevent the multiplier from under / over flowing 2016-06-20 13:00:00 -07:00
clk-mux.c clk: mux: Add hw based registration APIs 2016-04-19 16:55:01 -07:00
clk-nomadik.c clk: nomadik: Migrate to clk_hw based OF and registration APIs 2016-06-30 12:25:53 -07:00
clk-nspire.c clk: nspire: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:23:21 -07:00
clk-oxnas.c clk: oxnas: Add OX820 Gate clocks 2016-10-23 10:18:45 -07:00
clk-palmas.c clk: palmas: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:23:23 -07:00
clk-pwm.c clk: pwm: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:23:27 -07:00
clk-qoriq.c Merge branch 'clk-fixes' into clk-next 2016-11-01 18:39:07 -07:00
clk-rk808.c clk: rk808: Pass the right pointer as the get_hw context 2016-09-09 11:07:07 -07:00
clk-s2mps11.c clk: s2mps11: Migrate to clk_hw based OF and registration APIs 2016-06-30 12:29:14 -07:00
clk-scpi.c clk: scpi: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:29:58 -07:00
clk-si514.c clk: si514: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:29:59 -07:00
clk-si570.c clk: si570: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:30:01 -07:00
clk-si5351.c clk: si5351: Migrate to clk_hw based OF and registration APIs 2016-08-24 17:30:00 -07:00
clk-si5351.h
clk-stm32f4.c clk: stm32f469: Add QSPI clock 2016-10-27 18:40:40 -07:00
clk-tango4.c clk: tango4: improve clkgen driver 2016-04-15 17:16:06 -07:00
clk-twl6040.c clk: twl6040: Migrate to clk_hw based registration APIs 2016-08-24 17:34:11 -07:00
clk-u300.c clk: u300: Migrate to clk_hw based registration APIs 2016-06-30 12:26:18 -07:00
clk-vt8500.c clk: vt8500: Migrate to clk_hw based registration APIs 2016-08-24 17:35:48 -07:00
clk-wm831x.c clk: clk-wm831x: fix a logic error 2016-12-07 16:24:45 -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: core: Force setting the phase delay when no change 2016-08-30 14:52:26 -07:00
clk.h clk: Replace of_clk_get_by_clkspec() with of_clk_get_from_provider() 2015-03-12 12:20:34 -07:00
clkdev.c treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00
Kconfig clk: Enable compile testing for s2mps11 and max77686 2016-11-01 17:33:13 -07:00
Makefile clk: Loongson1: Refactor Loongson1 clock 2016-09-23 14:48:56 -07:00