Douglas Anderson
57a20248ef
clk: rockchip: Turn on "aclk_dmac1" for suspend on rk3288
...
Experimentally it can be seen that going into deep sleep (specifically
setting PMU_CLR_DMA and PMU_CLR_BUS in RK3288_PMU_PWRMODE_CON1)
appears to fail unless "aclk_dmac1" is on. The failure is that the
system never signals that it made it into suspend on the GLOBAL_PWROFF
pin and it just hangs.
NOTE that it's confirmed that it's the actual suspend that fails, not
one of the earlier calls to read/write registers. Specifically if you
comment out the "PMU_GLOBAL_INT_DISABLE" setting in
rk3288_slp_mode_set() and then comment out the "cpu_do_idle()" call in
rockchip_lpmode_enter() then you can exercise the whole suspend path
without any crashing.
This is currently not a problem with suspend upstream because there is
no current way to exercise the deep suspend code. However, anyone
trying to make it work will run into this issue.
This was not a problem on shipping rk3288-based Chromebooks because
those devices all ran on an old kernel based on 3.14. On that kernel
"aclk_dmac1" appears to be left on all the time.
There are several ways to skin this problem.
A) We could add "aclk_dmac1" to the list of critical clocks and that
apperas to work, but presumably that wastes power.
B) We could keep a list of "struct clk" objects to enable at suspend
time in clk-rk3288.c and use the standard clock APIs.
C) We could make the rk3288-pmu driver keep a list of clocks to enable
at suspend time. Presumably this would require a dts and bindings
change.
D) We could just whack the clock on in the existing syscore suspend
function where we whack a bunch of other clocks. This is particularly
easy because we know for sure that the clock's only parent
("aclk_cpu") is a critical clock so we don't need to do anything more
than ungate it.
In this case I have chosen D) because it seemed like the least work,
but any of the other options would presumably also work fine.
Signed-off-by: Douglas Anderson <[email protected] >
Reviewed-by: Elaine Zhang <[email protected] >
Signed-off-by: Heiko Stuebner <[email protected] >
2019-04-12 22:34:09 +02:00
..
actions
clk: actions: Add clock driver for S500 SoC
2019-02-22 00:01:08 -08:00
at91
Merge branch 'clk-at91' into clk-next
2019-03-08 10:29:47 -08:00
axis
axs10x
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
bcm
Merge branches 'clk-managed-registration', 'clk-spdx', 'clk-remove-basic' and 'clk-ops-const' into clk-next
2018-12-14 13:33:44 -08:00
berlin
davinci
clk: davinci: kill davinci_clk_reset_assert/deassert()
2018-10-02 08:54:14 -07:00
h8300
clk: h8300: Remove usage of CLK_IS_BASIC
2018-12-10 14:43:21 -08:00
hisilicon
clk: hisilicon: Remove usage of CLK_IS_BASIC
2018-12-10 14:43:21 -08:00
imgtec
clk: boston: unregister clks on failure in clk_boston_setup()
2018-11-08 10:14:41 -08:00
imx
Merge branches 'clk-imx', 'clk-samsung', 'clk-ti', 'clk-uniphier-gear' and 'clk-mmp2-lcdc' into clk-next
2019-03-08 10:27:40 -08:00
ingenic
clk: ingenic: Remove set but not used variable 'enable'
2019-02-26 09:41:04 -08:00
keystone
Merge branch 'clk-k3-tisci' into clk-next
2018-10-18 15:40:10 -07:00
loongson1
clk: Loongson1: Remove usage of CLK_IS_BASIC
2018-12-10 14:44:08 -08:00
mediatek
Merge branches 'clk-typo', 'clk-json-schema', 'clk-mtk-2712-eco' and 'clk-rockchip' into clk-next
2019-03-08 10:34:22 -08:00
meson
clk: meson: meson8b: fix the naming of the APB clocks
2019-02-13 09:51:09 +01:00
microchip
mmp
clk: mmp2: separate LCDC peripheral clk form the display clock
2019-02-21 13:52:02 -08:00
mvebu
clk: dove: fix refcount leak in dove_clk_init()
2018-12-28 11:45:43 -08:00
mxs
nxp
pistachio
clk: pistachio: constify clk_ops structures
2018-11-06 09:41:49 -08:00
pxa
clk: pxa: constify clk_ops structures
2018-11-06 09:41:57 -08:00
qcom
Merge branches 'clk-ingenic', 'clk-mtk-mux', 'clk-qcom-sdm845-pcie', 'clk-mtk-crit' and 'clk-mtk' into clk-next
2019-03-08 10:29:30 -08:00
renesas
clk: renesas: r8a774a1: Fix LAST_DT_CORE_CLK
2019-02-25 09:13:19 -08:00
rockchip
clk: rockchip: Turn on "aclk_dmac1" for suspend on rk3288
2019-04-12 22:34:09 +02:00
samsung
Merge branches 'clk-typo', 'clk-json-schema', 'clk-mtk-2712-eco' and 'clk-rockchip' into clk-next
2019-03-08 10:34:22 -08:00
sirf
socfpga
Merge branches 'clk-of-refcount', 'clk-mmio-fixed-clock', 'clk-remove-clps', 'clk-socfpga-parent' and 'clk-struct-size' into clk-next
2019-03-08 10:26:59 -08:00
spear
sprd
st
clk: st: Remove usage of CLK_IS_BASIC
2018-12-10 14:43:20 -08:00
sunxi
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
sunxi-ng
Merge branches 'clk-optional', 'clk-devm-clkdev-register', 'clk-allwinner', 'clk-meson' and 'clk-renesas' into clk-next
2019-03-08 10:27:21 -08:00
tegra
We have a fairly balanced mix of clk driver updates and clk framework
2019-03-14 08:46:17 -07:00
ti
We have a fairly balanced mix of clk driver updates and clk framework
2019-03-14 08:46:17 -07:00
uniphier
clk: uniphier: Fix update register for CPU-gear
2019-02-21 13:50:23 -08:00
ux500
clk: Use of_node_name_eq for node name comparisons
2018-12-14 13:52:41 -08:00
versatile
clk: versatile: sp810: Remove usage of CLK_IS_BASIC
2018-12-10 14:44:05 -08:00
x86
Merge branches 'clk-qcom-msm8998', 'clk-fractional-parent', 'clk-x86-mv' and 'clk-SA-fixes' into clk-next
2019-03-08 10:29:15 -08:00
zte
zynq
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
zynqmp
clk: zynqmp: Fix memory allocation in zynqmp_clk_setup
2019-01-09 10:37:01 -08:00
clk-asm9260.c
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
clk-aspeed.c
The new and exciting feature this time around is in the clk core.
2018-08-15 21:41:21 -07:00
clk-axi-clkgen.c
clk-axm5516.c
clk: axm5516: Remove usage of CLK_IS_BASIC
2018-12-10 14:43:21 -08:00
clk-bd718x7.c
clk: bd718x7: Initial support for ROHM bd71837/bd71847 PMIC clock
2018-12-10 12:44:03 -08:00
clk-bulk.c
clk: Tag clk core files with SPDX
2018-12-11 09:57:47 -08:00
clk-cdce706.c
clk-cdce925.c
Merge branches 'clk-dt-name', 'clk-ti-of-node' and 'clk-sa' into clk-next
2018-10-18 15:33:52 -07:00
clk-clps711x.c
clk: clps711x: Remove board support
2019-01-09 12:50:21 -08:00
clk-composite.c
clk: Tag basic clk types with SPDX
2018-12-11 09:57:48 -08:00
clk-conf.c
clk: Tag clk core files with SPDX
2018-12-11 09:57:47 -08:00
clk-cs2000-cp.c
clk: cs2000-cp: convert to SPDX identifiers
2018-08-02 13:55:00 -07:00
clk-devres.c
clk: Add (devm_)clk_get_optional() functions
2019-02-06 10:33:10 -08:00
clk-divider.c
clk: Tag basic clk types with SPDX
2018-12-11 09:57:48 -08:00
clk-efm32gg.c
clk-fixed-factor.c
Merge branch 'clk-fixes' into clk-next
2018-12-14 13:42:08 -08:00
clk-fixed-mmio.c
clk: Add Fixed MMIO clock driver
2019-01-09 11:41:19 -08:00
clk-fixed-rate.c
clk: Tag basic clk types with SPDX
2018-12-11 09:57:48 -08:00
clk-fractional-divider.c
clk: fractional-divider: check parent rate only if flag is set
2019-02-22 00:11:47 -08:00
clk-gate.c
clk: Tag basic clk types with SPDX
2018-12-11 09:57:48 -08:00
clk-gemini.c
clk-gpio.c
clk: clk-gpio: add support for sleeping GPIOs in gpio-gate-clk
2019-02-21 14:05:25 -08:00
clk-hi655x.c
clk: clk-hi655x: Free of_provider at remove
2018-12-05 09:20:29 -08:00
clk-highbank.c
clk: highbank: fix refcount leak in hb_clk_init()
2018-12-28 11:20:48 -08:00
clk-hsdk-pll.c
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
clk-max9485.c
clk: Add driver for MAX9485
2018-07-06 13:44:06 -07:00
clk-max77686.c
clk: clk-max77686: Clean clkdev lookup leak and use devm
2019-02-06 10:35:03 -08:00
clk-moxart.c
clk-multiplier.c
clk: Tag basic clk types with SPDX
2018-12-11 09:57:48 -08:00
clk-mux.c
clk: Tag basic clk types with SPDX
2018-12-11 09:57:48 -08:00
clk-nomadik.c
clk: nomadik: Change to use DEFINE_SHOW_ATTRIBUTE macro
2018-11-28 14:13:18 -08:00
clk-npcm7xx.c
This time it looks like a quieter release cycle in the clk tree. I guess that's
2018-10-31 11:08:30 -07:00
clk-nspire.c
clk-oxnas.c
clk-palmas.c
clk: palmas: constify clk_ops structure
2018-11-06 09:41:44 -08:00
clk-pwm.c
clk-qoriq.c
Merge branches 'clk-qcom-msm8998', 'clk-fractional-parent', 'clk-x86-mv' and 'clk-SA-fixes' into clk-next
2019-03-08 10:29:15 -08:00
clk-rk808.c
clk: rk808: use managed version of of_provider registration
2018-12-05 09:20:35 -08:00
clk-s2mps11.c
clk: s2mps11: constify clk_ops structure
2018-11-06 09:42:12 -08:00
clk-scmi.c
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
clk-scpi.c
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
clk-si514.c
clk-si544.c
clk-si570.c
clk-si5351.c
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
clk-si5351.h
clk-stm32f4.c
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
clk-stm32h7.c
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
clk-stm32mp1.c
clk: stm32mp1: fix bit width of hse_rtc divider
2019-02-21 14:13:22 -08:00
clk-tango4.c
clk: Convert to using %pOFn instead of device_node.name
2018-08-30 09:50:20 -07:00
clk-twl6040.c
clk: clk-twl6040: Fix imprecise external abort for pdmclk
2019-02-21 14:11:23 -08:00
clk-u300.c
clk-versaclock5.c
clk: vc5: Abort clock configuration without upstream clock
2019-01-09 10:53:58 -08:00
clk-vt8500.c
clk-wm831x.c
clk-xgene.c
clk.c
clk: fixup default index for of_clk_get_by_name()
2019-03-08 10:35:07 -08:00
clk.h
clk: Move of_clk_*() APIs into clk.c from clkdev.c
2019-03-01 11:17:22 -08:00
clkdev.c
Merge branch 'clk-parent-rewrite' (early part) into clk-next
2019-03-08 10:35:01 -08:00
Kconfig
Merge branches 'clk-of-refcount', 'clk-mmio-fixed-clock', 'clk-remove-clps', 'clk-socfpga-parent' and 'clk-struct-size' into clk-next
2019-03-08 10:26:59 -08:00
Makefile
Merge branches 'clk-optional', 'clk-devm-clkdev-register', 'clk-allwinner', 'clk-meson' and 'clk-renesas' into clk-next
2019-03-08 10:27:21 -08:00