Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: rockchip: mark noc and some special clk as critical on rk3228

The jtag/bus/peri/initmem/rom/stimer/phy clks no driver to handle them.
But this clks need enable,so make it as critical.

The ddrupctl/ddrmon/ddrphy clks no driver to handle them,
Chip design requirements for these clock to always on,

The hclk_otg_pmu is Chip design defect, must be always on,
The new document will update the description of this clock.

All these non-noc/non-arbi clocks,IC suggest always on,
Because it's have some order limitation, between the NOC clock switch
and bus IDLE(or pd on/off).

The software is not very good to solve this constraint.
Always on these clocks, has no effect on the system power consumption.
The new document will update the description of these clock.

Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>

authored by

Elaine Zhang and committed by
Heiko Stuebner
f18c0994 f2893aab

+29 -1
+29 -1
drivers/clk/rockchip/clk-rk3228.c
··· 463 463 RK2928_CLKGATE_CON(2), 12, GFLAGS, 464 464 &rk3228_spdif_fracmux), 465 465 466 - GATE(0, "jtag", "ext_jtag", 0, 466 + GATE(0, "jtag", "ext_jtag", CLK_IGNORE_UNUSED, 467 467 RK2928_CLKGATE_CON(1), 3, GFLAGS), 468 468 469 469 GATE(SCLK_OTGPHY0, "sclk_otgphy0", "xin24m", 0, ··· 662 662 663 663 static const char *const rk3228_critical_clocks[] __initconst = { 664 664 "aclk_cpu", 665 + "pclk_cpu", 666 + "hclk_cpu", 665 667 "aclk_peri", 666 668 "hclk_peri", 667 669 "pclk_peri", 670 + "aclk_rga_noc", 671 + "aclk_iep_noc", 672 + "aclk_vop_noc", 673 + "aclk_hdcp_noc", 674 + "hclk_vio_ahb_arbi", 675 + "hclk_vio_noc", 676 + "hclk_vop_noc", 677 + "hclk_host0_arb", 678 + "hclk_host1_arb", 679 + "hclk_host2_arb", 680 + "hclk_otg_pmu", 681 + "aclk_gpu_noc", 682 + "sclk_initmem_mbist", 683 + "aclk_initmem", 684 + "hclk_rom", 685 + "pclk_ddrupctl", 686 + "pclk_ddrmon", 687 + "pclk_msch_noc", 688 + "pclk_stimer", 689 + "pclk_ddrphy", 690 + "pclk_acodecphy", 691 + "pclk_phy_noc", 692 + "aclk_vpu_noc", 693 + "aclk_rkvdec_noc", 694 + "hclk_vpu_noc", 695 + "hclk_rkvdec_noc", 668 696 }; 669 697 670 698 static void __init rk3228_clk_init(struct device_node *np)