Re: [PATCH] clk: rockchip: disable unused clocks

From: Kever Yang
Date: Wed Oct 29 2014 - 21:11:05 EST


Hi

On 10/30/2014 05:53 AM, Heiko StÃbner wrote:
Am Mittwoch, 29. Oktober 2014, 13:50:20 schrieb Doug Anderson:
Kever,

On Wed, Oct 29, 2014 at 3:06 AM, Kever Yang <kever.yang@xxxxxxxxxxxxxx>
wrote:
The rockchip clock driver use CLK_IGNORE_UNUSED flag to make sure
all the clocks are available like default power on state.
We have implement the clock manage in most of rockchip drivers,
it is time to remove it for power save.
Instead we add CLK_IGNORE_UNUSED for some clock nodes which should
be on during boot or no module driver in kernel will initialize it.

Signed-off-by: Kever Yang <kever.yang@xxxxxxxxxxxxxx>
---

drivers/clk/rockchip/clk-rk3188.c | 32 ++++-----
drivers/clk/rockchip/clk-rk3288.c | 146
+++++++++++++++++++------------------- drivers/clk/rockchip/clk.c
| 9 ---
3 files changed, 90 insertions(+), 97 deletions(-)
Your patch didn't seem to apply to the top of Heiko's
"v3.19-clk/next". Where should it apply to?
I apply the patch on the top of linux-next, I will apply it on Heiko's
"v3.19-clk/next" next version.

- GATE(ACLK_CPU, "aclk_cpu", "aclk_cpu_pre", 0,
+ GATE(0, "aclk_cpu", "aclk_cpu_pre", CLK_IGNORE_UNUSED,

RK3288_CLKGATE_CON(0), 3, GFLAGS),
It seems strange to me that you're removing the ACLK_CPU ID here. Was
that on purpose?
Sorry for that, I didn't mean to removing any ID here, will fix in next version.

- COMPOSITE_NOMUX(PCLK_CPU, "pclk_cpu", "aclk_cpu_pre", 0,
+ COMPOSITE_NOMUX(0, "pclk_cpu", "aclk_cpu_pre", CLK_IGNORE_UNUSED,

RK3288_CLKSEL_CON(1), 12, 3, DFLAGS,
RK3288_CLKGATE_CON(0), 5, GFLAGS),
Here too for PCLK_CPU. There are a few others as well.
yeah, they should keep their clock ids


I'll also say that when I applied this atop my local tree that USB
stopped working. I just see:

[ 1647.626747] hub 2-1:1.0: hub_port_status failed (err = -110)
[ 1657.626746] hub 2-1:1.0: hub_port_status failed (err = -110)

...over and over and over again.
maybe Kever's dwc2 clock-handling patch [0] might help there, as the dwc2-host
currently does not seem to do any clock handling at all.
I think Heiko is right, I test in my evb with following change and dwc2
works well:
--- a/drivers/clk/rockchip/clk-rk3288.c
+++ b/drivers/clk/rockchip/clk-rk3288.c
@@ -654,8 +654,8 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {

/* hclk_peri gates */
GATE(0, "hclk_peri_matrix", "hclk_peri", CLK_IGNORE_UNUSED, RK3288_CLKGATE_CON(6), 0, GFLAGS),
- GATE(HCLK_OTG0, "hclk_otg0", "hclk_peri", 0, RK3288_CLKGATE_CON(7), 4, GFLAGS),
- GATE(HCLK_USBHOST0, "hclk_host0", "hclk_peri", 0, RK3288_CLKGATE_CON(7), 6, GFLAGS),
+ GATE(HCLK_OTG0, "hclk_otg0", "hclk_peri", CLK_IGNORE_UNUSED, RK3288_CLKGATE_CON(7), 4, GFLAGS),
+ GATE(HCLK_USBHOST0, "hclk_host0", "hclk_peri", CLK_IGNORE_UNUSED, RK3288_CLKGATE_CON(7), 6, GFLAGS),
GATE(HCLK_USBHOST1, "hclk_host1", "hclk_peri", 0, RK3288_CLKGATE_CON(7), 7, GFLAGS),
GATE(HCLK_HSIC, "hclk_hsic", "hclk_peri", 0, RK3288_CLKGATE_CON(7), 8, GFLAGS),
GATE(0, "hclk_usb_peri", "hclk_peri", CLK_IGNORE_UNUSED, RK3288_CLKGATE_CON(7), 9, GFLAGS),

- Kever

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/