linux/drivers/clk/ti
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
..
adpll.c clk: ti: Fix some errors found by static checkers 2016-03-01 16:21:25 -08:00
apll.c clk: ti: dpll: convert DPLL support code to use clk_hw instead of clk ptrs 2016-02-22 14:16:49 -08:00
autoidle.c clk: ti: Convert to clk_hw based provider APIs 2015-08-24 16:48:58 -07:00
clk-2xxx.c Merge branch 'cleanup-clk-h-includes' into clk-next 2015-07-28 11:59:09 -07:00
clk-3xxx-legacy.c clk: ti: Include clk.h 2015-07-20 11:11:28 -07:00
clk-3xxx.c clk: ti: omap36xx: Work around sprz319 advisory 2.1 2016-12-08 13:15:25 -08:00
clk-7xx.c It's the usual big pile of driver updates and additions, but we 2016-05-20 20:18:12 -07:00
clk-33xx.c clk: ti: am335x/am4372: Add tbclk to pwm node 2016-06-10 03:25:04 -07:00
clk-43xx.c ARM: DT updates for v4.8 2016-08-01 18:37:45 -04:00
clk-44xx.c clk: ti: move some public definitions to private header 2015-06-02 12:31:45 +03:00
clk-54xx.c clk: ti: dra7: fix kernel boot with arg 'clocksource=gp_timer' 2016-04-15 17:30:07 -07:00
clk-814x.c clk: ti: Fix some errors found by static checkers 2016-03-01 16:21:25 -08:00
clk-816x.c clk: ti816x: Add missing dmtimer clkdev entries 2015-11-24 11:30:27 +02:00
clk-dra7-atl.c clk: ti: make clk-dra7-atl explicitly non-modular 2016-11-04 13:34:14 -07:00
clk.c clk: ti: Remove CLK_IS_ROOT 2016-03-02 17:47:46 -08:00
clkt_dflt.c clk: ti: dflt: remove redundant unlikely 2016-04-15 15:52:48 -07:00
clkt_dpll.c clk: ti: dpll: add support for specifying max rate for DPLLs 2016-04-15 17:26:18 -07:00
clkt_iclk.c clk: ti: omap2430: move clock support code under clock driver 2015-06-02 12:31:29 +03:00
clock.h clk: ti: omap36xx: Work around sprz319 advisory 2.1 2016-12-08 13:15:25 -08:00
clockdomain.c clk: ti: Update for of_clk_get_parent_count() returning unsigned int 2016-02-26 16:01:32 -08:00
composite.c clk: ti: Update for of_clk_get_parent_count() returning unsigned int 2016-02-26 16:01:32 -08:00
divider.c clk: move the common clock's to_clk_*(_hw) macros to clk-provider.h 2016-01-29 12:59:50 -08:00
dpll3xxx.c clk: ti: omap36xx: Work around sprz319 advisory 2.1 2016-12-08 13:15:25 -08:00
dpll44xx.c clk: ti: dpll: convert DPLL support code to use clk_hw instead of clk ptrs 2016-02-22 14:16:49 -08:00
dpll.c clk: ti: omap36xx: Work around sprz319 advisory 2.1 2016-12-08 13:15:25 -08:00
fapll.c clk: ti: fapll: fix wrong do_div() usage 2015-11-24 11:30:27 +02:00
fixed-factor.c clk: ti: autoidle: move generic autoidle handling code to clock driver 2015-06-02 12:31:13 +03:00
gate.c clk: move the common clock's to_clk_*(_hw) macros to clk-provider.h 2016-01-29 12:59:50 -08:00
interface.c clk: Convert __clk_get_flags() to clk_hw_get_flags() 2015-08-24 16:48:44 -07:00
Kconfig clk: ti: Add support for dm814x ADPLL 2016-03-01 16:21:25 -08:00
Makefile clk: ti: Allow COMPILE_TEST to build selected drivers 2016-03-01 16:21:25 -08:00
mux.c clk: ti: Update for of_clk_get_parent_count() returning unsigned int 2016-02-26 16:01:32 -08:00