All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peng Fan <peng.fan@nxp.com>
To: Anson Huang <anson.huang@nxp.com>,
	"shawnguo@kernel.org" <shawnguo@kernel.org>,
	"s.hauer@pengutronix.de" <s.hauer@pengutronix.de>,
	"kernel@pengutronix.de" <kernel@pengutronix.de>,
	Fabio Estevam <fabio.estevam@nxp.com>,
	"mturquette@baylibre.com" <mturquette@baylibre.com>,
	"sboyd@kernel.org" <sboyd@kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Rob Herring <robh@kernel.org>
Cc: dl-linux-imx <linux-imx@nxp.com>
Subject: RE: [PATCH 2/2] clk: imx: imx7d: remove clks_init_on array
Date: Wed, 8 Aug 2018 08:48:57 +0000	[thread overview]
Message-ID: <AM0PR04MB4481FC2BAD71B75D7BE84C0788260@AM0PR04MB4481.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <1533703167-26583-2-git-send-email-Anson.Huang@nxp.com>



> -----Original Message-----
> From: Anson Huang
> Sent: 2018年8月8日 12:39
> To: shawnguo@kernel.org; s.hauer@pengutronix.de; kernel@pengutronix.de;
> Fabio Estevam <fabio.estevam@nxp.com>; mturquette@baylibre.com;
> sboyd@kernel.org; linux-arm-kernel@lists.infradead.org;
> linux-clk@vger.kernel.org; linux-kernel@vger.kernel.org
> Cc: dl-linux-imx <linux-imx@nxp.com>
> Subject: [PATCH 2/2] clk: imx: imx7d: remove clks_init_on array
> 
> Clock framework will enable those clocks registered with CLK_IS_CRITICAL flag,
> so no need to have clks_init_on array during clock initialization now.

Will it be more flexible to parse dts saying "critical-clocks = <xxx>" or "init-on-arrary=<xxx>"
and enable those clocks?

Regards,
Peng.

> 
> Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> ---
>  drivers/clk/imx/clk-imx7d.c | 27 ++++++++-------------------
>  drivers/clk/imx/clk.h       |  7 +++++++
>  2 files changed, 15 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/clk/imx/clk-imx7d.c b/drivers/clk/imx/clk-imx7d.c index
> c4518d7..076460b 100644
> --- a/drivers/clk/imx/clk-imx7d.c
> +++ b/drivers/clk/imx/clk-imx7d.c
> @@ -379,13 +379,6 @@ static const char *pll_enet_bypass_sel[] =
> { "pll_enet_main", "pll_enet_main_src  static const char
> *pll_audio_bypass_sel[] = { "pll_audio_main", "pll_audio_main_src", };  static
> const char *pll_video_bypass_sel[] = { "pll_video_main", "pll_video_main_src", };
> 
> -static int const clks_init_on[] __initconst = {
> -	IMX7D_ARM_A7_ROOT_CLK, IMX7D_MAIN_AXI_ROOT_CLK,
> -	IMX7D_PLL_SYS_MAIN_480M_CLK, IMX7D_IPG_ROOT_CLK,
> -	IMX7D_DRAM_PHYM_ROOT_CLK, IMX7D_DRAM_ROOT_CLK,
> -	IMX7D_DRAM_PHYM_ALT_ROOT_CLK, IMX7D_DRAM_ALT_ROOT_CLK,
> -};
> -
>  static struct clk_onecell_data clk_data;
> 
>  static struct clk ** const uart_clks[] __initconst = { @@ -403,7 +396,6 @@
> static void __init imx7d_clocks_init(struct device_node *ccm_node)  {
>  	struct device_node *np;
>  	void __iomem *base;
> -	int i;
> 
>  	clks[IMX7D_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
>  	clks[IMX7D_OSC_24M_CLK] = of_clk_get_by_name(ccm_node, "osc"); @@
> -466,7 +458,7 @@ static void __init imx7d_clocks_init(struct device_node
> *ccm_node)
>  	clks[IMX7D_PLL_SYS_MAIN_120M] =
> imx_clk_fixed_factor("pll_sys_main_120m", "pll_sys_main_clk", 1, 4);
>  	clks[IMX7D_PLL_DRAM_MAIN_533M] =
> imx_clk_fixed_factor("pll_dram_533m", "pll_dram_main_clk", 1, 2);
> 
> -	clks[IMX7D_PLL_SYS_MAIN_480M_CLK] =
> imx_clk_gate_dis("pll_sys_main_480m_clk", "pll_sys_main_480m", base + 0xb0,
> 4);
> +	clks[IMX7D_PLL_SYS_MAIN_480M_CLK] =
> +imx_clk_gate_dis_flags("pll_sys_main_480m_clk", "pll_sys_main_480m",
> +base + 0xb0, 4, CLK_IS_CRITICAL);
>  	clks[IMX7D_PLL_SYS_MAIN_240M_CLK] =
> imx_clk_gate_dis("pll_sys_main_240m_clk", "pll_sys_main_240m", base + 0xb0,
> 5);
>  	clks[IMX7D_PLL_SYS_MAIN_120M_CLK] =
> imx_clk_gate_dis("pll_sys_main_120m_clk", "pll_sys_main_120m", base + 0xb0,
> 6);
>  	clks[IMX7D_PLL_DRAM_MAIN_533M_CLK] =
> imx_clk_gate("pll_dram_533m_clk", "pll_dram_533m", base + 0x70, 12); @@
> -719,7 +711,7 @@ static void __init imx7d_clocks_init(struct device_node
> *ccm_node)
>  	clks[IMX7D_ENET_AXI_ROOT_DIV] =
> imx_clk_divider2("enet_axi_post_div", "enet_axi_pre_div", base + 0x8900, 0, 6);
>  	clks[IMX7D_NAND_USDHC_BUS_ROOT_CLK] =
> imx_clk_divider2("nand_usdhc_root_clk", "nand_usdhc_pre_div", base +
> 0x8980, 0, 6);
>  	clks[IMX7D_AHB_CHANNEL_ROOT_DIV] =
> imx_clk_divider2("ahb_root_clk", "ahb_pre_div", base + 0x9000, 0, 6);
> -	clks[IMX7D_IPG_ROOT_CLK] = imx_clk_divider2("ipg_root_clk",
> "ahb_root_clk", base + 0x9080, 0, 2);
> +	clks[IMX7D_IPG_ROOT_CLK] = imx_clk_divider_flags("ipg_root_clk",
> +"ahb_root_clk", base + 0x9080, 0, 2, CLK_IS_CRITICAL |
> +CLK_OPS_PARENT_ENABLE | CLK_SET_RATE_PARENT);
>  	clks[IMX7D_DRAM_ROOT_DIV] = imx_clk_divider2("dram_post_div",
> "dram_cg", base + 0x9880, 0, 3);
>  	clks[IMX7D_DRAM_PHYM_ALT_ROOT_DIV] =
> imx_clk_divider2("dram_phym_alt_post_div", "dram_phym_alt_pre_div", base
> + 0xa000, 0, 3);
>  	clks[IMX7D_DRAM_ALT_ROOT_DIV] =
> imx_clk_divider2("dram_alt_post_div", "dram_alt_pre_div", base + 0xa080, 0,
> 3); @@ -783,17 +775,17 @@ static void __init imx7d_clocks_init(struct
> device_node *ccm_node)
>  	clks[IMX7D_CLKO1_ROOT_DIV] = imx_clk_divider2("clko1_post_div",
> "clko1_pre_div", base + 0xbd80, 0, 6);
>  	clks[IMX7D_CLKO2_ROOT_DIV] = imx_clk_divider2("clko2_post_div",
> "clko2_pre_div", base + 0xbe00, 0, 6);
> 
> -	clks[IMX7D_ARM_A7_ROOT_CLK] = imx_clk_gate4("arm_a7_root_clk",
> "arm_a7_div", base + 0x4000, 0);
> +	clks[IMX7D_ARM_A7_ROOT_CLK] =
> imx_clk_gate2_flags("arm_a7_root_clk",
> +"arm_a7_div", base + 0x4000, 0, CLK_IS_CRITICAL |
> +CLK_OPS_PARENT_ENABLE);
>  	clks[IMX7D_ARM_M4_ROOT_CLK] = imx_clk_gate4("arm_m4_root_clk",
> "arm_m4_div", base + 0x4010, 0);
> -	clks[IMX7D_MAIN_AXI_ROOT_CLK] = imx_clk_gate4("main_axi_root_clk",
> "axi_post_div", base + 0x4040, 0);
> +	clks[IMX7D_MAIN_AXI_ROOT_CLK] =
> +imx_clk_gate2_flags("main_axi_root_clk", "axi_post_div", base + 0x4040,
> +0, CLK_IS_CRITICAL | CLK_OPS_PARENT_ENABLE);
>  	clks[IMX7D_DISP_AXI_ROOT_CLK] = imx_clk_gate4("disp_axi_root_clk",
> "disp_axi_post_div", base + 0x4050, 0);
>  	clks[IMX7D_ENET_AXI_ROOT_CLK] = imx_clk_gate4("enet_axi_root_clk",
> "enet_axi_post_div", base + 0x4060, 0);
>  	clks[IMX7D_OCRAM_CLK] = imx_clk_gate4("ocram_clk",
> "main_axi_root_clk", base + 0x4110, 0);
>  	clks[IMX7D_OCRAM_S_CLK] = imx_clk_gate4("ocram_s_clk",
> "ahb_root_clk", base + 0x4120, 0);
> -	clks[IMX7D_DRAM_ROOT_CLK] = imx_clk_gate4("dram_root_clk",
> "dram_post_div", base + 0x4130, 0);
> -	clks[IMX7D_DRAM_PHYM_ROOT_CLK] =
> imx_clk_gate4("dram_phym_root_clk", "dram_phym_cg", base + 0x4130, 0);
> -	clks[IMX7D_DRAM_PHYM_ALT_ROOT_CLK] =
> imx_clk_gate4("dram_phym_alt_root_clk", "dram_phym_alt_post_div", base +
> 0x4130, 0);
> -	clks[IMX7D_DRAM_ALT_ROOT_CLK] = imx_clk_gate4("dram_alt_root_clk",
> "dram_alt_post_div", base + 0x4130, 0);
> +	clks[IMX7D_DRAM_ROOT_CLK] = imx_clk_gate2_flags("dram_root_clk",
> "dram_post_div", base + 0x4130, 0, CLK_IS_CRITICAL |
> CLK_OPS_PARENT_ENABLE);
> +	clks[IMX7D_DRAM_PHYM_ROOT_CLK] =
> imx_clk_gate2_flags("dram_phym_root_clk", "dram_phym_cg", base + 0x4130,
> 0, CLK_IS_CRITICAL | CLK_OPS_PARENT_ENABLE);
> +	clks[IMX7D_DRAM_PHYM_ALT_ROOT_CLK] =
> imx_clk_gate2_flags("dram_phym_alt_root_clk", "dram_phym_alt_post_div",
> base + 0x4130, 0, CLK_IS_CRITICAL | CLK_OPS_PARENT_ENABLE);
> +	clks[IMX7D_DRAM_ALT_ROOT_CLK] =
> +imx_clk_gate2_flags("dram_alt_root_clk", "dram_alt_post_div", base +
> +0x4130, 0, CLK_IS_CRITICAL | CLK_OPS_PARENT_ENABLE);
>  	clks[IMX7D_OCOTP_CLK] = imx_clk_gate4("ocotp_clk", "ipg_root_clk",
> base + 0x4230, 0);
>  	clks[IMX7D_SNVS_CLK] = imx_clk_gate4("snvs_clk", "ipg_root_clk", base +
> 0x4250, 0);
>  	clks[IMX7D_MU_ROOT_CLK] = imx_clk_gate4("mu_root_clk",
> "ipg_root_clk", base + 0x4270, 0); @@ -882,9 +874,6 @@ static void __init
> imx7d_clocks_init(struct device_node *ccm_node)
>  	clk_data.clk_num = ARRAY_SIZE(clks);
>  	of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
> 
> -	for (i = 0; i < ARRAY_SIZE(clks_init_on); i++)
> -		clk_prepare_enable(clks[clks_init_on[i]]);
> -
>  	clk_set_parent(clks[IMX7D_PLL_ARM_MAIN_BYPASS],
> clks[IMX7D_PLL_ARM_MAIN]);
>  	clk_set_parent(clks[IMX7D_PLL_DRAM_MAIN_BYPASS],
> clks[IMX7D_PLL_DRAM_MAIN]);
>  	clk_set_parent(clks[IMX7D_PLL_SYS_MAIN_BYPASS],
> clks[IMX7D_PLL_SYS_MAIN]); diff --git a/drivers/clk/imx/clk.h
> b/drivers/clk/imx/clk.h index 8076ec0..5895e223 100644
> --- a/drivers/clk/imx/clk.h
> +++ b/drivers/clk/imx/clk.h
> @@ -137,6 +137,13 @@ static inline struct clk *imx_clk_gate_dis(const char
> *name, const char *parent,
>  			shift, CLK_GATE_SET_TO_DISABLE, &imx_ccm_lock);  }
> 
> +static inline struct clk *imx_clk_gate_dis_flags(const char *name, const char
> *parent,
> +		void __iomem *reg, u8 shift, unsigned long flags) {
> +	return clk_register_gate(NULL, name, parent, flags |
> CLK_SET_RATE_PARENT, reg,
> +			shift, CLK_GATE_SET_TO_DISABLE, &imx_ccm_lock); }
> +
>  static inline struct clk *imx_clk_gate2(const char *name, const char *parent,
>  		void __iomem *reg, u8 shift)
>  {
> --
> 2.7.4


WARNING: multiple messages have this Message-ID (diff)
From: Peng Fan <peng.fan@nxp.com>
To: Anson Huang <anson.huang@nxp.com>,
	"shawnguo@kernel.org" <shawnguo@kernel.org>,
	"s.hauer@pengutronix.de" <s.hauer@pengutronix.de>,
	"kernel@pengutronix.de" <kernel@pengutronix.de>,
	Fabio Estevam <fabio.estevam@nxp.com>,
	"mturquette@baylibre.com" <mturquette@baylibre.com>,
	"sboyd@kernel.org" <sboyd@kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Rob Herring <robh@kernel.org>
Cc: dl-linux-imx <linux-imx@nxp.com>
Subject: RE: [PATCH 2/2] clk: imx: imx7d: remove clks_init_on array
Date: Wed, 8 Aug 2018 08:48:57 +0000	[thread overview]
Message-ID: <AM0PR04MB4481FC2BAD71B75D7BE84C0788260@AM0PR04MB4481.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <1533703167-26583-2-git-send-email-Anson.Huang@nxp.com>

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5zb24gSHVhbmcNCj4g
U2VudDogMjAxOMTqONTCOMjVIDEyOjM5DQo+IFRvOiBzaGF3bmd1b0BrZXJuZWwub3JnOyBzLmhh
dWVyQHBlbmd1dHJvbml4LmRlOyBrZXJuZWxAcGVuZ3V0cm9uaXguZGU7DQo+IEZhYmlvIEVzdGV2
YW0gPGZhYmlvLmVzdGV2YW1AbnhwLmNvbT47IG10dXJxdWV0dGVAYmF5bGlicmUuY29tOw0KPiBz
Ym95ZEBrZXJuZWwub3JnOyBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7DQo+
IGxpbnV4LWNsa0B2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcN
Cj4gQ2M6IGRsLWxpbnV4LWlteCA8bGludXgtaW14QG54cC5jb20+DQo+IFN1YmplY3Q6IFtQQVRD
SCAyLzJdIGNsazogaW14OiBpbXg3ZDogcmVtb3ZlIGNsa3NfaW5pdF9vbiBhcnJheQ0KPiANCj4g
Q2xvY2sgZnJhbWV3b3JrIHdpbGwgZW5hYmxlIHRob3NlIGNsb2NrcyByZWdpc3RlcmVkIHdpdGgg
Q0xLX0lTX0NSSVRJQ0FMIGZsYWcsDQo+IHNvIG5vIG5lZWQgdG8gaGF2ZSBjbGtzX2luaXRfb24g
YXJyYXkgZHVyaW5nIGNsb2NrIGluaXRpYWxpemF0aW9uIG5vdy4NCg0KV2lsbCBpdCBiZSBtb3Jl
IGZsZXhpYmxlIHRvIHBhcnNlIGR0cyBzYXlpbmcgImNyaXRpY2FsLWNsb2NrcyA9IDx4eHg+IiBv
ciAiaW5pdC1vbi1hcnJhcnk9PHh4eD4iDQphbmQgZW5hYmxlIHRob3NlIGNsb2Nrcz8NCg0KUmVn
YXJkcywNClBlbmcuDQoNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFuc29uIEh1YW5nIDxBbnNvbi5I
dWFuZ0BueHAuY29tPg0KPiAtLS0NCj4gIGRyaXZlcnMvY2xrL2lteC9jbGstaW14N2QuYyB8IDI3
ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgZHJpdmVycy9jbGsvaW14L2Nsay5oICAg
ICAgIHwgIDcgKysrKysrKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAx
OSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9pbXgvY2xrLWlt
eDdkLmMgYi9kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDdkLmMgaW5kZXgNCj4gYzQ1MThkNy4uMDc2
NDYwYiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9jbGsvaW14L2Nsay1pbXg3ZC5jDQo+ICsrKyBi
L2RyaXZlcnMvY2xrL2lteC9jbGstaW14N2QuYw0KPiBAQCAtMzc5LDEzICszNzksNiBAQCBzdGF0
aWMgY29uc3QgY2hhciAqcGxsX2VuZXRfYnlwYXNzX3NlbFtdID0NCj4geyAicGxsX2VuZXRfbWFp
biIsICJwbGxfZW5ldF9tYWluX3NyYyAgc3RhdGljIGNvbnN0IGNoYXINCj4gKnBsbF9hdWRpb19i
eXBhc3Nfc2VsW10gPSB7ICJwbGxfYXVkaW9fbWFpbiIsICJwbGxfYXVkaW9fbWFpbl9zcmMiLCB9
OyAgc3RhdGljDQo+IGNvbnN0IGNoYXIgKnBsbF92aWRlb19ieXBhc3Nfc2VsW10gPSB7ICJwbGxf
dmlkZW9fbWFpbiIsICJwbGxfdmlkZW9fbWFpbl9zcmMiLCB9Ow0KPiANCj4gLXN0YXRpYyBpbnQg
Y29uc3QgY2xrc19pbml0X29uW10gX19pbml0Y29uc3QgPSB7DQo+IC0JSU1YN0RfQVJNX0E3X1JP
T1RfQ0xLLCBJTVg3RF9NQUlOX0FYSV9ST09UX0NMSywNCj4gLQlJTVg3RF9QTExfU1lTX01BSU5f
NDgwTV9DTEssIElNWDdEX0lQR19ST09UX0NMSywNCj4gLQlJTVg3RF9EUkFNX1BIWU1fUk9PVF9D
TEssIElNWDdEX0RSQU1fUk9PVF9DTEssDQo+IC0JSU1YN0RfRFJBTV9QSFlNX0FMVF9ST09UX0NM
SywgSU1YN0RfRFJBTV9BTFRfUk9PVF9DTEssDQo+IC19Ow0KPiAtDQo+ICBzdGF0aWMgc3RydWN0
IGNsa19vbmVjZWxsX2RhdGEgY2xrX2RhdGE7DQo+IA0KPiAgc3RhdGljIHN0cnVjdCBjbGsgKiog
Y29uc3QgdWFydF9jbGtzW10gX19pbml0Y29uc3QgPSB7IEBAIC00MDMsNyArMzk2LDYgQEANCj4g
c3RhdGljIHZvaWQgX19pbml0IGlteDdkX2Nsb2Nrc19pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAq
Y2NtX25vZGUpICB7DQo+ICAJc3RydWN0IGRldmljZV9ub2RlICpucDsNCj4gIAl2b2lkIF9faW9t
ZW0gKmJhc2U7DQo+IC0JaW50IGk7DQo+IA0KPiAgCWNsa3NbSU1YN0RfQ0xLX0RVTU1ZXSA9IGlt
eF9jbGtfZml4ZWQoImR1bW15IiwgMCk7DQo+ICAJY2xrc1tJTVg3RF9PU0NfMjRNX0NMS10gPSBv
Zl9jbGtfZ2V0X2J5X25hbWUoY2NtX25vZGUsICJvc2MiKTsgQEANCj4gLTQ2Niw3ICs0NTgsNyBA
QCBzdGF0aWMgdm9pZCBfX2luaXQgaW14N2RfY2xvY2tzX2luaXQoc3RydWN0IGRldmljZV9ub2Rl
DQo+ICpjY21fbm9kZSkNCj4gIAljbGtzW0lNWDdEX1BMTF9TWVNfTUFJTl8xMjBNXSA9DQo+IGlt
eF9jbGtfZml4ZWRfZmFjdG9yKCJwbGxfc3lzX21haW5fMTIwbSIsICJwbGxfc3lzX21haW5fY2xr
IiwgMSwgNCk7DQo+ICAJY2xrc1tJTVg3RF9QTExfRFJBTV9NQUlOXzUzM01dID0NCj4gaW14X2Ns
a19maXhlZF9mYWN0b3IoInBsbF9kcmFtXzUzM20iLCAicGxsX2RyYW1fbWFpbl9jbGsiLCAxLCAy
KTsNCj4gDQo+IC0JY2xrc1tJTVg3RF9QTExfU1lTX01BSU5fNDgwTV9DTEtdID0NCj4gaW14X2Ns
a19nYXRlX2RpcygicGxsX3N5c19tYWluXzQ4MG1fY2xrIiwgInBsbF9zeXNfbWFpbl80ODBtIiwg
YmFzZSArIDB4YjAsDQo+IDQpOw0KPiArCWNsa3NbSU1YN0RfUExMX1NZU19NQUlOXzQ4ME1fQ0xL
XSA9DQo+ICtpbXhfY2xrX2dhdGVfZGlzX2ZsYWdzKCJwbGxfc3lzX21haW5fNDgwbV9jbGsiLCAi
cGxsX3N5c19tYWluXzQ4MG0iLA0KPiArYmFzZSArIDB4YjAsIDQsIENMS19JU19DUklUSUNBTCk7
DQo+ICAJY2xrc1tJTVg3RF9QTExfU1lTX01BSU5fMjQwTV9DTEtdID0NCj4gaW14X2Nsa19nYXRl
X2RpcygicGxsX3N5c19tYWluXzI0MG1fY2xrIiwgInBsbF9zeXNfbWFpbl8yNDBtIiwgYmFzZSAr
IDB4YjAsDQo+IDUpOw0KPiAgCWNsa3NbSU1YN0RfUExMX1NZU19NQUlOXzEyME1fQ0xLXSA9DQo+
IGlteF9jbGtfZ2F0ZV9kaXMoInBsbF9zeXNfbWFpbl8xMjBtX2NsayIsICJwbGxfc3lzX21haW5f
MTIwbSIsIGJhc2UgKyAweGIwLA0KPiA2KTsNCj4gIAljbGtzW0lNWDdEX1BMTF9EUkFNX01BSU5f
NTMzTV9DTEtdID0NCj4gaW14X2Nsa19nYXRlKCJwbGxfZHJhbV81MzNtX2NsayIsICJwbGxfZHJh
bV81MzNtIiwgYmFzZSArIDB4NzAsIDEyKTsgQEANCj4gLTcxOSw3ICs3MTEsNyBAQCBzdGF0aWMg
dm9pZCBfX2luaXQgaW14N2RfY2xvY2tzX2luaXQoc3RydWN0IGRldmljZV9ub2RlDQo+ICpjY21f
bm9kZSkNCj4gIAljbGtzW0lNWDdEX0VORVRfQVhJX1JPT1RfRElWXSA9DQo+IGlteF9jbGtfZGl2
aWRlcjIoImVuZXRfYXhpX3Bvc3RfZGl2IiwgImVuZXRfYXhpX3ByZV9kaXYiLCBiYXNlICsgMHg4
OTAwLCAwLCA2KTsNCj4gIAljbGtzW0lNWDdEX05BTkRfVVNESENfQlVTX1JPT1RfQ0xLXSA9DQo+
IGlteF9jbGtfZGl2aWRlcjIoIm5hbmRfdXNkaGNfcm9vdF9jbGsiLCAibmFuZF91c2RoY19wcmVf
ZGl2IiwgYmFzZSArDQo+IDB4ODk4MCwgMCwgNik7DQo+ICAJY2xrc1tJTVg3RF9BSEJfQ0hBTk5F
TF9ST09UX0RJVl0gPQ0KPiBpbXhfY2xrX2RpdmlkZXIyKCJhaGJfcm9vdF9jbGsiLCAiYWhiX3By
ZV9kaXYiLCBiYXNlICsgMHg5MDAwLCAwLCA2KTsNCj4gLQljbGtzW0lNWDdEX0lQR19ST09UX0NM
S10gPSBpbXhfY2xrX2RpdmlkZXIyKCJpcGdfcm9vdF9jbGsiLA0KPiAiYWhiX3Jvb3RfY2xrIiwg
YmFzZSArIDB4OTA4MCwgMCwgMik7DQo+ICsJY2xrc1tJTVg3RF9JUEdfUk9PVF9DTEtdID0gaW14
X2Nsa19kaXZpZGVyX2ZsYWdzKCJpcGdfcm9vdF9jbGsiLA0KPiArImFoYl9yb290X2NsayIsIGJh
c2UgKyAweDkwODAsIDAsIDIsIENMS19JU19DUklUSUNBTCB8DQo+ICtDTEtfT1BTX1BBUkVOVF9F
TkFCTEUgfCBDTEtfU0VUX1JBVEVfUEFSRU5UKTsNCj4gIAljbGtzW0lNWDdEX0RSQU1fUk9PVF9E
SVZdID0gaW14X2Nsa19kaXZpZGVyMigiZHJhbV9wb3N0X2RpdiIsDQo+ICJkcmFtX2NnIiwgYmFz
ZSArIDB4OTg4MCwgMCwgMyk7DQo+ICAJY2xrc1tJTVg3RF9EUkFNX1BIWU1fQUxUX1JPT1RfRElW
XSA9DQo+IGlteF9jbGtfZGl2aWRlcjIoImRyYW1fcGh5bV9hbHRfcG9zdF9kaXYiLCAiZHJhbV9w
aHltX2FsdF9wcmVfZGl2IiwgYmFzZQ0KPiArIDB4YTAwMCwgMCwgMyk7DQo+ICAJY2xrc1tJTVg3
RF9EUkFNX0FMVF9ST09UX0RJVl0gPQ0KPiBpbXhfY2xrX2RpdmlkZXIyKCJkcmFtX2FsdF9wb3N0
X2RpdiIsICJkcmFtX2FsdF9wcmVfZGl2IiwgYmFzZSArIDB4YTA4MCwgMCwNCj4gMyk7IEBAIC03
ODMsMTcgKzc3NSwxNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgaW14N2RfY2xvY2tzX2luaXQoc3Ry
dWN0DQo+IGRldmljZV9ub2RlICpjY21fbm9kZSkNCj4gIAljbGtzW0lNWDdEX0NMS08xX1JPT1Rf
RElWXSA9IGlteF9jbGtfZGl2aWRlcjIoImNsa28xX3Bvc3RfZGl2IiwNCj4gImNsa28xX3ByZV9k
aXYiLCBiYXNlICsgMHhiZDgwLCAwLCA2KTsNCj4gIAljbGtzW0lNWDdEX0NMS08yX1JPT1RfRElW
XSA9IGlteF9jbGtfZGl2aWRlcjIoImNsa28yX3Bvc3RfZGl2IiwNCj4gImNsa28yX3ByZV9kaXYi
LCBiYXNlICsgMHhiZTAwLCAwLCA2KTsNCj4gDQo+IC0JY2xrc1tJTVg3RF9BUk1fQTdfUk9PVF9D
TEtdID0gaW14X2Nsa19nYXRlNCgiYXJtX2E3X3Jvb3RfY2xrIiwNCj4gImFybV9hN19kaXYiLCBi
YXNlICsgMHg0MDAwLCAwKTsNCj4gKwljbGtzW0lNWDdEX0FSTV9BN19ST09UX0NMS10gPQ0KPiBp
bXhfY2xrX2dhdGUyX2ZsYWdzKCJhcm1fYTdfcm9vdF9jbGsiLA0KPiArImFybV9hN19kaXYiLCBi
YXNlICsgMHg0MDAwLCAwLCBDTEtfSVNfQ1JJVElDQUwgfA0KPiArQ0xLX09QU19QQVJFTlRfRU5B
QkxFKTsNCj4gIAljbGtzW0lNWDdEX0FSTV9NNF9ST09UX0NMS10gPSBpbXhfY2xrX2dhdGU0KCJh
cm1fbTRfcm9vdF9jbGsiLA0KPiAiYXJtX200X2RpdiIsIGJhc2UgKyAweDQwMTAsIDApOw0KPiAt
CWNsa3NbSU1YN0RfTUFJTl9BWElfUk9PVF9DTEtdID0gaW14X2Nsa19nYXRlNCgibWFpbl9heGlf
cm9vdF9jbGsiLA0KPiAiYXhpX3Bvc3RfZGl2IiwgYmFzZSArIDB4NDA0MCwgMCk7DQo+ICsJY2xr
c1tJTVg3RF9NQUlOX0FYSV9ST09UX0NMS10gPQ0KPiAraW14X2Nsa19nYXRlMl9mbGFncygibWFp
bl9heGlfcm9vdF9jbGsiLCAiYXhpX3Bvc3RfZGl2IiwgYmFzZSArIDB4NDA0MCwNCj4gKzAsIENM
S19JU19DUklUSUNBTCB8IENMS19PUFNfUEFSRU5UX0VOQUJMRSk7DQo+ICAJY2xrc1tJTVg3RF9E
SVNQX0FYSV9ST09UX0NMS10gPSBpbXhfY2xrX2dhdGU0KCJkaXNwX2F4aV9yb290X2NsayIsDQo+
ICJkaXNwX2F4aV9wb3N0X2RpdiIsIGJhc2UgKyAweDQwNTAsIDApOw0KPiAgCWNsa3NbSU1YN0Rf
RU5FVF9BWElfUk9PVF9DTEtdID0gaW14X2Nsa19nYXRlNCgiZW5ldF9heGlfcm9vdF9jbGsiLA0K
PiAiZW5ldF9heGlfcG9zdF9kaXYiLCBiYXNlICsgMHg0MDYwLCAwKTsNCj4gIAljbGtzW0lNWDdE
X09DUkFNX0NMS10gPSBpbXhfY2xrX2dhdGU0KCJvY3JhbV9jbGsiLA0KPiAibWFpbl9heGlfcm9v
dF9jbGsiLCBiYXNlICsgMHg0MTEwLCAwKTsNCj4gIAljbGtzW0lNWDdEX09DUkFNX1NfQ0xLXSA9
IGlteF9jbGtfZ2F0ZTQoIm9jcmFtX3NfY2xrIiwNCj4gImFoYl9yb290X2NsayIsIGJhc2UgKyAw
eDQxMjAsIDApOw0KPiAtCWNsa3NbSU1YN0RfRFJBTV9ST09UX0NMS10gPSBpbXhfY2xrX2dhdGU0
KCJkcmFtX3Jvb3RfY2xrIiwNCj4gImRyYW1fcG9zdF9kaXYiLCBiYXNlICsgMHg0MTMwLCAwKTsN
Cj4gLQljbGtzW0lNWDdEX0RSQU1fUEhZTV9ST09UX0NMS10gPQ0KPiBpbXhfY2xrX2dhdGU0KCJk
cmFtX3BoeW1fcm9vdF9jbGsiLCAiZHJhbV9waHltX2NnIiwgYmFzZSArIDB4NDEzMCwgMCk7DQo+
IC0JY2xrc1tJTVg3RF9EUkFNX1BIWU1fQUxUX1JPT1RfQ0xLXSA9DQo+IGlteF9jbGtfZ2F0ZTQo
ImRyYW1fcGh5bV9hbHRfcm9vdF9jbGsiLCAiZHJhbV9waHltX2FsdF9wb3N0X2RpdiIsIGJhc2Ug
Kw0KPiAweDQxMzAsIDApOw0KPiAtCWNsa3NbSU1YN0RfRFJBTV9BTFRfUk9PVF9DTEtdID0gaW14
X2Nsa19nYXRlNCgiZHJhbV9hbHRfcm9vdF9jbGsiLA0KPiAiZHJhbV9hbHRfcG9zdF9kaXYiLCBi
YXNlICsgMHg0MTMwLCAwKTsNCj4gKwljbGtzW0lNWDdEX0RSQU1fUk9PVF9DTEtdID0gaW14X2Ns
a19nYXRlMl9mbGFncygiZHJhbV9yb290X2NsayIsDQo+ICJkcmFtX3Bvc3RfZGl2IiwgYmFzZSAr
IDB4NDEzMCwgMCwgQ0xLX0lTX0NSSVRJQ0FMIHwNCj4gQ0xLX09QU19QQVJFTlRfRU5BQkxFKTsN
Cj4gKwljbGtzW0lNWDdEX0RSQU1fUEhZTV9ST09UX0NMS10gPQ0KPiBpbXhfY2xrX2dhdGUyX2Zs
YWdzKCJkcmFtX3BoeW1fcm9vdF9jbGsiLCAiZHJhbV9waHltX2NnIiwgYmFzZSArIDB4NDEzMCwN
Cj4gMCwgQ0xLX0lTX0NSSVRJQ0FMIHwgQ0xLX09QU19QQVJFTlRfRU5BQkxFKTsNCj4gKwljbGtz
W0lNWDdEX0RSQU1fUEhZTV9BTFRfUk9PVF9DTEtdID0NCj4gaW14X2Nsa19nYXRlMl9mbGFncygi
ZHJhbV9waHltX2FsdF9yb290X2NsayIsICJkcmFtX3BoeW1fYWx0X3Bvc3RfZGl2IiwNCj4gYmFz
ZSArIDB4NDEzMCwgMCwgQ0xLX0lTX0NSSVRJQ0FMIHwgQ0xLX09QU19QQVJFTlRfRU5BQkxFKTsN
Cj4gKwljbGtzW0lNWDdEX0RSQU1fQUxUX1JPT1RfQ0xLXSA9DQo+ICtpbXhfY2xrX2dhdGUyX2Zs
YWdzKCJkcmFtX2FsdF9yb290X2NsayIsICJkcmFtX2FsdF9wb3N0X2RpdiIsIGJhc2UgKw0KPiAr
MHg0MTMwLCAwLCBDTEtfSVNfQ1JJVElDQUwgfCBDTEtfT1BTX1BBUkVOVF9FTkFCTEUpOw0KPiAg
CWNsa3NbSU1YN0RfT0NPVFBfQ0xLXSA9IGlteF9jbGtfZ2F0ZTQoIm9jb3RwX2NsayIsICJpcGdf
cm9vdF9jbGsiLA0KPiBiYXNlICsgMHg0MjMwLCAwKTsNCj4gIAljbGtzW0lNWDdEX1NOVlNfQ0xL
XSA9IGlteF9jbGtfZ2F0ZTQoInNudnNfY2xrIiwgImlwZ19yb290X2NsayIsIGJhc2UgKw0KPiAw
eDQyNTAsIDApOw0KPiAgCWNsa3NbSU1YN0RfTVVfUk9PVF9DTEtdID0gaW14X2Nsa19nYXRlNCgi
bXVfcm9vdF9jbGsiLA0KPiAiaXBnX3Jvb3RfY2xrIiwgYmFzZSArIDB4NDI3MCwgMCk7IEBAIC04
ODIsOSArODc0LDYgQEAgc3RhdGljIHZvaWQgX19pbml0DQo+IGlteDdkX2Nsb2Nrc19pbml0KHN0
cnVjdCBkZXZpY2Vfbm9kZSAqY2NtX25vZGUpDQo+ICAJY2xrX2RhdGEuY2xrX251bSA9IEFSUkFZ
X1NJWkUoY2xrcyk7DQo+ICAJb2ZfY2xrX2FkZF9wcm92aWRlcihucCwgb2ZfY2xrX3NyY19vbmVj
ZWxsX2dldCwgJmNsa19kYXRhKTsNCj4gDQo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo
Y2xrc19pbml0X29uKTsgaSsrKQ0KPiAtCQljbGtfcHJlcGFyZV9lbmFibGUoY2xrc1tjbGtzX2lu
aXRfb25baV1dKTsNCj4gLQ0KPiAgCWNsa19zZXRfcGFyZW50KGNsa3NbSU1YN0RfUExMX0FSTV9N
QUlOX0JZUEFTU10sDQo+IGNsa3NbSU1YN0RfUExMX0FSTV9NQUlOXSk7DQo+ICAJY2xrX3NldF9w
YXJlbnQoY2xrc1tJTVg3RF9QTExfRFJBTV9NQUlOX0JZUEFTU10sDQo+IGNsa3NbSU1YN0RfUExM
X0RSQU1fTUFJTl0pOw0KPiAgCWNsa19zZXRfcGFyZW50KGNsa3NbSU1YN0RfUExMX1NZU19NQUlO
X0JZUEFTU10sDQo+IGNsa3NbSU1YN0RfUExMX1NZU19NQUlOXSk7IGRpZmYgLS1naXQgYS9kcml2
ZXJzL2Nsay9pbXgvY2xrLmgNCj4gYi9kcml2ZXJzL2Nsay9pbXgvY2xrLmggaW5kZXggODA3NmVj
MC4uNTg5NWUyMjMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvY2xrL2lteC9jbGsuaA0KPiArKysg
Yi9kcml2ZXJzL2Nsay9pbXgvY2xrLmgNCj4gQEAgLTEzNyw2ICsxMzcsMTMgQEAgc3RhdGljIGlu
bGluZSBzdHJ1Y3QgY2xrICppbXhfY2xrX2dhdGVfZGlzKGNvbnN0IGNoYXINCj4gKm5hbWUsIGNv
bnN0IGNoYXIgKnBhcmVudCwNCj4gIAkJCXNoaWZ0LCBDTEtfR0FURV9TRVRfVE9fRElTQUJMRSwg
JmlteF9jY21fbG9jayk7ICB9DQo+IA0KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgY2xrICppbXhf
Y2xrX2dhdGVfZGlzX2ZsYWdzKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXINCj4gKnBhcmVu
dCwNCj4gKwkJdm9pZCBfX2lvbWVtICpyZWcsIHU4IHNoaWZ0LCB1bnNpZ25lZCBsb25nIGZsYWdz
KSB7DQo+ICsJcmV0dXJuIGNsa19yZWdpc3Rlcl9nYXRlKE5VTEwsIG5hbWUsIHBhcmVudCwgZmxh
Z3MgfA0KPiBDTEtfU0VUX1JBVEVfUEFSRU5ULCByZWcsDQo+ICsJCQlzaGlmdCwgQ0xLX0dBVEVf
U0VUX1RPX0RJU0FCTEUsICZpbXhfY2NtX2xvY2spOyB9DQo+ICsNCj4gIHN0YXRpYyBpbmxpbmUg
c3RydWN0IGNsayAqaW14X2Nsa19nYXRlMihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpw
YXJlbnQsDQo+ICAJCXZvaWQgX19pb21lbSAqcmVnLCB1OCBzaGlmdCkNCj4gIHsNCj4gLS0NCj4g
Mi43LjQNCg0K

WARNING: multiple messages have this Message-ID (diff)
From: peng.fan@nxp.com (Peng Fan)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/2] clk: imx: imx7d: remove clks_init_on array
Date: Wed, 8 Aug 2018 08:48:57 +0000	[thread overview]
Message-ID: <AM0PR04MB4481FC2BAD71B75D7BE84C0788260@AM0PR04MB4481.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <1533703167-26583-2-git-send-email-Anson.Huang@nxp.com>



> -----Original Message-----
> From: Anson Huang
> Sent: 2018?8?8? 12:39
> To: shawnguo at kernel.org; s.hauer at pengutronix.de; kernel at pengutronix.de;
> Fabio Estevam <fabio.estevam@nxp.com>; mturquette at baylibre.com;
> sboyd at kernel.org; linux-arm-kernel at lists.infradead.org;
> linux-clk at vger.kernel.org; linux-kernel at vger.kernel.org
> Cc: dl-linux-imx <linux-imx@nxp.com>
> Subject: [PATCH 2/2] clk: imx: imx7d: remove clks_init_on array
> 
> Clock framework will enable those clocks registered with CLK_IS_CRITICAL flag,
> so no need to have clks_init_on array during clock initialization now.

Will it be more flexible to parse dts saying "critical-clocks = <xxx>" or "init-on-arrary=<xxx>"
and enable those clocks?

Regards,
Peng.

> 
> Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> ---
>  drivers/clk/imx/clk-imx7d.c | 27 ++++++++-------------------
>  drivers/clk/imx/clk.h       |  7 +++++++
>  2 files changed, 15 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/clk/imx/clk-imx7d.c b/drivers/clk/imx/clk-imx7d.c index
> c4518d7..076460b 100644
> --- a/drivers/clk/imx/clk-imx7d.c
> +++ b/drivers/clk/imx/clk-imx7d.c
> @@ -379,13 +379,6 @@ static const char *pll_enet_bypass_sel[] =
> { "pll_enet_main", "pll_enet_main_src  static const char
> *pll_audio_bypass_sel[] = { "pll_audio_main", "pll_audio_main_src", };  static
> const char *pll_video_bypass_sel[] = { "pll_video_main", "pll_video_main_src", };
> 
> -static int const clks_init_on[] __initconst = {
> -	IMX7D_ARM_A7_ROOT_CLK, IMX7D_MAIN_AXI_ROOT_CLK,
> -	IMX7D_PLL_SYS_MAIN_480M_CLK, IMX7D_IPG_ROOT_CLK,
> -	IMX7D_DRAM_PHYM_ROOT_CLK, IMX7D_DRAM_ROOT_CLK,
> -	IMX7D_DRAM_PHYM_ALT_ROOT_CLK, IMX7D_DRAM_ALT_ROOT_CLK,
> -};
> -
>  static struct clk_onecell_data clk_data;
> 
>  static struct clk ** const uart_clks[] __initconst = { @@ -403,7 +396,6 @@
> static void __init imx7d_clocks_init(struct device_node *ccm_node)  {
>  	struct device_node *np;
>  	void __iomem *base;
> -	int i;
> 
>  	clks[IMX7D_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
>  	clks[IMX7D_OSC_24M_CLK] = of_clk_get_by_name(ccm_node, "osc"); @@
> -466,7 +458,7 @@ static void __init imx7d_clocks_init(struct device_node
> *ccm_node)
>  	clks[IMX7D_PLL_SYS_MAIN_120M] =
> imx_clk_fixed_factor("pll_sys_main_120m", "pll_sys_main_clk", 1, 4);
>  	clks[IMX7D_PLL_DRAM_MAIN_533M] =
> imx_clk_fixed_factor("pll_dram_533m", "pll_dram_main_clk", 1, 2);
> 
> -	clks[IMX7D_PLL_SYS_MAIN_480M_CLK] =
> imx_clk_gate_dis("pll_sys_main_480m_clk", "pll_sys_main_480m", base + 0xb0,
> 4);
> +	clks[IMX7D_PLL_SYS_MAIN_480M_CLK] =
> +imx_clk_gate_dis_flags("pll_sys_main_480m_clk", "pll_sys_main_480m",
> +base + 0xb0, 4, CLK_IS_CRITICAL);
>  	clks[IMX7D_PLL_SYS_MAIN_240M_CLK] =
> imx_clk_gate_dis("pll_sys_main_240m_clk", "pll_sys_main_240m", base + 0xb0,
> 5);
>  	clks[IMX7D_PLL_SYS_MAIN_120M_CLK] =
> imx_clk_gate_dis("pll_sys_main_120m_clk", "pll_sys_main_120m", base + 0xb0,
> 6);
>  	clks[IMX7D_PLL_DRAM_MAIN_533M_CLK] =
> imx_clk_gate("pll_dram_533m_clk", "pll_dram_533m", base + 0x70, 12); @@
> -719,7 +711,7 @@ static void __init imx7d_clocks_init(struct device_node
> *ccm_node)
>  	clks[IMX7D_ENET_AXI_ROOT_DIV] =
> imx_clk_divider2("enet_axi_post_div", "enet_axi_pre_div", base + 0x8900, 0, 6);
>  	clks[IMX7D_NAND_USDHC_BUS_ROOT_CLK] =
> imx_clk_divider2("nand_usdhc_root_clk", "nand_usdhc_pre_div", base +
> 0x8980, 0, 6);
>  	clks[IMX7D_AHB_CHANNEL_ROOT_DIV] =
> imx_clk_divider2("ahb_root_clk", "ahb_pre_div", base + 0x9000, 0, 6);
> -	clks[IMX7D_IPG_ROOT_CLK] = imx_clk_divider2("ipg_root_clk",
> "ahb_root_clk", base + 0x9080, 0, 2);
> +	clks[IMX7D_IPG_ROOT_CLK] = imx_clk_divider_flags("ipg_root_clk",
> +"ahb_root_clk", base + 0x9080, 0, 2, CLK_IS_CRITICAL |
> +CLK_OPS_PARENT_ENABLE | CLK_SET_RATE_PARENT);
>  	clks[IMX7D_DRAM_ROOT_DIV] = imx_clk_divider2("dram_post_div",
> "dram_cg", base + 0x9880, 0, 3);
>  	clks[IMX7D_DRAM_PHYM_ALT_ROOT_DIV] =
> imx_clk_divider2("dram_phym_alt_post_div", "dram_phym_alt_pre_div", base
> + 0xa000, 0, 3);
>  	clks[IMX7D_DRAM_ALT_ROOT_DIV] =
> imx_clk_divider2("dram_alt_post_div", "dram_alt_pre_div", base + 0xa080, 0,
> 3); @@ -783,17 +775,17 @@ static void __init imx7d_clocks_init(struct
> device_node *ccm_node)
>  	clks[IMX7D_CLKO1_ROOT_DIV] = imx_clk_divider2("clko1_post_div",
> "clko1_pre_div", base + 0xbd80, 0, 6);
>  	clks[IMX7D_CLKO2_ROOT_DIV] = imx_clk_divider2("clko2_post_div",
> "clko2_pre_div", base + 0xbe00, 0, 6);
> 
> -	clks[IMX7D_ARM_A7_ROOT_CLK] = imx_clk_gate4("arm_a7_root_clk",
> "arm_a7_div", base + 0x4000, 0);
> +	clks[IMX7D_ARM_A7_ROOT_CLK] =
> imx_clk_gate2_flags("arm_a7_root_clk",
> +"arm_a7_div", base + 0x4000, 0, CLK_IS_CRITICAL |
> +CLK_OPS_PARENT_ENABLE);
>  	clks[IMX7D_ARM_M4_ROOT_CLK] = imx_clk_gate4("arm_m4_root_clk",
> "arm_m4_div", base + 0x4010, 0);
> -	clks[IMX7D_MAIN_AXI_ROOT_CLK] = imx_clk_gate4("main_axi_root_clk",
> "axi_post_div", base + 0x4040, 0);
> +	clks[IMX7D_MAIN_AXI_ROOT_CLK] =
> +imx_clk_gate2_flags("main_axi_root_clk", "axi_post_div", base + 0x4040,
> +0, CLK_IS_CRITICAL | CLK_OPS_PARENT_ENABLE);
>  	clks[IMX7D_DISP_AXI_ROOT_CLK] = imx_clk_gate4("disp_axi_root_clk",
> "disp_axi_post_div", base + 0x4050, 0);
>  	clks[IMX7D_ENET_AXI_ROOT_CLK] = imx_clk_gate4("enet_axi_root_clk",
> "enet_axi_post_div", base + 0x4060, 0);
>  	clks[IMX7D_OCRAM_CLK] = imx_clk_gate4("ocram_clk",
> "main_axi_root_clk", base + 0x4110, 0);
>  	clks[IMX7D_OCRAM_S_CLK] = imx_clk_gate4("ocram_s_clk",
> "ahb_root_clk", base + 0x4120, 0);
> -	clks[IMX7D_DRAM_ROOT_CLK] = imx_clk_gate4("dram_root_clk",
> "dram_post_div", base + 0x4130, 0);
> -	clks[IMX7D_DRAM_PHYM_ROOT_CLK] =
> imx_clk_gate4("dram_phym_root_clk", "dram_phym_cg", base + 0x4130, 0);
> -	clks[IMX7D_DRAM_PHYM_ALT_ROOT_CLK] =
> imx_clk_gate4("dram_phym_alt_root_clk", "dram_phym_alt_post_div", base +
> 0x4130, 0);
> -	clks[IMX7D_DRAM_ALT_ROOT_CLK] = imx_clk_gate4("dram_alt_root_clk",
> "dram_alt_post_div", base + 0x4130, 0);
> +	clks[IMX7D_DRAM_ROOT_CLK] = imx_clk_gate2_flags("dram_root_clk",
> "dram_post_div", base + 0x4130, 0, CLK_IS_CRITICAL |
> CLK_OPS_PARENT_ENABLE);
> +	clks[IMX7D_DRAM_PHYM_ROOT_CLK] =
> imx_clk_gate2_flags("dram_phym_root_clk", "dram_phym_cg", base + 0x4130,
> 0, CLK_IS_CRITICAL | CLK_OPS_PARENT_ENABLE);
> +	clks[IMX7D_DRAM_PHYM_ALT_ROOT_CLK] =
> imx_clk_gate2_flags("dram_phym_alt_root_clk", "dram_phym_alt_post_div",
> base + 0x4130, 0, CLK_IS_CRITICAL | CLK_OPS_PARENT_ENABLE);
> +	clks[IMX7D_DRAM_ALT_ROOT_CLK] =
> +imx_clk_gate2_flags("dram_alt_root_clk", "dram_alt_post_div", base +
> +0x4130, 0, CLK_IS_CRITICAL | CLK_OPS_PARENT_ENABLE);
>  	clks[IMX7D_OCOTP_CLK] = imx_clk_gate4("ocotp_clk", "ipg_root_clk",
> base + 0x4230, 0);
>  	clks[IMX7D_SNVS_CLK] = imx_clk_gate4("snvs_clk", "ipg_root_clk", base +
> 0x4250, 0);
>  	clks[IMX7D_MU_ROOT_CLK] = imx_clk_gate4("mu_root_clk",
> "ipg_root_clk", base + 0x4270, 0); @@ -882,9 +874,6 @@ static void __init
> imx7d_clocks_init(struct device_node *ccm_node)
>  	clk_data.clk_num = ARRAY_SIZE(clks);
>  	of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
> 
> -	for (i = 0; i < ARRAY_SIZE(clks_init_on); i++)
> -		clk_prepare_enable(clks[clks_init_on[i]]);
> -
>  	clk_set_parent(clks[IMX7D_PLL_ARM_MAIN_BYPASS],
> clks[IMX7D_PLL_ARM_MAIN]);
>  	clk_set_parent(clks[IMX7D_PLL_DRAM_MAIN_BYPASS],
> clks[IMX7D_PLL_DRAM_MAIN]);
>  	clk_set_parent(clks[IMX7D_PLL_SYS_MAIN_BYPASS],
> clks[IMX7D_PLL_SYS_MAIN]); diff --git a/drivers/clk/imx/clk.h
> b/drivers/clk/imx/clk.h index 8076ec0..5895e223 100644
> --- a/drivers/clk/imx/clk.h
> +++ b/drivers/clk/imx/clk.h
> @@ -137,6 +137,13 @@ static inline struct clk *imx_clk_gate_dis(const char
> *name, const char *parent,
>  			shift, CLK_GATE_SET_TO_DISABLE, &imx_ccm_lock);  }
> 
> +static inline struct clk *imx_clk_gate_dis_flags(const char *name, const char
> *parent,
> +		void __iomem *reg, u8 shift, unsigned long flags) {
> +	return clk_register_gate(NULL, name, parent, flags |
> CLK_SET_RATE_PARENT, reg,
> +			shift, CLK_GATE_SET_TO_DISABLE, &imx_ccm_lock); }
> +
>  static inline struct clk *imx_clk_gate2(const char *name, const char *parent,
>  		void __iomem *reg, u8 shift)
>  {
> --
> 2.7.4

  reply	other threads:[~2018-08-08  8:49 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-08  4:39 [PATCH 1/2] clk: imx: imx7d: remove unnecessary clocks from clks_init_on array Anson Huang
2018-08-08  4:39 ` Anson Huang
2018-08-08  4:39 ` [PATCH 2/2] clk: imx: imx7d: remove " Anson Huang
2018-08-08  4:39   ` Anson Huang
2018-08-08  8:48   ` Peng Fan [this message]
2018-08-08  8:48     ` Peng Fan
2018-08-08  8:48     ` Peng Fan
2018-08-08  9:00     ` Anson Huang
2018-08-08  9:00       ` Anson Huang
2018-08-08  9:00       ` Anson Huang
2018-08-13  1:15       ` Peng Fan
2018-08-13  1:15         ` Peng Fan
2018-08-13  1:15         ` Peng Fan
2018-08-14  7:31         ` Anson Huang
2018-08-14  7:31           ` Anson Huang
2018-08-14  7:31           ` Anson Huang
2018-08-31  1:29         ` Stephen Boyd
2018-08-31  1:29           ` Stephen Boyd
2018-08-31  1:29           ` Stephen Boyd
2018-08-31  1:40           ` Anson Huang
2018-08-31  1:40             ` Anson Huang
2018-08-31  1:40             ` Anson Huang
2018-08-31  8:01           ` Jerome Forissier
2018-08-31  8:01             ` Jerome Forissier
2018-08-31  8:01             ` Jerome Forissier
2018-08-31 17:57             ` Stephen Boyd
2018-08-31 17:57               ` Stephen Boyd
2018-08-31 17:57               ` Stephen Boyd
2018-09-03  7:20               ` Anson Huang
2018-09-03  7:20                 ` Anson Huang
2018-09-03  7:20                 ` Anson Huang
2018-09-10  9:18                 ` Anson Huang
2018-09-10  9:18                   ` Anson Huang
2018-09-10  9:18                   ` Anson Huang
2018-10-08  7:40                 ` Stephen Boyd
2018-10-08  7:40                   ` Stephen Boyd
2018-10-08  8:34                   ` Anson Huang
2018-10-08  8:34                     ` Anson Huang
2018-10-12 19:48                     ` Stephen Boyd
2018-10-12 19:48                       ` Stephen Boyd
2018-10-15  9:33                       ` Anson Huang
2018-10-15  9:33                         ` Anson Huang
2018-10-15 16:45                         ` Stephen Boyd
2018-10-15 16:45                           ` Stephen Boyd
2018-10-16  4:37                           ` Anson Huang
2018-10-16  4:37                             ` Anson Huang
2018-10-16 22:24                             ` Stephen Boyd
2018-10-16 22:24                               ` Stephen Boyd

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AM0PR04MB4481FC2BAD71B75D7BE84C0788260@AM0PR04MB4481.eurprd04.prod.outlook.com \
    --to=peng.fan@nxp.com \
    --cc=anson.huang@nxp.com \
    --cc=fabio.estevam@nxp.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=robh@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=sboyd@kernel.org \
    --cc=shawnguo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.