* [RESEND v1] clk: imx95-blk-ctl: Add func_out_en clock for i.MX9x PCIe
@ 2026-07-30 8:55 hongxing.zhu
2026-07-30 14:46 ` Frank Li
2026-07-30 15:11 ` Abel Vesa
0 siblings, 2 replies; 3+ messages in thread
From: hongxing.zhu @ 2026-07-30 8:55 UTC (permalink / raw)
To: abelvesa, peng.fan, mturquette, sboyd, bmasney, Frank.Li, s.hauer,
festevam
Cc: kernel, linux-clk, imx, linux-arm-kernel, linux-kernel,
Richard Zhu
From: Richard Zhu <hongxing.zhu@nxp.com>
Add a func_out_en clock for i.MX9x PCIe to serve as the parent gate clock
of the CREF_EN (BIT6) gate clock. Both of these two gate clocks enable
the output of the internal 100MHz differential reference clock.
When the internal PLL clock is used as the PCIe reference clock, both
BIT6 (CREF_EN) and BIT2 (FUNC_OUTPUT_EN) control the PCIE_REF_OUT_CLK.
If these bits default to 1, the output clock is enabled. With typical
100-ohm termination on the board, this results in approximately 6mA of
unnecessary power consumption when the PCIe internal PLL clock is not
in use.
To eliminate this power consumption, add a func_out_en clock gate that
serves as the parent of the existing CREF_EN (BIT6) gate clock. Both
gates must be enabled to output the internal 100MHz differential
reference clock, and both will be disabled when the clock is not needed.
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
---
drivers/clk/imx/clk-imx95-blk-ctl.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/imx/clk-imx95-blk-ctl.c b/drivers/clk/imx/clk-imx95-blk-ctl.c
index 56bed44719954..1f9259f456079 100644
--- a/drivers/clk/imx/clk-imx95-blk-ctl.c
+++ b/drivers/clk/imx/clk-imx95-blk-ctl.c
@@ -286,18 +286,28 @@ static const struct imx95_blk_ctl_dev_data netcmix_dev_data = {
static const struct imx95_blk_ctl_clk_dev_data hsio_blk_ctl_clk_dev_data[] = {
[0] = {
.name = "hsio_blk_ctl_clk",
- .parent_names = (const char *[]){ "hsio_pll", },
+ .parent_names = (const char *[]){ "func_out_en", },
.num_parents = 1,
.reg = 0,
.bit_idx = 6,
.bit_width = 1,
.type = CLK_GATE,
.flags = CLK_SET_RATE_PARENT,
+ },
+ [1] = {
+ .name = "func_out_en",
+ .parent_names = (const char *[]){ "hsio_pll", },
+ .num_parents = 1,
+ .reg = 0,
+ .bit_idx = 2,
+ .bit_width = 1,
+ .type = CLK_GATE,
+ .flags = CLK_SET_RATE_PARENT,
}
};
static const struct imx95_blk_ctl_dev_data hsio_blk_ctl_dev_data = {
- .num_clks = 1,
+ .num_clks = ARRAY_SIZE(hsio_blk_ctl_clk_dev_data),
.clk_dev_data = hsio_blk_ctl_clk_dev_data,
.clk_reg_offset = 0,
};
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [RESEND v1] clk: imx95-blk-ctl: Add func_out_en clock for i.MX9x PCIe
2026-07-30 8:55 [RESEND v1] clk: imx95-blk-ctl: Add func_out_en clock for i.MX9x PCIe hongxing.zhu
@ 2026-07-30 14:46 ` Frank Li
2026-07-30 15:11 ` Abel Vesa
1 sibling, 0 replies; 3+ messages in thread
From: Frank Li @ 2026-07-30 14:46 UTC (permalink / raw)
To: hongxing.zhu
Cc: abelvesa, peng.fan, mturquette, sboyd, bmasney, Frank.Li, s.hauer,
festevam, kernel, linux-clk, imx, linux-arm-kernel, linux-kernel,
Richard Zhu
On Thu, Jul 30, 2026 at 04:55:42PM +0800, hongxing.zhu@oss.nxp.com wrote:
> From: Richard Zhu <hongxing.zhu@nxp.com>
>
> Add a func_out_en clock for i.MX9x PCIe to serve as the parent gate clock
> of the CREF_EN (BIT6) gate clock. Both of these two gate clocks enable
> the output of the internal 100MHz differential reference clock.
>
> When the internal PLL clock is used as the PCIe reference clock, both
> BIT6 (CREF_EN) and BIT2 (FUNC_OUTPUT_EN) control the PCIE_REF_OUT_CLK.
>
> If these bits default to 1, the output clock is enabled. With typical
> 100-ohm termination on the board, this results in approximately 6mA of
> unnecessary power consumption when the PCIe internal PLL clock is not
> in use.
>
> To eliminate this power consumption, add a func_out_en clock gate that
> serves as the parent of the existing CREF_EN (BIT6) gate clock. Both
> gates must be enabled to output the internal 100MHz differential
> reference clock, and both will be disabled when the clock is not needed.
>
> Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> Reviewed-by: Peng Fan <peng.fan@nxp.com>
> ---
Reviewed-by: Frank Li <Frank.Li@nxp.com>
> drivers/clk/imx/clk-imx95-blk-ctl.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/imx/clk-imx95-blk-ctl.c b/drivers/clk/imx/clk-imx95-blk-ctl.c
> index 56bed44719954..1f9259f456079 100644
> --- a/drivers/clk/imx/clk-imx95-blk-ctl.c
> +++ b/drivers/clk/imx/clk-imx95-blk-ctl.c
> @@ -286,18 +286,28 @@ static const struct imx95_blk_ctl_dev_data netcmix_dev_data = {
> static const struct imx95_blk_ctl_clk_dev_data hsio_blk_ctl_clk_dev_data[] = {
> [0] = {
> .name = "hsio_blk_ctl_clk",
> - .parent_names = (const char *[]){ "hsio_pll", },
> + .parent_names = (const char *[]){ "func_out_en", },
> .num_parents = 1,
> .reg = 0,
> .bit_idx = 6,
> .bit_width = 1,
> .type = CLK_GATE,
> .flags = CLK_SET_RATE_PARENT,
> + },
> + [1] = {
> + .name = "func_out_en",
> + .parent_names = (const char *[]){ "hsio_pll", },
> + .num_parents = 1,
> + .reg = 0,
> + .bit_idx = 2,
> + .bit_width = 1,
> + .type = CLK_GATE,
> + .flags = CLK_SET_RATE_PARENT,
> }
> };
>
> static const struct imx95_blk_ctl_dev_data hsio_blk_ctl_dev_data = {
> - .num_clks = 1,
> + .num_clks = ARRAY_SIZE(hsio_blk_ctl_clk_dev_data),
> .clk_dev_data = hsio_blk_ctl_clk_dev_data,
> .clk_reg_offset = 0,
> };
> --
> 2.34.1
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [RESEND v1] clk: imx95-blk-ctl: Add func_out_en clock for i.MX9x PCIe
2026-07-30 8:55 [RESEND v1] clk: imx95-blk-ctl: Add func_out_en clock for i.MX9x PCIe hongxing.zhu
2026-07-30 14:46 ` Frank Li
@ 2026-07-30 15:11 ` Abel Vesa
1 sibling, 0 replies; 3+ messages in thread
From: Abel Vesa @ 2026-07-30 15:11 UTC (permalink / raw)
To: abelvesa, peng.fan, mturquette, sboyd, bmasney, Frank.Li, s.hauer,
festevam, hongxing.zhu
Cc: kernel, linux-clk, imx, linux-arm-kernel, linux-kernel,
Richard Zhu
On Thu, 30 Jul 2026 16:55:42 +0800, hongxing.zhu@oss.nxp.com wrote:
> Add a func_out_en clock for i.MX9x PCIe to serve as the parent gate clock
> of the CREF_EN (BIT6) gate clock. Both of these two gate clocks enable
> the output of the internal 100MHz differential reference clock.
>
> When the internal PLL clock is used as the PCIe reference clock, both
> BIT6 (CREF_EN) and BIT2 (FUNC_OUTPUT_EN) control the PCIE_REF_OUT_CLK.
>
> [...]
Applied, thanks!
[1/1] clk: imx95-blk-ctl: Add func_out_en clock for i.MX9x PCIe
commit: 884dfb2dfe2cde33b8efe91ebf91542c88ca9034
Best regards,
--
Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-30 15:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-30 8:55 [RESEND v1] clk: imx95-blk-ctl: Add func_out_en clock for i.MX9x PCIe hongxing.zhu
2026-07-30 14:46 ` Frank Li
2026-07-30 15:11 ` Abel Vesa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox