[PATCH 14/26] ARM: OMAP3: clock: Add 3xxx data using common struct clk
From: Mike Turquette <hidden>
Date: 2012-11-08 21:52:50
Also in:
linux-omap
Quoting Paul Walmsley (2012-11-08 10:08:16)
On Wed, 7 Nov 2012, Mike Turquette wrote:quoted
From: Rajendra Nayak <redacted> The patch is the output from a python script which converts from the old OMAP clk format to COMMON clk format using a JSON parser in between which was developed by Paul Walmsley. Signed-off-by: Rajendra Nayak <redacted> [paul at pwsan.com: AM3517/05: dropped bogus hsotgusb "ick" and "fck" clkdev aliases; added hsotgusb_fck alias; added emac_ick and emac_fck aliases; replace omap2_init_clksel_parent() with omap2_clksel_find_parent_index(); reflow macros and parent name lists; add clkdm_name argument to DEFINE_STRUCT_CLK_HW_OMAP macros] Signed-off-by: Mike Turquette <redacted>Am seeing warnings during the disable-unused-clocks phase of the boot on the OMAP3 test boards here. Log is included at the bottom of this E-mail, with some debugging added for extra context. The problem appears to be that the clock code is disabling clocks that are active in the hardware, but for which the clockdomain use count is 0, since they've never been enabled.
Right. The old omap2_disabled_unused_clocks code used to call omap2_clk_enable before calling omap2_clk_disable. That approach is sort of "cooking the books" and the generic implementation in drivers/clk/clk.c simply disables the clocks (without first enabling), which is why these WARNs are new.
Ideally there would be some way for the core CCF code to indicate to the underlying clock hardware implementation that the disable-unused-clock process is a 'force disable'. The OMAP clock hardware implementation code could then also put the clockdomain to sleep (and skip the warning) in such a circumstance.
I'm looking at a few different ways to do that now. Regards, Mike
- Paul [ 2.685943] disabling sys_clkout1: ec = 0 [ 2.690277] disabling wdt1_ick: ec = 0 [ 2.694366] disabling cam_mclk: ec = 0 [ 2.698333] ------------[ cut here ]------------ [ 2.703216] WARNING: at arch/arm/mach-omap2/clockdomain.c:961 _clkdm_clk_hwmod_disable+0xc4/0xd8() [ 2.712646] Modules linked in: [ 2.715911] [<c001c38c>] (unwind_backtrace+0x0/0xf0) from [<c0043cd8>] (warn_slowpath_common+0x4c/0x64) [ 2.725799] [<c0043cd8>] (warn_slowpath_common+0x4c/0x64) from [<c0043d0c>] (warn_slowpath_null+0x1c/0x24) [ 2.735961] [<c0043d0c>] (warn_slowpath_null+0x1c/0x24) from [<c003705c>] (_clkdm_clk_hwmod_disable+0xc4/0xd8) [ 2.746520] [<c003705c>] (_clkdm_clk_hwmod_disable+0xc4/0xd8) from [<c0437bd0>] (clk_disable_unused_subtree+0xb0/0xbc) [ 2.757781] [<c0437bd0>] (clk_disable_unused_subtree+0xb0/0xbc) from [<c0437b40>] (clk_disable_unused_subtree+0x20/0xbc) [ 2.769226] ---[ end trace ebefd5468131571a ]--- [ 2.774261] disabling mspro_fck: ec = 0 [ 2.778320] disabling ssi_ssr_fck_3430es2: ec = 0 [ 2.783355] disabling pka_ick: ec = 0 [ 2.787231] disabling sad2d_ick: ec = 0 [ 2.791259] ------------[ cut here ]------------ [ 2.796142] WARNING: at arch/arm/mach-omap2/clockdomain.c:961 _clkdm_clk_hwmod_disable+0xc4/0xd8() [ 2.805572] Modules linked in: [ 2.808807] [<c001c38c>] (unwind_backtrace+0x0/0xf0) from [<c0043cd8>] (warn_slowpath_common+0x4c/0x64) [ 2.818695] [<c0043cd8>] (warn_slowpath_common+0x4c/0x64) from [<c0043d0c>] (warn_slowpath_null+0x1c/0x24) [ 2.828857] [<c0043d0c>] (warn_slowpath_null+0x1c/0x24) from [<c003705c>] (_clkdm_clk_hwmod_disable+0xc4/0xd8) [ 2.839416] [<c003705c>] (_clkdm_clk_hwmod_disable+0xc4/0xd8) from [<c0437bd0>] (clk_disable_unused_subtree+0xb0/0xbc) [ 2.850677] [<c0437bd0>] (clk_disable_unused_subtree+0xb0/0xbc) from [<c0437b40>] (clk_disable_unused_subtree+0x20/0xbc) [ 2.862121] ---[ end trace ebefd5468131571b ]--- [ 2.867065] disabling wdt3_ick: ec = 0 [ 2.871032] disabling des1_ick: ec = 0 [ 2.875030] disabling sha11_ick: ec = 0 [ 2.879089] disabling rng_ick: ec = 0 [ 2.882995] disabling aes1_ick: ec = 0 [ 2.886932] disabling ssi_ick_3430es2: ec = 0 [ 2.891601] disabling mspro_ick: ec = 0 [ 2.895660] disabling des2_ick: ec = 0 [ 2.899658] disabling sha12_ick: ec = 0 [ 2.903686] disabling aes2_ick: ec = 0 [ 2.907684] disabling icr_ick: ec = 0 [ 2.911621] disabling wdt3_fck: ec = 0