All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peng Fan <peng.fan@nxp.com>
To: Adam Ford <aford173@gmail.com>,
	"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>
Cc: "l.stach@pengutronix.de" <l.stach@pengutronix.de>,
	Abel Vesa <abelvesa@kernel.org>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>, Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>,
	dl-linux-imx <linux-imx@nxp.com>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [RFC] clk: imx: Let IMX8MN_CLK_DISP_PIXEL set parent rate
Date: Tue, 14 Mar 2023 04:39:24 +0000	[thread overview]
Message-ID: <DU0PR04MB9417C49457C9E60898E6A92188BE9@DU0PR04MB9417.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <20230314024449.50151-1-aford173@gmail.com>

> Subject: [RFC] clk: imx: Let IMX8MN_CLK_DISP_PIXEL set parent rate
> 
> By default the display pixel clock needs to be evenly divide down from
> 594MHz which rules out a significant number of resolution and refresh rates.
> The current clock tree looks something like:
> 
>  video_pll                594000000
>   video_pll_bypass        594000000
>    video_pll_out          594000000
>     disp_pixel            148500000
>      disp_pixel_clk       148500000
> 
> To enable CLK_SET_RATE_PARENT on disp_pixel, a helper function needs to
> be added called imx8m_clk_hw_composite_flags which can pass the
> additional flag to the clock controller. Letting disp_pixel set video_pll_out
> rate should actually lower the clock rates of video_pll_bypass and video_pll
> as well, since those clocks are already configured to enable
> CLK_SET_RATE_PARENT.
> 
> Signed-off-by: Adam Ford <aford173@gmail.com>
> ---
> 
> This is an RFC, because even with this patch, the video_pll_out clock does
> not drop to 148500000 like I would expect.  The video_pll clock is a
> fractional pll, so it should be able to generate a significant number of
> optional clock frequencies to facilitate video.
[Peng Fan] 

Have you ever tried to directly set video pll out clk to the freq that you wanna?

Regards,
Peng.

> 
> diff --git a/drivers/clk/imx/clk-imx8mn.c b/drivers/clk/imx/clk-imx8mn.c
> index af256ade554f..a116cc40d7d0 100644
> --- a/drivers/clk/imx/clk-imx8mn.c
> +++ b/drivers/clk/imx/clk-imx8mn.c
> @@ -470,7 +470,7 @@ static int imx8mn_clocks_probe(struct
> platform_device *pdev)
>  	hws[IMX8MN_CLK_DRAM_ALT] =
> imx8m_clk_hw_fw_managed_composite("dram_alt",
> imx8mn_dram_alt_sels, base + 0xa000);
>  	hws[IMX8MN_CLK_DRAM_APB] =
> imx8m_clk_hw_fw_managed_composite_critical("dram_apb",
> imx8mn_dram_apb_sels, base + 0xa080);
> 
> -	hws[IMX8MN_CLK_DISP_PIXEL] =
> imx8m_clk_hw_composite("disp_pixel", imx8mn_disp_pixel_sels, base +
> 0xa500);
> +	hws[IMX8MN_CLK_DISP_PIXEL] =
> +imx8m_clk_hw_composite_flags("disp_pixel", imx8mn_disp_pixel_sels,
> base
> ++ 0xa500, CLK_SET_RATE_PARENT);
>  	hws[IMX8MN_CLK_SAI2] = imx8m_clk_hw_composite("sai2",
> imx8mn_sai2_sels, base + 0xa600);
>  	hws[IMX8MN_CLK_SAI3] = imx8m_clk_hw_composite("sai3",
> imx8mn_sai3_sels, base + 0xa680);
>  	hws[IMX8MN_CLK_SAI5] = imx8m_clk_hw_composite("sai5",
> imx8mn_sai5_sels, base + 0xa780); diff --git a/drivers/clk/imx/clk.h
> b/drivers/clk/imx/clk.h index 689b3ad927c0..9977b512845b 100644
> --- a/drivers/clk/imx/clk.h
> +++ b/drivers/clk/imx/clk.h
> @@ -414,6 +414,10 @@ struct clk_hw *__imx8m_clk_hw_composite(const
> char *name,
>  	_imx8m_clk_hw_composite(name, parent_names, reg, \
>  			0, IMX_COMPOSITE_CLK_FLAGS_DEFAULT)
> 
> +#define imx8m_clk_hw_composite_flags(name, parent_names, reg, flags)
> \
> +	_imx8m_clk_hw_composite(name, parent_names, reg, \
> +			0, IMX_COMPOSITE_CLK_FLAGS_DEFAULT |  flags)
> +
>  #define imx8m_clk_hw_composite_critical(name, parent_names, reg) \
>  	_imx8m_clk_hw_composite(name, parent_names, reg, \
>  			0, IMX_COMPOSITE_CLK_FLAGS_CRITICAL)
> --
> 2.37.2


WARNING: multiple messages have this Message-ID (diff)
From: Peng Fan <peng.fan@nxp.com>
To: Adam Ford <aford173@gmail.com>,
	"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>
Cc: "l.stach@pengutronix.de" <l.stach@pengutronix.de>,
	Abel Vesa <abelvesa@kernel.org>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>, Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>,
	dl-linux-imx <linux-imx@nxp.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [RFC] clk: imx: Let IMX8MN_CLK_DISP_PIXEL set parent rate
Date: Tue, 14 Mar 2023 04:39:24 +0000	[thread overview]
Message-ID: <DU0PR04MB9417C49457C9E60898E6A92188BE9@DU0PR04MB9417.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <20230314024449.50151-1-aford173@gmail.com>

> Subject: [RFC] clk: imx: Let IMX8MN_CLK_DISP_PIXEL set parent rate
> 
> By default the display pixel clock needs to be evenly divide down from
> 594MHz which rules out a significant number of resolution and refresh rates.
> The current clock tree looks something like:
> 
>  video_pll                594000000
>   video_pll_bypass        594000000
>    video_pll_out          594000000
>     disp_pixel            148500000
>      disp_pixel_clk       148500000
> 
> To enable CLK_SET_RATE_PARENT on disp_pixel, a helper function needs to
> be added called imx8m_clk_hw_composite_flags which can pass the
> additional flag to the clock controller. Letting disp_pixel set video_pll_out
> rate should actually lower the clock rates of video_pll_bypass and video_pll
> as well, since those clocks are already configured to enable
> CLK_SET_RATE_PARENT.
> 
> Signed-off-by: Adam Ford <aford173@gmail.com>
> ---
> 
> This is an RFC, because even with this patch, the video_pll_out clock does
> not drop to 148500000 like I would expect.  The video_pll clock is a
> fractional pll, so it should be able to generate a significant number of
> optional clock frequencies to facilitate video.
[Peng Fan] 

Have you ever tried to directly set video pll out clk to the freq that you wanna?

Regards,
Peng.

> 
> diff --git a/drivers/clk/imx/clk-imx8mn.c b/drivers/clk/imx/clk-imx8mn.c
> index af256ade554f..a116cc40d7d0 100644
> --- a/drivers/clk/imx/clk-imx8mn.c
> +++ b/drivers/clk/imx/clk-imx8mn.c
> @@ -470,7 +470,7 @@ static int imx8mn_clocks_probe(struct
> platform_device *pdev)
>  	hws[IMX8MN_CLK_DRAM_ALT] =
> imx8m_clk_hw_fw_managed_composite("dram_alt",
> imx8mn_dram_alt_sels, base + 0xa000);
>  	hws[IMX8MN_CLK_DRAM_APB] =
> imx8m_clk_hw_fw_managed_composite_critical("dram_apb",
> imx8mn_dram_apb_sels, base + 0xa080);
> 
> -	hws[IMX8MN_CLK_DISP_PIXEL] =
> imx8m_clk_hw_composite("disp_pixel", imx8mn_disp_pixel_sels, base +
> 0xa500);
> +	hws[IMX8MN_CLK_DISP_PIXEL] =
> +imx8m_clk_hw_composite_flags("disp_pixel", imx8mn_disp_pixel_sels,
> base
> ++ 0xa500, CLK_SET_RATE_PARENT);
>  	hws[IMX8MN_CLK_SAI2] = imx8m_clk_hw_composite("sai2",
> imx8mn_sai2_sels, base + 0xa600);
>  	hws[IMX8MN_CLK_SAI3] = imx8m_clk_hw_composite("sai3",
> imx8mn_sai3_sels, base + 0xa680);
>  	hws[IMX8MN_CLK_SAI5] = imx8m_clk_hw_composite("sai5",
> imx8mn_sai5_sels, base + 0xa780); diff --git a/drivers/clk/imx/clk.h
> b/drivers/clk/imx/clk.h index 689b3ad927c0..9977b512845b 100644
> --- a/drivers/clk/imx/clk.h
> +++ b/drivers/clk/imx/clk.h
> @@ -414,6 +414,10 @@ struct clk_hw *__imx8m_clk_hw_composite(const
> char *name,
>  	_imx8m_clk_hw_composite(name, parent_names, reg, \
>  			0, IMX_COMPOSITE_CLK_FLAGS_DEFAULT)
> 
> +#define imx8m_clk_hw_composite_flags(name, parent_names, reg, flags)
> \
> +	_imx8m_clk_hw_composite(name, parent_names, reg, \
> +			0, IMX_COMPOSITE_CLK_FLAGS_DEFAULT |  flags)
> +
>  #define imx8m_clk_hw_composite_critical(name, parent_names, reg) \
>  	_imx8m_clk_hw_composite(name, parent_names, reg, \
>  			0, IMX_COMPOSITE_CLK_FLAGS_CRITICAL)
> --
> 2.37.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2023-03-14  4:39 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-14  2:44 [RFC] clk: imx: Let IMX8MN_CLK_DISP_PIXEL set parent rate Adam Ford
2023-03-14  2:44 ` Adam Ford
2023-03-14  4:39 ` Peng Fan [this message]
2023-03-14  4:39   ` Peng Fan
2023-03-14 11:13   ` Adam Ford
2023-03-14 11:13     ` Adam Ford
2023-03-16  1:17     ` Adam Ford
2023-03-16  1:17       ` Adam Ford

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=DU0PR04MB9417C49457C9E60898E6A92188BE9@DU0PR04MB9417.eurprd04.prod.outlook.com \
    --to=peng.fan@nxp.com \
    --cc=abelvesa@kernel.org \
    --cc=aford173@gmail.com \
    --cc=festevam@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=l.stach@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=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.