2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-25 05:34:00 +08:00
linux-next/drivers/clk
Marcin Ziemianowicz a982e45dc1 clk: at91: PLL recalc_rate() now using cached MUL and DIV values
When a USB device is connected to the USB host port on the SAM9N12 then
you get "-62" error which seems to indicate USB replies from the device
are timing out. Based on a logic sniffer, I saw the USB bus was running
at half speed.

The PLL code uses cached MUL and DIV values which get set in set_rate()
and applied in prepare(), but the recalc_rate() function instead
queries the hardware instead of using these cached values. Therefore,
if recalc_rate() is called between a set_rate() and prepare(), the
wrong frequency is calculated and later the USB clock divider for the
SAM9N12 SOC will be configured for an incorrect clock.

In my case, the PLL hardware was set to 96 Mhz before the OHCI
driver loads, and therefore the usb clock divider was being set
to /2 even though the OHCI driver set the PLL to 48 Mhz.

As an alternative explanation, I noticed this was fixed in the past by
87e2ed338f ("clk: at91: fix recalc_rate implementation of PLL
driver") but the bug was later re-introduced by 1bdf02326b ("clk:
at91: make use of syscon/regmap internally").

Fixes: 1bdf02326b ("clk: at91: make use of syscon/regmap internally)
Cc: <stable@vger.kernel.org>
Signed-off-by: Marcin Ziemianowicz <marcin@ziemianowicz.com>
Acked-by: Boris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
2018-05-15 23:38:31 -07:00
..
at91 clk: at91: PLL recalc_rate() now using cached MUL and DIV values 2018-05-15 23:38:31 -07:00
axis
axs10x clk: axs10x: introduce AXS10X pll driver 2017-07-17 11:50:59 -07:00
bcm The large diff this time around is from the addition of a new clk driver 2018-04-13 15:51:06 -07:00
berlin clk: Convert to using %pOF instead of full_name 2017-07-21 15:49:54 -07:00
davinci clk: davinci: add a reset lookup table for psc0 2018-04-06 13:37:19 -07:00
h8300 clk: h8300: pr_err() strings should end with newlines 2017-12-06 22:40:02 -08:00
hisilicon The large diff this time around is from the addition of a new clk driver 2018-04-13 15:51:06 -07:00
imgtec Update MIPS email addresses 2017-11-03 09:02:30 -07:00
imx The large diff this time around is from the addition of a new clk driver 2018-04-13 15:51:06 -07:00
ingenic clk: Add Ingenic jz4770 CGU driver 2018-01-18 22:05:55 +00:00
keystone clk: keystone: sci-clk: add support for dynamically probing clocks 2018-03-08 11:43:15 +02:00
loongson1
mediatek Merge branches 'clk-mediatek', 'clk-hisi', 'clk-allwinner', 'clk-ux500' and 'clk-renesas' into clk-next 2018-04-06 13:21:57 -07:00
meson clk: meson: Drop unused local variable and add static 2018-03-14 15:36:31 -07:00
microchip
mmp We have two changes to the core framework this time around. The first being a 2017-11-17 20:04:24 -08:00
mvebu clk: mvebu: armada-38x: add support for missing clocks 2018-03-19 13:53:57 -07:00
mxs clk: mxs: make clk_ops const 2017-11-01 23:25:43 -07:00
nxp clk: lpc32xx: Set name of regmap_config 2018-03-19 14:35:16 -07:00
pistachio
pxa clk: pxa: unbreak lookup of CLK_POUT 2017-12-28 10:43:30 -08:00
qcom The large diff this time around is from the addition of a new clk driver 2018-04-13 15:51:06 -07:00
renesas clk: renesas: Updates for v4.17 (take two) 2018-03-23 09:40:52 -07:00
rockchip clk: rockchip: assign correct id for pclk_ddr and hclk_sd in rk3399 2018-03-23 09:09:19 +01:00
samsung clk: samsung: Mark a few things static 2018-03-16 09:23:17 -07:00
sirf We have two changes to the core framework this time around. The first being a 2017-11-17 20:04:24 -08:00
socfpga clk: socfpga: stratix10: add clock driver for Stratix10 platform 2018-04-06 10:12:35 -07:00
spear SPEAr: clk: pr_err() strings should end with newlines 2017-12-06 22:39:59 -08:00
sprd clk: sprd: add RTC gate for SC9860 2018-03-16 15:53:30 -07:00
st License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sunxi The core framework has a handful of patches this time around, mostly due 2018-02-01 16:56:07 -08:00
sunxi-ng The large diff this time around is from the addition of a new clk driver 2018-04-13 15:51:06 -07:00
tegra clk: tegra: Fix pll_u rate configuration 2018-03-12 13:59:06 +01:00
ti The large diff this time around is from the addition of a new clk driver 2018-04-13 15:51:06 -07:00
uniphier clk: uniphier: add additional ethernet clock lines for Pro4 2018-04-05 15:03:51 -07:00
ux500 clk: ux500: Drop AB8540/9540 support 2018-03-23 09:36:11 -07:00
versatile clk: versatile: Remove WARNs in ->round_rate() 2018-03-16 15:31:16 -07:00
x86 clk: x86: Do not gate clocks enabled by the firmware 2017-07-18 16:23:13 -07:00
zte clk: move clock common macros out from vendor directories 2017-12-21 15:00:38 -08:00
zynq
clk-asm9260.c clk: Convert to using %pOF instead of full_name 2017-07-21 15:49:54 -07:00
clk-aspeed.c clk: aspeed: Prevent reset if clock is enabled 2018-03-15 11:13:49 -07:00
clk-axi-clkgen.c clk: axi-clkgen: Round closest in round_rate() and recalc_rate() 2017-12-21 18:07:53 -08:00
clk-axm5516.c
clk-bulk.c clk: Export clk_bulk_prepare() 2017-09-29 14:17:17 -07:00
clk-cdce706.c
clk-cdce925.c clk: cdce925: remove redundant check for non-null parent_name 2017-11-13 17:44:15 -08:00
clk-clps711x.c
clk-composite.c
clk-conf.c clk: Convert to using %pOF instead of full_name 2017-07-21 15:49:54 -07:00
clk-cs2000-cp.c clk: cs2000: set pm_ops in hibernate-compatible way 2018-04-06 11:22:44 -07:00
clk-devres.c clk: add managed version of clk_bulk_get 2017-06-02 15:37:49 -07:00
clk-divider.c clk: divider: read-only divider can propagate rate change 2018-03-12 15:10:26 -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-rate.c
clk-fractional-divider.c clk: fractional-divider: allow overriding of approximation 2017-08-08 17:39:48 +02:00
clk-gate.c clk: gate: expose clk_gate_ops::is_enabled 2017-08-31 18:35:45 -07:00
clk-gemini.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
clk-gpio.c clk: clk-gpio: Allow GPIO to sleep in set/get_parent 2018-03-19 13:53:08 -07:00
clk-hi655x.c clk: hi6220: Add the hi655x's pmic clock 2017-04-21 19:18:53 -07:00
clk-highbank.c
clk-hsdk-pll.c ARC: clk: fix spelling mistake: "configurarion" -> "configuration" 2017-11-13 17:44:26 -08:00
clk-max77686.c
clk-moxart.c clk: Convert to using %pOF instead of full_name 2017-07-21 15:49:54 -07:00
clk-multiplier.c
clk-mux.c clk: mux: add helper function for index/value translation 2018-03-12 15:10:23 -07:00
clk-nomadik.c clk: nomadik: Delete error messages for a failed memory allocation in two functions 2017-04-21 19:47:14 -07:00
clk-nspire.c
clk-oxnas.c
clk-palmas.c clk: palmas: undo preparation of a clock source. 2017-06-02 10:51:34 -07:00
clk-pwm.c
clk-qoriq.c clk: qoriq: add more divider clocks support 2017-12-21 15:57:28 -08:00
clk-rk808.c
clk-s2mps11.c
clk-scmi.c clk: scmi: use devm_of_clk_add_hw_provider() API and drop scmi_clocks_remove 2018-03-20 16:23:26 +00:00
clk-scpi.c clk: scpi: error when clock fails to register 2017-06-29 18:47:35 -07:00
clk-si514.c
clk-si544.c clk: Add driver for the si544 clock generator chip 2018-03-23 10:05:25 -07:00
clk-si570.c
clk-si5351.c clk: si5351: _si5351_clkout_reset_pll() can be static 2017-12-28 10:49:48 -08:00
clk-si5351.h
clk-stm32f4.c clk: stm32: Add clk entry for SDMMC2 on stm32F769 2018-03-19 13:46:07 -07:00
clk-stm32h7.c clk: stm32-h7: fix copyright 2017-12-06 23:07:34 -08:00
clk-stm32mp1.c clk: stm32mp1: add Debug clocks 2018-03-11 15:40:34 -07:00
clk-tango4.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
clk-twl6040.c clk: make clk_init_data const 2017-11-01 23:25:51 -07:00
clk-u300.c clk: clk-u300: Fix a typo in two comment lines 2017-11-13 17:39:43 -08:00
clk-versaclock5.c clk: vc5: Add support for IDT VersaClock 5P49V5925 2017-07-17 11:51:00 -07:00
clk-vt8500.c
clk-wm831x.c clk: make clk_init_data const 2017-11-01 23:25:51 -07:00
clk-xgene.c clk: clk-xgene: Adjust six checks for null pointers 2017-11-13 17:40:03 -08:00
clk.c Merge branches 'clk-mvebu', 'clk-phase', 'clk-nxp', 'clk-mtk2712' and 'clk-qcom-rpmcc' into clk-next 2018-04-06 13:21:52 -07:00
clk.h clk: Move __clk_{get,put}() into private clk.h API 2018-01-04 15:13:29 -08:00
clkdev.c clk: Prepare to remove asm-generic/clkdev.h 2018-01-02 16:12:00 -08:00
Kconfig The large diff this time around is from the addition of a new clk driver 2018-04-13 15:51:06 -07:00
Makefile The large diff this time around is from the addition of a new clk driver 2018-04-13 15:51:06 -07:00