All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anson Huang <anson.huang@nxp.com>
To: Peng Fan <peng.fan@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 09:00:42 +0000	[thread overview]
Message-ID: <DB3PR0402MB3916F8BC381BBA01DB21D1C0F5260@DB3PR0402MB3916.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <AM0PR04MB4481FC2BAD71B75D7BE84C0788260@AM0PR04MB4481.eurprd04.prod.outlook.com>



Anson Huang
Best Regards!


> -----Original Message-----
> From: Peng Fan
> Sent: Wednesday, August 8, 2018 4:49 PM
> To: Anson Huang <anson.huang@nxp.com>; 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; 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
> 
> 
> 
> > -----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?
 
Parsing the clocks arrays from dtb is another way of enabling critical clocks, but
for current i.MX6/7 platforms, we implement it in same way as most of other SoCs,
currently I did NOT see any necessity of putting them in dtb,
just adding flag during clock registering is more simple, if there is any special requirement
for different clocks set to be enabled, then we can add support to enable the method of
parsing critical-clocks from dtb. Just my two cents.

Anson.

> 
> 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: Anson Huang <anson.huang@nxp.com>
To: Peng Fan <peng.fan@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 09:00:42 +0000	[thread overview]
Message-ID: <DB3PR0402MB3916F8BC381BBA01DB21D1C0F5260@DB3PR0402MB3916.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <AM0PR04MB4481FC2BAD71B75D7BE84C0788260@AM0PR04MB4481.eurprd04.prod.outlook.com>

DQoNCkFuc29uIEh1YW5nDQpCZXN0IFJlZ2FyZHMhDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh
Z2UtLS0tLQ0KPiBGcm9tOiBQZW5nIEZhbg0KPiBTZW50OiBXZWRuZXNkYXksIEF1Z3VzdCA4LCAy
MDE4IDQ6NDkgUE0NCj4gVG86IEFuc29uIEh1YW5nIDxhbnNvbi5odWFuZ0BueHAuY29tPjsgc2hh
d25ndW9Aa2VybmVsLm9yZzsNCj4gcy5oYXVlckBwZW5ndXRyb25peC5kZTsga2VybmVsQHBlbmd1
dHJvbml4LmRlOyBGYWJpbyBFc3RldmFtDQo+IDxmYWJpby5lc3RldmFtQG54cC5jb20+OyBtdHVy
cXVldHRlQGJheWxpYnJlLmNvbTsgc2JveWRAa2VybmVsLm9yZzsNCj4gbGludXgtYXJtLWtlcm5l
bEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1jbGtAdmdlci5rZXJuZWwub3JnOw0KPiBsaW51
eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBSb2IgSGVycmluZyA8cm9iaEBrZXJuZWwub3JnPg0K
PiBDYzogZGwtbGludXgtaW14IDxsaW51eC1pbXhAbnhwLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQ
QVRDSCAyLzJdIGNsazogaW14OiBpbXg3ZDogcmVtb3ZlIGNsa3NfaW5pdF9vbiBhcnJheQ0KPiAN
Cj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogQW5zb24g
SHVhbmcNCj4gPiBTZW50OiAyMDE4xOo41MI4yNUgMTI6MzkNCj4gPiBUbzogc2hhd25ndW9Aa2Vy
bmVsLm9yZzsgcy5oYXVlckBwZW5ndXRyb25peC5kZTsNCj4gPiBrZXJuZWxAcGVuZ3V0cm9uaXgu
ZGU7IEZhYmlvIEVzdGV2YW0gPGZhYmlvLmVzdGV2YW1AbnhwLmNvbT47DQo+ID4gbXR1cnF1ZXR0
ZUBiYXlsaWJyZS5jb207IHNib3lkQGtlcm5lbC5vcmc7DQo+ID4gbGludXgtYXJtLWtlcm5lbEBs
aXN0cy5pbmZyYWRlYWQub3JnOw0KPiA+IGxpbnV4LWNsa0B2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4
LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gPiBDYzogZGwtbGludXgtaW14IDxsaW51eC1pbXhA
bnhwLmNvbT4NCj4gPiBTdWJqZWN0OiBbUEFUQ0ggMi8yXSBjbGs6IGlteDogaW14N2Q6IHJlbW92
ZSBjbGtzX2luaXRfb24gYXJyYXkNCj4gPg0KPiA+IENsb2NrIGZyYW1ld29yayB3aWxsIGVuYWJs
ZSB0aG9zZSBjbG9ja3MgcmVnaXN0ZXJlZCB3aXRoDQo+ID4gQ0xLX0lTX0NSSVRJQ0FMIGZsYWcs
IHNvIG5vIG5lZWQgdG8gaGF2ZSBjbGtzX2luaXRfb24gYXJyYXkgZHVyaW5nIGNsb2NrDQo+IGlu
aXRpYWxpemF0aW9uIG5vdy4NCj4gDQo+IFdpbGwgaXQgYmUgbW9yZSBmbGV4aWJsZSB0byBwYXJz
ZSBkdHMgc2F5aW5nICJjcml0aWNhbC1jbG9ja3MgPSA8eHh4PiIgb3INCj4gImluaXQtb24tYXJy
YXJ5PTx4eHg+Ig0KPiBhbmQgZW5hYmxlIHRob3NlIGNsb2Nrcz8NCiANClBhcnNpbmcgdGhlIGNs
b2NrcyBhcnJheXMgZnJvbSBkdGIgaXMgYW5vdGhlciB3YXkgb2YgZW5hYmxpbmcgY3JpdGljYWwg
Y2xvY2tzLCBidXQNCmZvciBjdXJyZW50IGkuTVg2LzcgcGxhdGZvcm1zLCB3ZSBpbXBsZW1lbnQg
aXQgaW4gc2FtZSB3YXkgYXMgbW9zdCBvZiBvdGhlciBTb0NzLA0KY3VycmVudGx5IEkgZGlkIE5P
VCBzZWUgYW55IG5lY2Vzc2l0eSBvZiBwdXR0aW5nIHRoZW0gaW4gZHRiLA0KanVzdCBhZGRpbmcg
ZmxhZyBkdXJpbmcgY2xvY2sgcmVnaXN0ZXJpbmcgaXMgbW9yZSBzaW1wbGUsIGlmIHRoZXJlIGlz
IGFueSBzcGVjaWFsIHJlcXVpcmVtZW50DQpmb3IgZGlmZmVyZW50IGNsb2NrcyBzZXQgdG8gYmUg
ZW5hYmxlZCwgdGhlbiB3ZSBjYW4gYWRkIHN1cHBvcnQgdG8gZW5hYmxlIHRoZSBtZXRob2Qgb2YN
CnBhcnNpbmcgY3JpdGljYWwtY2xvY2tzIGZyb20gZHRiLiBKdXN0IG15IHR3byBjZW50cy4NCg0K
QW5zb24uDQoNCj4gDQo+IFJlZ2FyZHMsDQo+IFBlbmcuDQo+IA0KPiA+DQo+ID4gU2lnbmVkLW9m
Zi1ieTogQW5zb24gSHVhbmcgPEFuc29uLkh1YW5nQG54cC5jb20+DQo+ID4gLS0tDQo+ID4gIGRy
aXZlcnMvY2xrL2lteC9jbGstaW14N2QuYyB8IDI3ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KPiA+ICBkcml2ZXJzL2Nsay9pbXgvY2xrLmggICAgICAgfCAgNyArKysrKysrDQo+ID4gIDIg
ZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pDQo+ID4NCj4g
PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvaW14L2Nsay1pbXg3ZC5jIGIvZHJpdmVycy9jbGsv
aW14L2Nsay1pbXg3ZC5jDQo+ID4gaW5kZXggYzQ1MThkNy4uMDc2NDYwYiAxMDA2NDQNCj4gPiAt
LS0gYS9kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDdkLmMNCj4gPiArKysgYi9kcml2ZXJzL2Nsay9p
bXgvY2xrLWlteDdkLmMNCj4gPiBAQCAtMzc5LDEzICszNzksNiBAQCBzdGF0aWMgY29uc3QgY2hh
ciAqcGxsX2VuZXRfYnlwYXNzX3NlbFtdID0gew0KPiA+ICJwbGxfZW5ldF9tYWluIiwgInBsbF9l
bmV0X21haW5fc3JjICBzdGF0aWMgY29uc3QgY2hhcg0KPiA+ICpwbGxfYXVkaW9fYnlwYXNzX3Nl
bFtdID0geyAicGxsX2F1ZGlvX21haW4iLCAicGxsX2F1ZGlvX21haW5fc3JjIiwgfTsNCj4gPiBz
dGF0aWMgY29uc3QgY2hhciAqcGxsX3ZpZGVvX2J5cGFzc19zZWxbXSA9IHsgInBsbF92aWRlb19t
YWluIiwNCj4gPiAicGxsX3ZpZGVvX21haW5fc3JjIiwgfTsNCj4gPg0KPiA+IC1zdGF0aWMgaW50
IGNvbnN0IGNsa3NfaW5pdF9vbltdIF9faW5pdGNvbnN0ID0gew0KPiA+IC0JSU1YN0RfQVJNX0E3
X1JPT1RfQ0xLLCBJTVg3RF9NQUlOX0FYSV9ST09UX0NMSywNCj4gPiAtCUlNWDdEX1BMTF9TWVNf
TUFJTl80ODBNX0NMSywgSU1YN0RfSVBHX1JPT1RfQ0xLLA0KPiA+IC0JSU1YN0RfRFJBTV9QSFlN
X1JPT1RfQ0xLLCBJTVg3RF9EUkFNX1JPT1RfQ0xLLA0KPiA+IC0JSU1YN0RfRFJBTV9QSFlNX0FM
VF9ST09UX0NMSywgSU1YN0RfRFJBTV9BTFRfUk9PVF9DTEssDQo+ID4gLX07DQo+ID4gLQ0KPiA+
ICBzdGF0aWMgc3RydWN0IGNsa19vbmVjZWxsX2RhdGEgY2xrX2RhdGE7DQo+ID4NCj4gPiAgc3Rh
dGljIHN0cnVjdCBjbGsgKiogY29uc3QgdWFydF9jbGtzW10gX19pbml0Y29uc3QgPSB7IEBAIC00
MDMsNw0KPiA+ICszOTYsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgaW14N2RfY2xvY2tzX2luaXQo
c3RydWN0IGRldmljZV9ub2RlDQo+ICpjY21fbm9kZSkgIHsNCj4gPiAgCXN0cnVjdCBkZXZpY2Vf
bm9kZSAqbnA7DQo+ID4gIAl2b2lkIF9faW9tZW0gKmJhc2U7DQo+ID4gLQlpbnQgaTsNCj4gPg0K
PiA+ICAJY2xrc1tJTVg3RF9DTEtfRFVNTVldID0gaW14X2Nsa19maXhlZCgiZHVtbXkiLCAwKTsN
Cj4gPiAgCWNsa3NbSU1YN0RfT1NDXzI0TV9DTEtdID0gb2ZfY2xrX2dldF9ieV9uYW1lKGNjbV9u
b2RlLCAib3NjIik7DQo+IEBADQo+ID4gLTQ2Niw3ICs0NTgsNyBAQCBzdGF0aWMgdm9pZCBfX2lu
aXQgaW14N2RfY2xvY2tzX2luaXQoc3RydWN0DQo+ID4gZGV2aWNlX25vZGUNCj4gPiAqY2NtX25v
ZGUpDQo+ID4gIAljbGtzW0lNWDdEX1BMTF9TWVNfTUFJTl8xMjBNXSA9DQo+ID4gaW14X2Nsa19m
aXhlZF9mYWN0b3IoInBsbF9zeXNfbWFpbl8xMjBtIiwgInBsbF9zeXNfbWFpbl9jbGsiLCAxLCA0
KTsNCj4gPiAgCWNsa3NbSU1YN0RfUExMX0RSQU1fTUFJTl81MzNNXSA9DQo+ID4gaW14X2Nsa19m
aXhlZF9mYWN0b3IoInBsbF9kcmFtXzUzM20iLCAicGxsX2RyYW1fbWFpbl9jbGsiLCAxLCAyKTsN
Cj4gPg0KPiA+IC0JY2xrc1tJTVg3RF9QTExfU1lTX01BSU5fNDgwTV9DTEtdID0NCj4gPiBpbXhf
Y2xrX2dhdGVfZGlzKCJwbGxfc3lzX21haW5fNDgwbV9jbGsiLCAicGxsX3N5c19tYWluXzQ4MG0i
LCBiYXNlICsNCj4gPiAweGIwLCA0KTsNCj4gPiArCWNsa3NbSU1YN0RfUExMX1NZU19NQUlOXzQ4
ME1fQ0xLXSA9DQo+ID4gK2lteF9jbGtfZ2F0ZV9kaXNfZmxhZ3MoInBsbF9zeXNfbWFpbl80ODBt
X2NsayIsICJwbGxfc3lzX21haW5fNDgwbSIsDQo+ID4gK2Jhc2UgKyAweGIwLCA0LCBDTEtfSVNf
Q1JJVElDQUwpOw0KPiA+ICAJY2xrc1tJTVg3RF9QTExfU1lTX01BSU5fMjQwTV9DTEtdID0NCj4g
PiBpbXhfY2xrX2dhdGVfZGlzKCJwbGxfc3lzX21haW5fMjQwbV9jbGsiLCAicGxsX3N5c19tYWlu
XzI0MG0iLCBiYXNlICsNCj4gPiAweGIwLCA1KTsNCj4gPiAgCWNsa3NbSU1YN0RfUExMX1NZU19N
QUlOXzEyME1fQ0xLXSA9DQo+ID4gaW14X2Nsa19nYXRlX2RpcygicGxsX3N5c19tYWluXzEyMG1f
Y2xrIiwgInBsbF9zeXNfbWFpbl8xMjBtIiwgYmFzZSArDQo+ID4gMHhiMCwgNik7DQo+ID4gIAlj
bGtzW0lNWDdEX1BMTF9EUkFNX01BSU5fNTMzTV9DTEtdID0NCj4gPiBpbXhfY2xrX2dhdGUoInBs
bF9kcmFtXzUzM21fY2xrIiwgInBsbF9kcmFtXzUzM20iLCBiYXNlICsgMHg3MCwgMTIpOw0KPiA+
IEBADQo+ID4gLTcxOSw3ICs3MTEsNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgaW14N2RfY2xvY2tz
X2luaXQoc3RydWN0DQo+ID4gZGV2aWNlX25vZGUNCj4gPiAqY2NtX25vZGUpDQo+ID4gIAljbGtz
W0lNWDdEX0VORVRfQVhJX1JPT1RfRElWXSA9DQo+ID4gaW14X2Nsa19kaXZpZGVyMigiZW5ldF9h
eGlfcG9zdF9kaXYiLCAiZW5ldF9heGlfcHJlX2RpdiIsIGJhc2UgKyAweDg5MDAsIDAsDQo+IDYp
Ow0KPiA+ICAJY2xrc1tJTVg3RF9OQU5EX1VTREhDX0JVU19ST09UX0NMS10gPQ0KPiA+IGlteF9j
bGtfZGl2aWRlcjIoIm5hbmRfdXNkaGNfcm9vdF9jbGsiLCAibmFuZF91c2RoY19wcmVfZGl2Iiwg
YmFzZSArDQo+ID4gMHg4OTgwLCAwLCA2KTsNCj4gPiAgCWNsa3NbSU1YN0RfQUhCX0NIQU5ORUxf
Uk9PVF9ESVZdID0NCj4gPiBpbXhfY2xrX2RpdmlkZXIyKCJhaGJfcm9vdF9jbGsiLCAiYWhiX3By
ZV9kaXYiLCBiYXNlICsgMHg5MDAwLCAwLCA2KTsNCj4gPiAtCWNsa3NbSU1YN0RfSVBHX1JPT1Rf
Q0xLXSA9IGlteF9jbGtfZGl2aWRlcjIoImlwZ19yb290X2NsayIsDQo+ID4gImFoYl9yb290X2Ns
ayIsIGJhc2UgKyAweDkwODAsIDAsIDIpOw0KPiA+ICsJY2xrc1tJTVg3RF9JUEdfUk9PVF9DTEtd
ID0gaW14X2Nsa19kaXZpZGVyX2ZsYWdzKCJpcGdfcm9vdF9jbGsiLA0KPiA+ICsiYWhiX3Jvb3Rf
Y2xrIiwgYmFzZSArIDB4OTA4MCwgMCwgMiwgQ0xLX0lTX0NSSVRJQ0FMIHwNCj4gPiArQ0xLX09Q
U19QQVJFTlRfRU5BQkxFIHwgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7DQo+ID4gIAljbGtzW0lNWDdE
X0RSQU1fUk9PVF9ESVZdID0gaW14X2Nsa19kaXZpZGVyMigiZHJhbV9wb3N0X2RpdiIsDQo+ID4g
ImRyYW1fY2ciLCBiYXNlICsgMHg5ODgwLCAwLCAzKTsNCj4gPiAgCWNsa3NbSU1YN0RfRFJBTV9Q
SFlNX0FMVF9ST09UX0RJVl0gPQ0KPiA+IGlteF9jbGtfZGl2aWRlcjIoImRyYW1fcGh5bV9hbHRf
cG9zdF9kaXYiLCAiZHJhbV9waHltX2FsdF9wcmVfZGl2IiwNCj4gPiBiYXNlDQo+ID4gKyAweGEw
MDAsIDAsIDMpOw0KPiA+ICAJY2xrc1tJTVg3RF9EUkFNX0FMVF9ST09UX0RJVl0gPQ0KPiA+IGlt
eF9jbGtfZGl2aWRlcjIoImRyYW1fYWx0X3Bvc3RfZGl2IiwgImRyYW1fYWx0X3ByZV9kaXYiLCBi
YXNlICsNCj4gPiAweGEwODAsIDAsIDMpOyBAQCAtNzgzLDE3ICs3NzUsMTcgQEAgc3RhdGljIHZv
aWQgX19pbml0DQo+ID4gaW14N2RfY2xvY2tzX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpjY21f
bm9kZSkNCj4gPiAgCWNsa3NbSU1YN0RfQ0xLTzFfUk9PVF9ESVZdID0gaW14X2Nsa19kaXZpZGVy
MigiY2xrbzFfcG9zdF9kaXYiLA0KPiA+ICJjbGtvMV9wcmVfZGl2IiwgYmFzZSArIDB4YmQ4MCwg
MCwgNik7DQo+ID4gIAljbGtzW0lNWDdEX0NMS08yX1JPT1RfRElWXSA9IGlteF9jbGtfZGl2aWRl
cjIoImNsa28yX3Bvc3RfZGl2IiwNCj4gPiAiY2xrbzJfcHJlX2RpdiIsIGJhc2UgKyAweGJlMDAs
IDAsIDYpOw0KPiA+DQo+ID4gLQljbGtzW0lNWDdEX0FSTV9BN19ST09UX0NMS10gPSBpbXhfY2xr
X2dhdGU0KCJhcm1fYTdfcm9vdF9jbGsiLA0KPiA+ICJhcm1fYTdfZGl2IiwgYmFzZSArIDB4NDAw
MCwgMCk7DQo+ID4gKwljbGtzW0lNWDdEX0FSTV9BN19ST09UX0NMS10gPQ0KPiA+IGlteF9jbGtf
Z2F0ZTJfZmxhZ3MoImFybV9hN19yb290X2NsayIsDQo+ID4gKyJhcm1fYTdfZGl2IiwgYmFzZSAr
IDB4NDAwMCwgMCwgQ0xLX0lTX0NSSVRJQ0FMIHwNCj4gPiArQ0xLX09QU19QQVJFTlRfRU5BQkxF
KTsNCj4gPiAgCWNsa3NbSU1YN0RfQVJNX000X1JPT1RfQ0xLXSA9IGlteF9jbGtfZ2F0ZTQoImFy
bV9tNF9yb290X2NsayIsDQo+ID4gImFybV9tNF9kaXYiLCBiYXNlICsgMHg0MDEwLCAwKTsNCj4g
PiAtCWNsa3NbSU1YN0RfTUFJTl9BWElfUk9PVF9DTEtdID0gaW14X2Nsa19nYXRlNCgibWFpbl9h
eGlfcm9vdF9jbGsiLA0KPiA+ICJheGlfcG9zdF9kaXYiLCBiYXNlICsgMHg0MDQwLCAwKTsNCj4g
PiArCWNsa3NbSU1YN0RfTUFJTl9BWElfUk9PVF9DTEtdID0NCj4gPiAraW14X2Nsa19nYXRlMl9m
bGFncygibWFpbl9heGlfcm9vdF9jbGsiLCAiYXhpX3Bvc3RfZGl2IiwgYmFzZSArDQo+ID4gKzB4
NDA0MCwgMCwgQ0xLX0lTX0NSSVRJQ0FMIHwgQ0xLX09QU19QQVJFTlRfRU5BQkxFKTsNCj4gPiAg
CWNsa3NbSU1YN0RfRElTUF9BWElfUk9PVF9DTEtdID0gaW14X2Nsa19nYXRlNCgiZGlzcF9heGlf
cm9vdF9jbGsiLA0KPiA+ICJkaXNwX2F4aV9wb3N0X2RpdiIsIGJhc2UgKyAweDQwNTAsIDApOw0K
PiA+ICAJY2xrc1tJTVg3RF9FTkVUX0FYSV9ST09UX0NMS10gPSBpbXhfY2xrX2dhdGU0KCJlbmV0
X2F4aV9yb290X2NsayIsDQo+ID4gImVuZXRfYXhpX3Bvc3RfZGl2IiwgYmFzZSArIDB4NDA2MCwg
MCk7DQo+ID4gIAljbGtzW0lNWDdEX09DUkFNX0NMS10gPSBpbXhfY2xrX2dhdGU0KCJvY3JhbV9j
bGsiLA0KPiA+ICJtYWluX2F4aV9yb290X2NsayIsIGJhc2UgKyAweDQxMTAsIDApOw0KPiA+ICAJ
Y2xrc1tJTVg3RF9PQ1JBTV9TX0NMS10gPSBpbXhfY2xrX2dhdGU0KCJvY3JhbV9zX2NsayIsDQo+
ID4gImFoYl9yb290X2NsayIsIGJhc2UgKyAweDQxMjAsIDApOw0KPiA+IC0JY2xrc1tJTVg3RF9E
UkFNX1JPT1RfQ0xLXSA9IGlteF9jbGtfZ2F0ZTQoImRyYW1fcm9vdF9jbGsiLA0KPiA+ICJkcmFt
X3Bvc3RfZGl2IiwgYmFzZSArIDB4NDEzMCwgMCk7DQo+ID4gLQljbGtzW0lNWDdEX0RSQU1fUEhZ
TV9ST09UX0NMS10gPQ0KPiA+IGlteF9jbGtfZ2F0ZTQoImRyYW1fcGh5bV9yb290X2NsayIsICJk
cmFtX3BoeW1fY2ciLCBiYXNlICsgMHg0MTMwLCAwKTsNCj4gPiAtCWNsa3NbSU1YN0RfRFJBTV9Q
SFlNX0FMVF9ST09UX0NMS10gPQ0KPiA+IGlteF9jbGtfZ2F0ZTQoImRyYW1fcGh5bV9hbHRfcm9v
dF9jbGsiLCAiZHJhbV9waHltX2FsdF9wb3N0X2RpdiIsIGJhc2UNCj4gPiArIDB4NDEzMCwgMCk7
DQo+ID4gLQljbGtzW0lNWDdEX0RSQU1fQUxUX1JPT1RfQ0xLXSA9DQo+IGlteF9jbGtfZ2F0ZTQo
ImRyYW1fYWx0X3Jvb3RfY2xrIiwNCj4gPiAiZHJhbV9hbHRfcG9zdF9kaXYiLCBiYXNlICsgMHg0
MTMwLCAwKTsNCj4gPiArCWNsa3NbSU1YN0RfRFJBTV9ST09UX0NMS10gPSBpbXhfY2xrX2dhdGUy
X2ZsYWdzKCJkcmFtX3Jvb3RfY2xrIiwNCj4gPiAiZHJhbV9wb3N0X2RpdiIsIGJhc2UgKyAweDQx
MzAsIDAsIENMS19JU19DUklUSUNBTCB8DQo+ID4gQ0xLX09QU19QQVJFTlRfRU5BQkxFKTsNCj4g
PiArCWNsa3NbSU1YN0RfRFJBTV9QSFlNX1JPT1RfQ0xLXSA9DQo+ID4gaW14X2Nsa19nYXRlMl9m
bGFncygiZHJhbV9waHltX3Jvb3RfY2xrIiwgImRyYW1fcGh5bV9jZyIsIGJhc2UgKw0KPiA+IDB4
NDEzMCwgMCwgQ0xLX0lTX0NSSVRJQ0FMIHwgQ0xLX09QU19QQVJFTlRfRU5BQkxFKTsNCj4gPiAr
CWNsa3NbSU1YN0RfRFJBTV9QSFlNX0FMVF9ST09UX0NMS10gPQ0KPiA+IGlteF9jbGtfZ2F0ZTJf
ZmxhZ3MoImRyYW1fcGh5bV9hbHRfcm9vdF9jbGsiLA0KPiA+ICJkcmFtX3BoeW1fYWx0X3Bvc3Rf
ZGl2IiwgYmFzZSArIDB4NDEzMCwgMCwgQ0xLX0lTX0NSSVRJQ0FMIHwNCj4gPiBDTEtfT1BTX1BB
UkVOVF9FTkFCTEUpOw0KPiA+ICsJY2xrc1tJTVg3RF9EUkFNX0FMVF9ST09UX0NMS10gPQ0KPiA+
ICtpbXhfY2xrX2dhdGUyX2ZsYWdzKCJkcmFtX2FsdF9yb290X2NsayIsICJkcmFtX2FsdF9wb3N0
X2RpdiIsIGJhc2UgKw0KPiA+ICsweDQxMzAsIDAsIENMS19JU19DUklUSUNBTCB8IENMS19PUFNf
UEFSRU5UX0VOQUJMRSk7DQo+ID4gIAljbGtzW0lNWDdEX09DT1RQX0NMS10gPSBpbXhfY2xrX2dh
dGU0KCJvY290cF9jbGsiLCAiaXBnX3Jvb3RfY2xrIiwNCj4gPiBiYXNlICsgMHg0MjMwLCAwKTsN
Cj4gPiAgCWNsa3NbSU1YN0RfU05WU19DTEtdID0gaW14X2Nsa19nYXRlNCgic252c19jbGsiLCAi
aXBnX3Jvb3RfY2xrIiwNCj4gPiBiYXNlICsgMHg0MjUwLCAwKTsNCj4gPiAgCWNsa3NbSU1YN0Rf
TVVfUk9PVF9DTEtdID0gaW14X2Nsa19nYXRlNCgibXVfcm9vdF9jbGsiLA0KPiA+ICJpcGdfcm9v
dF9jbGsiLCBiYXNlICsgMHg0MjcwLCAwKTsgQEAgLTg4Miw5ICs4NzQsNiBAQCBzdGF0aWMgdm9p
ZA0KPiA+IF9faW5pdCBpbXg3ZF9jbG9ja3NfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKmNjbV9u
b2RlKQ0KPiA+ICAJY2xrX2RhdGEuY2xrX251bSA9IEFSUkFZX1NJWkUoY2xrcyk7DQo+ID4gIAlv
Zl9jbGtfYWRkX3Byb3ZpZGVyKG5wLCBvZl9jbGtfc3JjX29uZWNlbGxfZ2V0LCAmY2xrX2RhdGEp
Ow0KPiA+DQo+ID4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjbGtzX2luaXRfb24pOyBp
KyspDQo+ID4gLQkJY2xrX3ByZXBhcmVfZW5hYmxlKGNsa3NbY2xrc19pbml0X29uW2ldXSk7DQo+
ID4gLQ0KPiA+ICAJY2xrX3NldF9wYXJlbnQoY2xrc1tJTVg3RF9QTExfQVJNX01BSU5fQllQQVNT
XSwNCj4gPiBjbGtzW0lNWDdEX1BMTF9BUk1fTUFJTl0pOw0KPiA+ICAJY2xrX3NldF9wYXJlbnQo
Y2xrc1tJTVg3RF9QTExfRFJBTV9NQUlOX0JZUEFTU10sDQo+ID4gY2xrc1tJTVg3RF9QTExfRFJB
TV9NQUlOXSk7DQo+ID4gIAljbGtfc2V0X3BhcmVudChjbGtzW0lNWDdEX1BMTF9TWVNfTUFJTl9C
WVBBU1NdLA0KPiA+IGNsa3NbSU1YN0RfUExMX1NZU19NQUlOXSk7IGRpZmYgLS1naXQgYS9kcml2
ZXJzL2Nsay9pbXgvY2xrLmgNCj4gPiBiL2RyaXZlcnMvY2xrL2lteC9jbGsuaCBpbmRleCA4MDc2
ZWMwLi41ODk1ZTIyMyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2Nsay9pbXgvY2xrLmgNCj4g
PiArKysgYi9kcml2ZXJzL2Nsay9pbXgvY2xrLmgNCj4gPiBAQCAtMTM3LDYgKzEzNywxMyBAQCBz
dGF0aWMgaW5saW5lIHN0cnVjdCBjbGsgKmlteF9jbGtfZ2F0ZV9kaXMoY29uc3QNCj4gPiBjaGFy
ICpuYW1lLCBjb25zdCBjaGFyICpwYXJlbnQsDQo+ID4gIAkJCXNoaWZ0LCBDTEtfR0FURV9TRVRf
VE9fRElTQUJMRSwgJmlteF9jY21fbG9jayk7ICB9DQo+ID4NCj4gPiArc3RhdGljIGlubGluZSBz
dHJ1Y3QgY2xrICppbXhfY2xrX2dhdGVfZGlzX2ZsYWdzKGNvbnN0IGNoYXIgKm5hbWUsDQo+ID4g
K2NvbnN0IGNoYXINCj4gPiAqcGFyZW50LA0KPiA+ICsJCXZvaWQgX19pb21lbSAqcmVnLCB1OCBz
aGlmdCwgdW5zaWduZWQgbG9uZyBmbGFncykgew0KPiA+ICsJcmV0dXJuIGNsa19yZWdpc3Rlcl9n
YXRlKE5VTEwsIG5hbWUsIHBhcmVudCwgZmxhZ3MgfA0KPiA+IENMS19TRVRfUkFURV9QQVJFTlQs
IHJlZywNCj4gPiArCQkJc2hpZnQsIENMS19HQVRFX1NFVF9UT19ESVNBQkxFLCAmaW14X2NjbV9s
b2NrKTsgfQ0KPiA+ICsNCj4gPiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgY2xrICppbXhfY2xrX2dh
dGUyKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXINCj4gKnBhcmVudCwNCj4gPiAgCQl2b2lk
IF9faW9tZW0gKnJlZywgdTggc2hpZnQpDQo+ID4gIHsNCj4gPiAtLQ0KPiA+IDIuNy40DQoNCg==

WARNING: multiple messages have this Message-ID (diff)
From: anson.huang@nxp.com (Anson Huang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/2] clk: imx: imx7d: remove clks_init_on array
Date: Wed, 8 Aug 2018 09:00:42 +0000	[thread overview]
Message-ID: <DB3PR0402MB3916F8BC381BBA01DB21D1C0F5260@DB3PR0402MB3916.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <AM0PR04MB4481FC2BAD71B75D7BE84C0788260@AM0PR04MB4481.eurprd04.prod.outlook.com>



Anson Huang
Best Regards!


> -----Original Message-----
> From: Peng Fan
> Sent: Wednesday, August 8, 2018 4:49 PM
> To: Anson Huang <anson.huang@nxp.com>; 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; 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
> 
> 
> 
> > -----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?
 
Parsing the clocks arrays from dtb is another way of enabling critical clocks, but
for current i.MX6/7 platforms, we implement it in same way as most of other SoCs,
currently I did NOT see any necessity of putting them in dtb,
just adding flag during clock registering is more simple, if there is any special requirement
for different clocks set to be enabled, then we can add support to enable the method of
parsing critical-clocks from dtb. Just my two cents.

Anson.

> 
> 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  9:00 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
2018-08-08  8:48     ` Peng Fan
2018-08-08  8:48     ` Peng Fan
2018-08-08  9:00     ` Anson Huang [this message]
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=DB3PR0402MB3916F8BC381BBA01DB21D1C0F5260@DB3PR0402MB3916.eurprd04.prod.outlook.com \
    --to=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=peng.fan@nxp.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.